Makro für x Button

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

Moderator: Moderatoren

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

Makro für x Button

Beitrag von erikafuchs » Do, 03.01.2019 14:41

Einen schönes neues Jahr zusammen!
Schon wieder brauche ich Hilfe:
In meinem „Rechentrainer“ können die Schüler Aufgaben, die sich nicht mögen, durch Klicken auf das Schließen Kreuzchen einfach überspringen. Ich habe im zugehörigen Dialog jetzt einach bei den Eigenschaften „Mit Titelleiste“ „Nein“ gewählt - die Titelleiste wird trotzdem angezeigt.
Eine Andere Möglichkeit wäre es, das Schließen Kreuzchen mit einem Makro zu verbinden - das gelingt mir aber auch nicht. Im Handbuch steht, dass die „execute“ Methode einen Rückgabewert liefert - aber wie frage ich diesen ab?
Pit

mikeleb
******
Beiträge: 752
Registriert: Fr, 09.12.2011 16:50

Re: Makro für x Button

Beitrag von mikeleb » Do, 03.01.2019 16:26

Hallo Pit,
auch dir ein gesundes neues Jahr! (an alle anderen ebenfalls)
Du kannst das Beenden Dialogs folgendermaßen abfragen:

Code: Alles auswählen

x=oDialog.execute 'startet den Dialog und erfasst die Art des Beendens 
x=1 bedeutet der Dialog wurde mit OK beendet
x=0 bedeutet der Dialog wurde abgebrochen (oder sonstwie beendet)
Gruß,
mikeleb

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

Re: Makro für x Button

Beitrag von erikafuchs » Do, 03.01.2019 16:41

Hallo mikeleb,
vielen Dank - das heißt, man muss vor dem Start eine Variable festlegen - da muss man erst drauf kommen. Ich habe es ausprobiert, das funktioniert ... prinzipiell. Jetzt ist das Problem in meinem Rechentrainer, dass es erstens mehrere Dialoge dieser Art gibt und man alle mit verschiedenen Möglichkeiten beenden kannn - leider aber nicht mit ok. So kann ich also das Schließen Kreuzchen nur mit viel Mühe abfangen.
Weiß jemand, wie ich den Titel mit dem Kreuzchen ganz los werde?

Stephan
********
Beiträge: 10760
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro für x Button

Beitrag von Stephan » Do, 03.01.2019 16:55

Die einfachste Variante sollte sein, es auszunutzen das bei einem nicht-modalen Dialog das Schliessen-Kreuz per default ohnehin ohne Funktion ist:

Code: Alles auswählen

Dim u_bib As Object
Dim u_dialog As Object

Dim beenden

Sub unschliessbarer_Dialog()
	BasicLibraries.LoadLibrary("Standard")
	DialogLibraries.LoadLibrary("Standard")
	u_bib = DialogLibraries.Standard.Dialog1
	u_dialog = CreateUnoDialog(u_bib)

	u_dialog.setVisible(True)
	
	beenden = 0
	Do While beenden = 0
		Wait 10
	Loop
End Sub


Gruß
Stephan
Dateianhänge
unschliessbarer_Dialog.odt
(11.56 KiB) 20-mal heruntergeladen

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

Re: Makro für x Button

Beitrag von erikafuchs » Do, 03.01.2019 17:03

Hallo Stefan,
Was ist ein nicht-modaler Dialog?
Ich bin z.z. in Spanien und habe nur internet über mein iPad und habe daher Probleme dein Beispiel runterzuladen.

Stephan
********
Beiträge: 10760
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Makro für x Button

Beitrag von Stephan » Do, 03.01.2019 17:20

Was ist ein nicht-modaler Dialog?
Das ist ein ganz gewöhnlicher Dialog, der nur so gestartet wurde das er nicht den Zugriff auf das darunterliegende Fenster blockiert, d.h. er ist davon 'unabhängig'.
in Writer ist z.B. der Dialog Einfügen-Feldbefehle-Andere ein solcher Dialog, weil trotz geöffneten Dialogs noch ein Schreiben im Dokument möglich ist, was z.B. Beim Dialog Format-Absatz nicht geht.

Ersetze einfach in Deinem bestehenden Makro die 'Dialogstartzeile':

Code: Alles auswählen

DeinDialog.Execute()
durch Folgendes:

Code: Alles auswählen

DeinDialog.setVisible(True)
beenden = 0
Do While beenden = 0
   Wait 10
Loop
Gruß
Stephan

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

Re: Makro für x Button

Beitrag von erikafuchs » Do, 03.01.2019 17:34

Prima, wieder was dazugelernt. Das heißt der Dialog wird sichtbar gemacht statt aufgerufen. Wenn ich das richtig sehe, muss ich ihn dann aber auch wieder unsichtbar machen. Da ich jetzt aber verschiedene „Ausgänge“ habe (10 Aufgaben gemacht, dreimal falsche Eingabe, Abbrechen, Berechnungszeit abgelaufen ...) muss ich die ja jetzt alle anpassen. Hui, das ist mühsehlig.
Warum gibt es dieses „Mit Tielleiste“ Ja/Nein, wenn es bei der Erzeugung klappt, beim Aufruf aber nicht? !

Antworten