Dialoge "X-en"
Moderator: Moderatoren
Dialoge "X-en"
Hi,
wie kann man das Schliessen eines Dialogs per"X" verhindern ?
LG
Andreas
wie kann man das Schliessen eines Dialogs per"X" verhindern ?
LG
Andreas
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Dialoge "X-en"
nur, indem Du die hinterlegte Betriebssystemfunktion änderst.
Also: gar nicht.
Also: gar nicht.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Dialoge "X-en"
OK,
also anders,
wie kann ich das Schliessen eines Dialogs per "X" abfangen, die bis dahin geänderten variablen speichern, und den Dialog nach neustart wieder füllen ?
LG
Andreas
also anders,
wie kann ich das Schliessen eines Dialogs per "X" abfangen, die bis dahin geänderten variablen speichern, und den Dialog nach neustart wieder füllen ?
LG
Andreas
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Dialoge "X-en"
Da wirst Du wohl einen ActionListener für den Dialog brauchen (ungetestet!)
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Re: Dialoge "X-en"

war mir fast klar, leider kenne ich die "Action" nicht, die ein Klick auf das X auslöst

vielleicht so 2-3 kleine Tipps ?
bitte mit Erklärung, was ich da dann eigentlich mache

obwohl mir reichen würde, bei einem klick auf das X ein entsprechendes Makro auszuführen (Löschen des bis dahin eingegebenen Datensatzes)
LG Andreas
-
- **
- Beiträge: 32
- Registriert: So, 25.02.2007 09:11
- Wohnort: Ingolstadt
Re: Dialoge "X-en"
Also wenn ich das richtig verstehe
willst du deine eigene Funktion beim drücken auf's "X".
Das ist natürlich möglich wenn du den Dialog programmierst, wie folgender Code zeigt.
Die Methode den Dialog über Dialog.setvisible(true) anzuzeigen bietet die Möglichkeit, neben dem geöffneten Dialog weiter am Dokument zu arbeiten.
Die "normale" Methode wäre Dialog.execute() zum Anzeigen und Dialog.endexecute() zum Beenden.

Das ist natürlich möglich wenn du den Dialog programmierst, wie folgender Code zeigt.
Code: Alles auswählen
REM ***** BASIC *****
global EinstellungenDialog as object
global oWinListener
global oCB1Listener
global oCB2Listener
dim oEvent1
dim oEvent2
dim oNix
Sub Dialog_Anzeigen
EinstellungenDialogMod = createUnoService("com.sun.star.awt.UnoControlDialogModel")
with EinstellungenDialogMod
.setPropertyValue("BackgroundColor", (RGB(255,255,255)))
.setPropertyValue("Height", 180)
.setPropertyValue("Width", 70)
.setPropertyValue("Title", "Einstellungen")
.setPropertyValue("HelpText", "Bitte die gewünschten Einstellungen machen")
end with
EinstellungenDialog = createUnoService("com.sun.star.awt.UnoControlDialog")
'****Der Listener für's X
oWinListener = createUnoListener("bas2_", "com.sun.star.awt.XTopWindowListener")
EinstellungenDialog.addTopWindowListener(oWinListener)
EinstellungenDialog.setModel(EinstellungenDialogMod)
oCB1Listener = createUnoListener("oCb1_", "com.sun.star.awt.XActionListener")
oCB2Listener = createUnoListener("oCb2_", "com.sun.star.awt.XActionListener")
REM die Checkbox
oCheckbox1 = EinstellungenDialogMod.createInstance("com.sun.star.awt.UnoControlCheckBoxModel")
with oCheckbox1
.setPropertyValue("Label", "Checkbox_eins")
.setPropertyValue("PositionX", 10)
.setPropertyValue("PositionY", 10)
.setPropertyValue("Height", 15)
.setPropertyValue("Width", 140)
.setPropertyValue("State", 0)
end with
EinstellungenDialogMod.insertByName("Checkbox1", oCheckbox1)
oCheckbox1Control = EinstellungenDialog.getControl("Checkbox1")
oCheckbox1Control.addActionListener(oCB1Listener)
'Die zweite Checkbox
oCheckbox2 = EinstellungenDialogMod.createInstance("com.sun.star.awt.UnoControlCheckBoxModel")
with oCheckbox2
.setPropertyValue("Label", "Checkbox_zwei")
.setPropertyValue("PositionX", 10)
.setPropertyValue("PositionY", 30)
.setPropertyValue("Height", 15)
.setPropertyValue("Width", 140)
end with
EinstellungenDialogMod.insertByName("Checkbox2", oCheckbox2)
oCheckbox2Control = EinstellungenDialog.getControl("Checkbox2")
oCheckbox2Control.addActionListener(oCB2Listener)
EinstellungenDialog.setPosSize(20, 270, 40, 40, 3)
EinstellungenDialog.setvisible(true)
End Sub
'************Die Aktion des Listeners fürs X
sub bas2_windowClosing()
'Entfernen der Listener
EinstellungenDialog.removeTopWindowListener(oWinListener)
EinstellungenDialog.getControl("Checkbox1").removeActionListener(oCB1Listener)
EinstellungenDialog.getControl("Checkbox2").removeActionListener(oCB2Listener)
'Schliesen des Dialogs
EinstellungenDialog.dispose
end sub
'*********checkbox1 wird geändert***********
sub oCb1_actionPerformed(oEvent1)
if EinstellungenDialog.getControl("Checkbox1").State Then
msgbox "Checkbox1 ist aktiv"
else
msgbox "Checkbox1 ist inaktiv"
end if
end sub
'*********checkbox2 wird geändert***********
sub oCb2_actionPerformed(oEvent2)
if EinstellungenDialog.getControl("Checkbox2").State Then
msgbox "Checkbox2 ist aktiv"
else
msgbox "Checkbox2 ist inaktiv"
end if
end sub
'****Fenster wird aktiviert*******
sub bas2_windowActivated
oVSize = EinstellungenDialog.getPosSize
EinstellungenDialog.setPosSize(oVSize.X, oVSize.Y, oVSize.Width * 3, oVSize.Height , 12)
end sub
'****Fenster wird deaktiviert*******
sub bas2_windowDeActivated
oVSize = EinstellungenDialog.getPosSize
EinstellungenDialog.setPosSize(oVSize.X, oVSize.Y, oVSize.Width * (1/3), oVSize.Height , 12)
end sub
Die "normale" Methode wäre Dialog.execute() zum Anzeigen und Dialog.endexecute() zum Beenden.
OOO Basic Programmierers best Friend XRay-Tool
Re: Dialoge "X-en"
so was hab ich gesucht, ich werde es mal im laufe der Woche testen.
Danke
LG
Andreas
Danke
LG
Andreas
Re: Dialoge "X-en" ///Gelöst ???
So, hab da mal was getestet.
also bevor ich mir die Sache mit dem Listener antue, hab ich einfach mal in den Dialogeigenschaften den Dialog deaktiviert.
Stellt sich die Frage, ob das irgendwelche anderen Nachteile bringt.
Hat da jemand Infos ?
also bevor ich mir die Sache mit dem Listener antue, hab ich einfach mal in den Dialogeigenschaften den Dialog deaktiviert.
Stellt sich die Frage, ob das irgendwelche anderen Nachteile bringt.
Hat da jemand Infos ?
Re: Dialoge "X-en"
Hallo,
wenn Du NUR die im Dialog getätigten Eingaben oder die Variablen retten willst, ist das doch ganz einfach.
ich habe Dir mal eine funktionsreduzierte Funktion, aus der ich den Dialog aufrufe, hier hereinkopiert.
Schau Dir das mal an - ich hoffe, es hilft.
Jedenfalls kann Dir das X beim schließen ziemlich egal sein, weil Du bei Beendigung des Dialogs immer an der gleichen Stelle landest.
Gruß eBayer
Function DialogPLZ()
Dim oListbox As Object
Dim i As Integer, iResult As Integer
Dim aPLZ
DialogLibraries.LoadLibrary("Library1")
oDialog = CreateUnoDialog(DialogLibraries.Library1.DialogPLZ)
oDialog.setTitle("Auswahl Postleitzahl und Ort")
oListBox = oDialog.GetControl("LB_PLZ")
aPLZ = LadePLZ
for i=0 to ubound(aPLZ(),1)
oListbox.addItem(trim(aPLZ(0,i)) + " " + trim(aPLZ(1,i)),i) ' PLZ und Ort
next i
iResult = oDialog.execute()
' hier ist der Dialog beendet, aber alle Variablen und DialogControls sind noch vorhanden
' über iResult frage ich zusätzlich ab, wie der Dialog beendet wurde
' hier kannst Du alle Variablen und alle Inhalte von Controls z.B. in eine Textdatei sichern, um sie beim nächsten Aufruf des Dialogs wieder zu füllen
oDialog.dispose() ' jetzt wird der Dialog endgültig zerstört
End Function
wenn Du NUR die im Dialog getätigten Eingaben oder die Variablen retten willst, ist das doch ganz einfach.
ich habe Dir mal eine funktionsreduzierte Funktion, aus der ich den Dialog aufrufe, hier hereinkopiert.
Schau Dir das mal an - ich hoffe, es hilft.
Jedenfalls kann Dir das X beim schließen ziemlich egal sein, weil Du bei Beendigung des Dialogs immer an der gleichen Stelle landest.
Gruß eBayer
Function DialogPLZ()
Dim oListbox As Object
Dim i As Integer, iResult As Integer
Dim aPLZ
DialogLibraries.LoadLibrary("Library1")
oDialog = CreateUnoDialog(DialogLibraries.Library1.DialogPLZ)
oDialog.setTitle("Auswahl Postleitzahl und Ort")
oListBox = oDialog.GetControl("LB_PLZ")
aPLZ = LadePLZ
for i=0 to ubound(aPLZ(),1)
oListbox.addItem(trim(aPLZ(0,i)) + " " + trim(aPLZ(1,i)),i) ' PLZ und Ort
next i
iResult = oDialog.execute()
' hier ist der Dialog beendet, aber alle Variablen und DialogControls sind noch vorhanden
' über iResult frage ich zusätzlich ab, wie der Dialog beendet wurde
' hier kannst Du alle Variablen und alle Inhalte von Controls z.B. in eine Textdatei sichern, um sie beim nächsten Aufruf des Dialogs wieder zu füllen
oDialog.dispose() ' jetzt wird der Dialog endgültig zerstört
End Function
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Re: Dialoge "X-en"
Na, mir ging es eigentlich nur um das "X".
wenn Menschen ein "X" sehen, klicken sie drauf (erfahrungswerte)
Ausserdem kann ich nun vorschreiben, ob der Dialog beendet werden darf (fehlende Aktionen oder Bereitstellung von Informationen für andere, ebenso alle Verbindungen zur Datenbank schliessen usw.)
Die Informationen werden entweder durch einen Speicherbutton, oder beim verlassen einer Seite direkt in die Datenbank eingepflegt.
Bei deiner Variante ist der Dialog zuende, und genau das will ich ja nicht
LG
Andreas
wenn Menschen ein "X" sehen, klicken sie drauf (erfahrungswerte)
Ausserdem kann ich nun vorschreiben, ob der Dialog beendet werden darf (fehlende Aktionen oder Bereitstellung von Informationen für andere, ebenso alle Verbindungen zur Datenbank schliessen usw.)
Die Informationen werden entweder durch einen Speicherbutton, oder beim verlassen einer Seite direkt in die Datenbank eingepflegt.
Bei deiner Variante ist der Dialog zuende, und genau das will ich ja nicht

LG
Andreas
Re: Dialoge "X-en"
OK
hab den "Fehler" daran gefunden.
Wenn der Dialog noch nicht fertig ist sollte man ihn nicht deaktivieren, da man sonst nicht aus dem "Testmodus" rauskommt.
Also erst fertig stellen, dann deaktivieren.
LG
Andreas
hab den "Fehler" daran gefunden.
Wenn der Dialog noch nicht fertig ist sollte man ihn nicht deaktivieren, da man sonst nicht aus dem "Testmodus" rauskommt.
Also erst fertig stellen, dann deaktivieren.
LG
Andreas