Layer im Dialog Editor

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Layer im Dialog Editor

Beitrag 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ß,
Maggus (:o)
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Layer im Dialog Editor

Beitrag 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
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Layer im Dialog Editor

Beitrag 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
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Layer im Dialog Editor

Beitrag 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
Maggus (:o)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Layer im Dialog Editor

Beitrag 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
label-auf-label.png (1.68 KiB) 2711 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
viele-labels.png (1.87 KiB) 2711 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
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Layer im Dialog Editor

Beitrag 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
OOo_dialog_labels.png (9.48 KiB) 2703 mal betrachtet
und so LibreOffice:
LO_dialog_labels.png
LO_dialog_labels.png (8.52 KiB) 2703 mal betrachtet
Gruß,
Maggus (:o)
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Layer im Dialog Editor

Beitrag 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
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Layer im Dialog Editor

Beitrag 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ß,
Maggus (:o)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Layer im Dialog Editor

Beitrag 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.
Dateianhänge
TabIndex.ods
(10.12 KiB) 181-mal heruntergeladen
Maggus
****
Beiträge: 108
Registriert: Mo, 01.08.2005 13:32
Kontaktdaten:

Re: Layer im Dialog Editor

Beitrag 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ß,
Maggus (:o)
Antworten