Dialoge/Formulare
Wie kann man Dialoge während der Eingabe manipulieren?
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
Basic
sub test_dialog
doc = thiscomponent
dlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
dlg.Execute()
end subDas folgende Makro ist mit dem Ereignis "Status geändert" der Checkbox verknüpft.
Basic
sub checkboxchange
msgbox "Der Status wurde geändert"
end subKlickt 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ässt wenn die
Checkbox aktiviert ist. Um das Textfeld nicht sichtbar zu machen muss das Textfeld vor dem
Start des Dialoges eingestellt (visible=false) werden.
Basic
sub test_dialog
doc = thiscomponent
dlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
ctl = dlg.getControl("TextField1")
ctl.visible=true
dlg.Execute()
end subDanach kann man diesen Parameter in der Routine zu Checkbox ändern. Dabei wird der
Status der Checkbox ( 0/1) abgefragt und entsprechend reagiert.
Basic
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 subDieses Beispiel lässt sich auf alle anderen Manipulationen eines Kontrollfeldes ableiten.
Einzig
die Größe des Dialoges kann man nicht ändern.
