von hawkhunter2002 » Mo, 22.06.2009 09:30
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.
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 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.
Also wenn ich das richtig verstehe 8) 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.
[code]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[/code]
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.