Man kann die Ereignisse von Kontrollfeldern abfragen und entsprechende Makros starten.
Mit
diesen kann man auch den Dialog selber ändern.
Die Ereignisse eines Kontrollfeldes sind bei den Eigenschaften eines Kontrollfeldes
zu finden.
Als Beispiel verwende ich hier eine Checkbox. Wir werden jetzt den Status der Checkbox
prüfen und dem Status entsprechend Änderungen im Dialog durchführen.
Als Erstes ist es wichtig den Dialog öffentlich zu deklarieren damit alle Routinen
auf das Object
zugreifen können. Die erste Routine startet den Dialog.
Public myDlg as Object
sub test_dialog
doc = thiscomponent
dlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
dlg.Execute()
end sub
Das folgende Makro ist mit dem Ereignis "Status geändert" der Checkbox verknüpft.
sub checkboxchange
msgbox "Der Status wurde geändert"
end sub
Klickt man jetzt die Checkbox an, erscheint die Meldung.
Anstatt der Meldung kann man aber auch andere Kontrollfelder manipulieren. Im Beispiel
fügen
wir jetzt dem Dialog ein Textfeld hinzu, das nur zu sehen ist und Eingaben zuläßt wenn die
Checkbox aktiviert ist. Um das Textfeld nicht sichtbar zu machen muss das Textfeld vor dem
Start des Dialoges eingestellt (visible=false) werden.
sub test_dialog
doc = thiscomponent
dlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
ctl = dlg.getControl("TextField1")
ctl.visible=true
dlg.Execute()
end sub
Danach kann man diesen Parameter in der Routine zu Checkbox ändern. Dabei wird der
Status der Checkbox ( 0/1) abgefragt und entsprechend reagiert.
sub checkboxchange
ctlcheck=dlg.getControl("CheckBox1")
ctl = dlg.getControl("TextField1")
if ctlcheck.model.State=1 then
ctl.visible=true
else
ctl.visible=false
end if
end sub
Dieses Beispiel läßt sich auf alle anderen Manipulationen eines Kontrollfeldes ableiten.
Einzig
die Größe des Dialoges kann man nicht ändern.