Position eines Dialogs

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

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Position eines Dialogs

Beitrag von erikafuchs »

Hallo Leute,
wenn ich einen Dialog erstelle, dann kann ich auch eine "PositionX" und eine "PositionY" eingeben, diese scheint aber nur die Lage auf dem Fenster in dem ich ihn erstelle (Hat dieses Fenster einen Namen?) zu beeinflussen. Wenn ich den Dialog per Makro aufrufe, erscheint er immer in der Mitte des Anwendungsfenster. Ich weiß, dass man die Lage mit "setPosSize(.." ändern kann. Gibt es auch die Möglichkeit schon bei der Erstellung eine Position vorzugeben oder wozu ist die "PositionX" und eine "PositionY" gut?
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Position eines Dialogs

Beitrag von Toxitom »

Hey Pit,

alles korrekt was Du schreibst. Aber: Was willst Du denn erreichen?

Mit setPosSize() kannst Du den Dialog doch beliebig positionieren - allerdings nur in Abhängigkeit des gerade aktiven Fensters. Und hier ist der linke obere Punkt der Nullpunkt.

Willst Du das Fenster frei positionieren, heisst es erst, die Position des aktiven Fensters auslesen - dann etwas rechnen und den den Dialog entsprechend positionieren.

Oder meinst Du etwas anders?

Viele Grüße
Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Position eines Dialogs

Beitrag von erikafuchs »

Hallo Thomas,
schön, dass du dich meines Problems annimmst.
Die Erklärung ist etwas kompliziert:
In meinem "Rechentrainer" müssen die Schülerinnen und Schüler immer 10 Aufgaben am Stück machen. Dabei gibt es noch Aufgaben mit Brüchen oder Graphen und Koordinatensaystemen oder auch als Rechenduell. Dabei ist es nötig dass je nach Aufgabentyp verschiedene Teile des Fensters frei bleiben und der Dialog nichts verdeckt. Die Aufgaben zur Bruchrechnung haben aber einen anderen Dialog als z.B. die zum Einmalein oder zu Funktionen. Alle Dialoge werden aber mit oDialog angesprochen, da sie über gleiche Auswertungsroutinen ausgewertet werden. Wenn ich jetzt einen Aufgabentyp starte wird der Dialog entweder in der Mitte angezeigt und muss vom Schüler verschoben werden oder ich mache das per Makro. Da sich der Dialog aber immer mal wieder ändert, muss ich ihn nach jeder Aufgabe neu positionieren und steht dann immer wieder an der gleichen Stelle obwohl ihn der Anwender nach seinen Wünschen schon selbst verschoben hat. 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?

Weiterhin ist mir nicht klar, wozu die Einstellung "PositionX" und "PositionY" bei der Erstellung des Dialogs überhaupt gut sind.

Und dann habe ich auch noch ein richtig blödes Problem in diesem Zusammenhang: In einigen Linuxinstallationen ist wohl die Änderung der Lage von Dialogen per default nicht möglich. Bei meiner ubuntuverserion war das so. So kann man mit dem Rechentrainer überhaupt nicht arbeiten. Ich habe herausgefunden, dass man dies nur per Terminalbefehl (dconf write /org/gnome/shell/overrides/attach-modal-dialogs false) ändern kann. Siehe hier: https://askubuntu.com/questions/109321/ ... o-window-t, das schaffen meinen Schüler nicht. Ich hatte daher versucht weiter in das Verständnis der Lage von Dialogen einzusteigen.

Wenn wir schon mal kommunizieren, wollte ich dir doch mal ein Foto deines Buches zeigen, das mit mir schon einen Teil der Welt gesehen hat:
Buch.jpg
Buch.jpg (40.5 KiB) 2450 mal betrachtet
Ein Teil meiner Entspannung im Urlaub war das Programmieren mit Meerblick an der Côte d'Azur oder in Cadaques.
Viele Grüße und einen guten Jahresanfang
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Position eines Dialogs

Beitrag von Toxitom »

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
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Position eines Dialogs

Beitrag von erikafuchs »

Tja, also, den ersten Teil habe ich jetzt anders gelöst. Ich sorge dafür, dass innerhalb der 10 Aufgaben der Dialog nicht wechselt und plaziere ihn am Anfang. Wenn die/der Nutzer/in die Plazierung dann ändert, bleibt er so.
Toxitom hat geschrieben: Mo, 28.12.2020 19:45 Zu den Linux-Distros kann ich wenig sagen - wenn Du den Dialog aber gleich passend platzierst ist das aber eh egal.
Nein, nein nein, leider nicht. Auch wenn ich den Dialog per Makro platziere, er bleibt in der Mitte! Wenn ich ihn als Nutzer verschieben will, dann wird das Nutzerfenster dahinter klein und verschiebt sich mit dem Dialog - der bleibt in der Mitte! Das ist nicht so einfach zu lösen. Da benötige ich dringend Hilfe.
Zum Buch: Das ist ja noch ne gaaaaaanz alte Auflage...hihi. Wie wäre es mit ner neuen?
Danke erstmal. Um deine Bibel auch auf Flugreisen mitnehmen zu können, habe ich ihn auch als Ebook (3. Auflage). Hat sich denn zu deiner neuesten Ausgabe etwas eklatantes geändert?
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Position eines Dialogs

Beitrag von erikafuchs »

Toxitom hat geschrieben: Mo, 28.12.2020 19:45 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;)
@Toxitom: Hallo Thomas, kannst du mir bitte noch erklären, was damit gemeint ist?
So long
Antworten