Seite 1 von 1
Layer im Dialog Editor
Verfasst: Mo, 10.12.2012 08:35
von Maggus
Moin zusammen,
ich weiß nicht, ob ich jetzt hier richtig bin. Es geht um den Dialog Editor, den ich aus dem Basic Editor aufrufen kann.
Ich habe also manuell einen neuen Dialog erstellt, welchen ich mit einigen Labels (Beschriftungsfeldern) versehen habe. Nun möchte ich gerne herausfinden, wie ich einem Label einen Layer, also die Anordnung (in CSS den z-index) zuweisen kann, wenn sich Labels überdecken. Ich kriege einfach nicht heraus, nach welcher Logik ein Label im Vordergrund bzw. im Hintergrund angezeigt wird. Mit der Erstellreihenfolge scheint dies nichts zu tun zu haben.
Auch muss ich noch dazu sagen, dass OOo 3.1.1 und LO 3.5.3.2 das ganz unterschiedlich anzeigen! Ein label welches in OOo im Hintergrund angezeigt wird, wird in LO ganz vorne angezeigt und überdeckt alle anderen.
Weiß jemand einen Rat?
Gruß,
Re: Layer im Dialog Editor
Verfasst: Mo, 10.12.2012 09:41
von Stephan
Nun möchte ich gerne herausfinden, wie ich einem Label einen Layer, also die Anordnung (in CSS den z-index) zuweisen kann, wenn sich Labels überdecken.
Wozu ist das konkret nötig, denn es ist unüblich, auch wenn ich von den Problemen:
Auch muss ich noch dazu sagen, dass OOo 3.1.1 und LO 3.5.3.2 das ganz unterschiedlich anzeigen! Ein label welches in OOo im Hintergrund angezeigt wird, wird in LO ganz vorne angezeigt und überdeckt alle anderen.
lese, würde ich doch zum 'üblichen' Weg mehrseitiger Dialoge raten:
http://www.dannenhoefer.de/faqstarbasic ... tiger.html
Gruß
Stephan
Re: Layer im Dialog Editor
Verfasst: Mo, 10.12.2012 10:54
von balu
Hallo Maggus,
so weit ich weiß gibt es keine Vorder-, bzw. Hintergrund Option. Das kann man im Makro mit Visible programmieren, also z.B. so für sichtbar des Labels1 und unsichtbar für Label2
Code: Alles auswählen
oDialog1.getControl("Label1").Visible = True
oDialog1.getControl("Label2").Visible = False
und so für unsichtbar Label1 und sichbar für Label2
Code: Alles auswählen
oDialog1.getControl("Label1").Visible = False
oDialog1.getControl("Label2").Visible = True
Gruß
balu
Re: Layer im Dialog Editor
Verfasst: Mo, 10.12.2012 11:37
von Maggus
Hallo Stephan,
Stephan hat geschrieben:Wozu ist das konkret nötig...
Also vielleicht ist das nicht dafür gedacht, aber ich will die Label Felder für ein schönes Layout benutzen. D.h. z.B. großes Label mit Hintergrundfarbe, Rahmen und ohne Text, "darin" ein kleines Label mit Text und anderer Hintergrundfarbe, ...etc.
Mit anderen Worten: Nein, ich möchte keinen mehrseitigen Dialog!
Vielleicht gibt es ja andere Möglichkeiten, einen Dialog zu stylen.
@balu: Ja, über den Dialog Editor kann man auf Label Eigenschaften auch Sichtbar: ja/nein setzen, aber das löst mein Problem ja nicht. Es soll ja im Hintergrund sichtbar sein.
Gruß,
Markus
Re: Layer im Dialog Editor
Verfasst: Mo, 10.12.2012 13:55
von balu
Hallo Maggus,
großes Label mit Hintergrundfarbe, Rahmen und ohne Text, "darin" ein kleines Label mit Text und anderer Hintergrundfarbe, ...etc.
Njet! Geht nicht!
Du meinst wohl etwas in der Art von diesem hier:

- label-auf-label.png (1.68 KiB) 2712 mal betrachtet
Aber das täuscht alles, auch wenn es danach aussieht als wären es Labels auf Labels.
In Wirklichkeit besteht das ganze aus vielen Elementen die nur geschickt arrangiert sind. Hier alle Labels.

- viele-labels.png (1.87 KiB) 2712 mal betrachtet
So wie Du es gerne möchtest, geht es nicht. Es sei denn, Du machst dir die gleiche fummelige Arbeit wie ich. Was ich mir aber nicht wirklich vorstellen kann.
Gruß
balu
Re: Layer im Dialog Editor
Verfasst: Mo, 10.12.2012 14:21
von Maggus
Hallo balu,
balu hat geschrieben:Njet! Geht nicht!
Hier muss ich dir mal dezent widersprechen. Also, was du gebastelt hast, da hast du recht: Das will man nicht wirklich.
Die Frage war ja nicht,
ob verschiedene Layer angezeigt werden, sondern
wie man das einstellen kann. Ich habe jetzt wohl herausgefunden, nach welcher Logik ein Beschriftungsfeld auf welchem Layer dargestellt wird. Und das blöde dabei: OOo macht das genau umgekehrt wie LO. Seht euch mal die Screenshots an, wo jeweils der Dialog im Editor und in Aktion gezeigt wird. OpenOffice zeigt die neuesten als vorderste an (so wie man es auch im Editor sieht), bei LibreOffice werden die ältesten als vorderste angezeigt (will man also ein Label im Hintergrund muss man zuletzt eines oben drauf setzen und sieht im Editor nicht mehr was darunter ist)
Die Frage die sich mir hier stellt: Warum wird das unterschiedlich gehandhabt? Und gibt es irgendeine Möglichkeit (außer der von balu) dass es in jedem Office Programm gleich angezeigt wird?
So macht es OpenOffice.org:

- OOo_dialog_labels.png (9.48 KiB) 2704 mal betrachtet
und so LibreOffice:

- LO_dialog_labels.png (8.52 KiB) 2704 mal betrachtet
Gruß,
Re: Layer im Dialog Editor
Verfasst: Mo, 10.12.2012 15:21
von balu
Hallo Maggus,
sorry, wegen Schnee-schüpperei hatte ich mich vorhin etwas Ungeschickt ausgedrückt, deshalb ein neuer Versuch.
Ja, man kann wohl Label auf Label setzen, aber es ist nicht garantiert das innerhalb einer Office-Linie, z.B. in LO, das auch beibehalten bleibt. Was z.B. in LO 3.3.0 oder in LO 3.4.0 funktioniert, genau so wie in OOo 3.2.1, funktioniert in LO 3.5.5.x nicht mehr. Aber in AOO 3.4.1 funktioniert es wiederum. Und wie sich das in der Zukunft verhällt, ist auch noch sehr fraglich. Denn es gibt ja jetzt nicht wie früher nur OOo als alleiniges Office -(also ohne Absplittung)-, sondern AOO und LO die zwei verschiedene Paar Schuhe sind. Wohl nicht komplett grundsätzlich, aber in so einigen Details schon.
Warum wird das unterschiedlich gehandhabt?
Keine Ahnung. Frag bitte die Entwickler.
Und gibt es irgendeine Möglichkeit (außer der von balu) dass es in jedem Office Programm gleich angezeigt wird?
Ist mir keine bekannt. Zumal wohl die Entwickler von AOO und LO nicht in allen Details den gleichen Weg gehen, denn dann könnten sie sich ja gleich wieder zu einem einzigen Office vereinigen, und folglich wird es keine Einheitliche Möglichkeit geben das in den Griff zu kriegen.
Sollte aber dennoch jemand einen passenden Trick-17 kennen, immer her damit. Könnte ich selber auch gut gebrauchen.
Gruß
balu
Re: Layer im Dialog Editor
Verfasst: Mo, 10.12.2012 16:06
von Maggus
Hi balu, Stephan u.a.
nach reiflicher Überlegung und der Annahme, dass jede Office Suite die Layer nach der ID des Elements zuordnet komme ich zu dem Schluss, dass es nur eine Lösung für das Problem gibt:
1. Austesten, welche Version welcher Office Suite sich wie verhält
2. Beim Öffnen des Dokuments auslesen, womit die Datei geöffnet wird (wie geht das eigentlich?)
3. Den Dialog dynamisch erzeugen und je nach Version die Labels von vorn nach hinten bzw. von hinten nach vorn erzeugen.
Sollte ich das mal hinkriegen werd ich hier posten.
Gruß,
Re: Layer im Dialog Editor
Verfasst: Mo, 10.12.2012 20:29
von DPunch
Servus
Zumindest in OOo 3.2.1 wird der Z-Index über den TabIndex (Aktualisierungsreihenfolge) gesteuert - je höher der TabIndex, desto höher auch der Z-Index.
Ob dem in LO ebenfalls so ist, kann ich nicht verifizieren, aber ich würde mal davon ausgehen.
Re: Layer im Dialog Editor
Verfasst: Di, 11.12.2012 07:44
von Maggus
Hallo DPunch,
super Beispieldatei!
Ich habe verifiziert und in LO 3.5 ist es genau umgekehrt: je niedriger der TabIndex, desto höher der z-index.
Der Sinn erschließt sich mir nicht. Aber wenigstens ist jetzt klar, wonach der z-index berechnet wird. Danke für den Hinweis. Mal sehen, wie das in LO 4 gehandhabt wird.
Bis dahin muss ich mir einen Workaround ausdenken. Mittlerweile habe ich herausgefunden, wie man die Installierte Version herausbekommt, allerdings noch nicht, ob es sich um OOo AOO oder LO handelt...
Gruß,