Hei Pit,
...Daher hätte ich gerne den Dialog schon beim Aufrufen an einer Stelle angezeigt. der Nutzer verschiebt ihn und er bleibt dann dort. Habe ich das verständlich ausgedrückt?
Hast Du, ja. Das ist halt tatsächlich viel "Rechenaufwand".
Wenn Du den Sdialog aufbaust (im Makro) kannst Du ja die Position setzen (so z.B:):
Code: Alles auswählen
Sub dlgtest
dialogLibraries.loadLibrary("Test") 'Dialoge Bibliothek laden
REM Dialogobjekt erzeugen
odlg = createUnoDialog(dialogLibraries.Test.Dialog1)
with odlg
.setPosSize(-100,-50,0,0,3)
end with
oDlg.execute()
End Sub
hier erscheint die linke obere Ecke des Dialoges etwas außerhalb des aktiven Fensters (obere linke Ecke). Bei 0, 0 wären die Ecken deckungsgleich.
Die PositionX und PositionY kannst Du auch später jederzeit auslesen (z.B. wenn der Dialog verschoben wurde). Das sind aber eben leider keine absoluten Werte, sondern immer nur in Bezug zum aktiven Fenster bei Aufruf! Um absolute Coordinaten zu erhalten, müsstest Du auch die Größe und Position des Basisfensters auslesen und dann die absolute Pixelwerte X, Y berechnen. Geht alles;) All diese Daten brauchste z.B. auch, wenn Du das aktuelle Fenster (Basisfenster) beim Start des Makros bsw. etwas verkleinern willst (z.B. 150 Pixel vom linken Rand weg - und dann den Dialog genau dort hin platzieren willst. Wie gesagt, viel Rechenarbeit.
Die Werte PositionX und PositionY im Dialogeditor geben im Übrigen die aktuelle Position des Dialoges wieder, und zwar bezogen auf die IDE (Nur Editorfenster). Die sind nicht manuell setzbar - wohl aber durch Verschieben des Dialoges mit der Maus. Achtung! Beim Verschieben werden die Kontrollelemente nicht mitverschoben! So kann man sich schnell ne Dialog kaputtmachen!
Schiebst Du bsw den Dialog mit der Maus in die obere linke Ecke des Editorfensters, so zeigen Koordinaten dann 0,0 an. Und diese Daten werden auch übernommen beim Ausführen des Dialoges.
Für Dich würde aber wahrscheinlich gelten:
Beim Start des Dialoges prüfen, wie groß das aktuelle Fenster ist, Position prüfen, Fenster entsprechend verkleinern oder verschieben, so dass der Dialog links daneben (oder eben rechts - ist aber deutlich komplexer!) auf den Bildschirm passt und die Positionsmaße entsprechend anpassen.
Das ist viel Arbeit und viel Rechenarbeit *hihi - aber alles schon gemacht.
Zu den Linux-Distros kann ich wenig sagen - wenn Du den Dialog aber gleich passend platzierst ist das aber eh egal.
Nächste Überlegung wäre im Übrigen, die Inhalte des Dialoges in den Sidebar zu bringen - dann hättest Du dort ein eigenes Panel und viele Sorgen weniger;)
Tia, wenn Du irgendwlche Codeteile brauchst - Rohware habe ich bestimmt noch irgendwo rumliegen;)
Zum Buch: Das ist ja noch ne gaaaaaanz alte Auflage...hihi. Wie wäre es mit ner neuen? Aktuell ausverkauf - ich schicke es Dir für 20 EUR + Porto.
Nächstes Jahr ist Ende, dann gibt es auch keine Neuauflagen mehr
Viele Grüße für heute
Tom