Hintergrandfarbe automatisch ändern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Hintergrandfarbe automatisch ändern

Re: Hintergrandfarbe automatisch ändern

von bredfeld » Do, 22.03.2012 09:33

Bin doch schon dabei. Vielen Dank für die Informationsquellen. Ich merke doch selber das mir Literatur fehlt.
Das ist jetzt eine schöne Liste für Anfänger.
Jetzt kann ich ja mal loslegen.
Ciao e mille grazie

Re: Hintergrandfarbe automatisch ändern

von F3K Total » Mi, 21.03.2012 18:25

Hallo Uwe,
du hast jetzt also einen Teil von meinem Code mit einen aufgenommenen Makro verhackstückt!?.
Keine Eigenleistung? Tips ignoriert? z.B.:
F3K Total hat geschrieben:Zum Löschen gibt es beispielsweise die Methode/Operation clearContents, die auf ganze Tabellen oder auch auf einzelne Zellen angewandt werden können. Um die Hintergrundfarbe und den Zellwert zu löschen nehme man clearContents(33).
Es gibt noch viele andere Informationsquellen über die StarBasic-Programmierung:
viewtopic.php?f=18&t=1553
Dir empfehle ich zunächst StarBasic FAQ.
bredfeld hat geschrieben:Vielleicht kannst du mir ja noch einmal helfen ?
Nö! Wenn Du es nicht selber lernen möchtest.
Gruß R

Re: Hintergrandfarbe automatisch ändern

von bredfeld » Mi, 21.03.2012 11:14

Jetzt meldet sich der Anfänger mal wieder mit seinem Ergebnis was sich mit hoher Sicherheit verbessern läßt. Im Moment kann ich nur einen Bereich farblich verändern, kopieren auf ein zweites Frame und dann wieder komplett Löschen.

Sub S_insert_color_and_copy_cell
nbackcolor = 65280
rem nbackcolor = 65280'44544
osel = thiscomponent.currentselection
if osel.CellBackColor <> nbackcolor then
osel.CellBackColor = nbackcolor 'hier mach ich grün
SourceCellAddress = osel.CellAddress 'Zeile ermitteln
SourceRangeAddress = osel.RangeAddress
nsheet = SourceCellAddress.sheet
TargetAddress = SourceCellAddress
TargetAddress.Sheet = nsheet+1
osheet = thiscomponent.sheets(nsheet)
osheet.copyRange(TargetAddress,SourceRangeAddress)
else osel.CellBackColor = -1
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
Doc = ThisComponent
Sheet = Doc.Sheets(1)
CellRange = Sheet.getCellRangeByName("A3:B5")
Flags = com.sun.star.sheet.CellFlags.STRING + com.sun.star.sheet.CellFlags.HARDATTR
CellRange.clearContents(Flags)
Sheet = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "ToPoint"
args2(0).Value = "$A$3"
dispatcher.executeDispatch(Sheet, ".uno:GoToCell", "", 0, args2())
dispatcher.executeDispatch(Sheet, ".uno:ToggleMergeCells", "", 0, Array())
args1(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
end if
End Sub

Vielleicht kannst du mir ja noch einmal helfen ?
ciao e grazie Uwe

Re: Hintergrandfarbe automatisch ändern

von F3K Total » Mo, 19.03.2012 18:32

Hallo,
bredfeld hat geschrieben: kann man das Kopierte auch wieder mit Doppelklick herausnehmen falls man sich im Original vertan hat ?
Stefan hat Recht:
Selbst ist der Mann/die Frau
Ein paar Tipps:
Mit einem Inspection-Tool (z.B. MRI oder Xray) könnt ihr euch den Aufbau der Tabellen in Calc, aber auch den Aufbau aller anderen OpenOffice Dokumente genau ansehen und analysieren um selbst zu Lösungen kommen.
Zum Löschen gibt es beispielsweise die Methode/Operation clearContents, die auf ganze Tabellen oder auch auf einzelne Zellen angewandt werden können. Um die Hintergrundfarbe und den Zellwert zu löschen nehme man clearContents(33).
Wenn ihr euch zusätzlich zu MRI oder Xray noch das Software Developement Kid (SDK) installiert, könnt ihr direkt aus den Inspectiontools in die Doku springen und selbst herausfinden, warum die Flag gerade in diesem Fall eine 33 ist.
Gruß Rik

Re: Hintergrandfarbe automatisch ändern

von F3K Total » Mo, 19.03.2012 16:51

Hallo Gast999
Gast999 hat geschrieben:Ich bin leider kläglich gescheitert...
Dann zeig mal Deinen Versuch, dann kann Dir vielleicht geholfen werden.
Gruß Rik

Re: Hintergrandfarbe automatisch ändern

von F3K Total » Mo, 19.03.2012 16:48

Hallo Balu,
balu hat geschrieben:...so hättest Du das durchaus etwas präziser beschreiben können ...
oder Du hättest mal die Suche bemüht?
z.B: hier
viewtopic.php?f=18&t=51360&p=190658&hil ... is#p190658
oder hier
Google-Suche
Gruß Rik

Re: Hintergrandfarbe automatisch ändern

von bredfeld » Mo, 19.03.2012 16:41

Bis jetzt habe ich meine Sachen auch in VBA geschrieben, aber hier tauche ich leider in eine Welt ein die mir ganz neu ist.
Vielleicht haben sie ja ein paar Tips für mich damit ich mich besser orientieren kann.
Ciao e grazie Uwe

Re: Hintergrandfarbe automatisch ändern

von Stephan » Mo, 19.03.2012 09:34

kann man das Kopierte auch wieder mit Doppelklick herausnehmen falls man sich im Original vertan hat ?
Natürlich kann man das, und da Du ja:
und wenn ich ehrlich bin dann habe ich jetzt richtig Spass daran
kriegst Du das ja nun bestimmt auch selbst hin. Macht doch sicher auch wenig Spass sich nur immer fertige LÖsungen von anderen vorsetzen zu lassen...



Gruß
Stephan

Re: Hintergrandfarbe automatisch ändern

von bredfeld » Mo, 19.03.2012 09:27

Das ist ja genial. Ich bin total begeistert und wenn ich ehrlich bin dann habe ich jetzt richtig Spass daran.
Vielleicht noch eine Bitte (warscheinlich nicht die Letzte) kann man das Kopierte auch wieder mit Doppelklick herausnehmen falls man sich im Original vertan hat ?

Re: Hintergrandfarbe automatisch ändern

von balu » So, 18.03.2012 23:25

Hallo Rik,

ja ok, das passt.
In 3.2.1 ist es nicht, und in der 3.3.0 hatte ich nicht geschaut.

Auch wenn sich bredfeld momentan nicht dazu geäußert hat, so hättest Du das durchaus etwas präziser beschreiben können. Ist jetzt aber nicht bös gemeint.
Danke für deine Antwort :).



Gruß
balu

Re: Hintergrandfarbe automatisch ändern

von F3K Total » So, 18.03.2012 22:57

Hallo Balu,
das gibt es wohl erst seit 3.3.0, und du findest es bei einem Rechtsklick auf den Tabellenreiter.
Tabellenereignisse.png
Tabellenereignisse.png (6.52 KiB) 2266 mal betrachtet
Gruß Rik

Re: Hintergrandfarbe automatisch ändern

von balu » So, 18.03.2012 22:53

Hallo R,
... das Du an das Tabellerereignis "Doppelklick" hängst.
???
Ja ich gebs ja zu, ich steh ufm Schlauch und bin deshalb etwas dumm :oops: . Also bitte schön wie soll ich wo was machen? Denn ich find momentan weder Tabellenereignis, noch die Zuordnung Doppelklick.




Gruß
balu

Re: Hintergrandfarbe automatisch ändern

von F3K Total » So, 18.03.2012 22:49

Hallo Stephan,
Stephan hat geschrieben:wird nichts weiß und auch nicht unbedingt beim ersten Klick etwas grün.
Da hast Du Recht.
Darum folgende Korrektur ...

Code: Alles auswählen

if osel.CellBackColor <> nbackcolor then osel.CellBackColor = nbackcolor else osel.CellBackColor = -1
Beim ersten Doppelklick wird der Hintergrund der gewählten Zelle grün, beim zweiten Mal erscheint sie in der aktuellen Hintergrundfarbe des Dokumentes. Ist keine Dokumentenhintergrundfarbe eingestellt, erscheint der Zellhintergrund weiß.

Gruß Rik

Re: Hintergrandfarbe automatisch ändern

von F3K Total » So, 18.03.2012 22:28

bredfeld hat geschrieben:Es soll in die gleiche Zelle aus der es auch herausgekommen ist.
Nur ist es halt eine andere Tabelle.
Na, dann nimm dieses Makro an der gleichen Stelle um die Zelle auf die nächste Tabelle zu kopieren:

Code: Alles auswählen

Sub S_insert_color_and_copy_cell
nbackcolor = 65280'44544
osel = thiscomponent.currentselection
if osel.CellBackColor <> nbackcolor then osel.CellBackColor = nbackcolor else osel.CellBackColor = -1
SourceCellAddress = osel.CellAddress
SourceRangeAddress = osel.RangeAddress
nsheet = SourceCellAddress.sheet
TargetAddress = SourceCellAddress
TargetAddress.Sheet = nsheet+1
osheet = thiscomponent.sheets(nsheet)
osheet.copyRange(TargetAddress,SourceRangeAddress)
End Sub
Gruß R

Re: Hintergrandfarbe automatisch ändern

von Stephan » So, 18.03.2012 22:25

Beim ersten Doppelklick wird die gewählte Zelle grün, beim zweiten Mal wird sie wieder weiß.
Entschuldigung wenn ich das korrigiere, aber mit:

Code: Alles auswählen

if osel.CellBackColor = -1 then osel.CellBackColor = nbackcolor else osel.CellBackColor = -1
wird nichts weiß undf auch nicht unbedingt beim ersten Klick etwas grün.

Der Wert -1 steht hier für keine Hintergrundfarbe und falls hierbei eine andere Farbe eingestellt ist wird zunächst auf weiß gestellt und erst beim zweiten Doppelklick auf grün.

Dieser Hinweis nicht allein wegen der UNterschiedlichkeit in der Zellvorlage, denn dort muß dr Unterschied nicht auffallen, da optisch nicht sichtbar, sondern weil auch die Standardzellvorlage nur die generelle Farbeinstellung für den Hintergrund überlagert, welche unter EXtras-OPtionen-Darstellung-Dokumenthintergrund vorgegeben ist.


Gruß
Stephan

Nach oben