es geht darum, einen Dialog "zur Laufzeit" zu erzeugen. Ich brauche das, um ein Writer-Dokument, das "unter" dem Dialog liegt, mithilfe des Dialogs bearbeiten zu können. Hier der Code:
Code: Alles auswählen
Sub LaufzeitDialogErstellen
dim oDlgM as object ' das Model des Dialoges
dim oDlg as object ' der Dialog an sich
dim oMod as object ' nimmt jeweils das Model der Elemente auf
dim oWin as Object ' erzeugtes Fenster
REM Das Dialogmodel erzeugen:
oDlgM = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
REM Eigenschaften zuweisen
oDlgM.setPropertyValue("PositionX", 30)
oDlgM.setPropertyValue("PositionY", 30)
oDlgM.setPropertyValue("Width", 300)
oDlgM.setPropertyValue("Height", 300)
oDlgM.setPropertyValue("Title", "Bearbeitung von Teilsätzen")
REM ein Beschriftungsfeld erzeugen
oMod = oDlgM.createInstance("com.sun.star.awt.UnoControlFixedTextModel")
REM die Eigenschaften setzen
oMod.setPropertyValue("Name", "Txt_Feld1")
oMod.setPropertyValue("Align", 0)
oMod.setPropertyValue("MultiLine", true)
oMod.setPropertyValue("FontFamily", 0)
oMod.setPropertyValue("FontHeight", 10)
oMod.setPropertyValue("TabIndex", 1)
oMod.setPropertyValue("PositionX", 15)
oMod.setPropertyValue("PositionY", 15)
oMod.setPropertyValue("Width", 180)
oMod.setPropertyValue("Height", 140)
oMod.setPropertyValue("Label", "Hier werden wichtige Bestandteile von untergeordneten Teilsätzen markiert." & _
chr$(13) & chr$(13) & "Bei Nebensätzen sind dies das Bindewort und die Prädikat-1-Form (die finite Verbform)." & _
chr$(13) & chr$(13) & "Bei Infinitivsätzen geht es um das 'hinweisende Wort' (z." & chr$(160) & "B. 'es' " & _
"oder 'dazu'), die 'Ersatzkonjunktion' ('um', 'ohne', 'anstatt' etc.), den Infinitivbegleiter ('zu') " & _
"und natürlich den Infinitiv selbst." & _
chr$(13) & chr$(13) & "Rechts kannst du wählen, ob Nebensätze oder Infinitivsätze markiert werden sollen.")
REM und dem Dialogmodel zuweisen
oDlgM.insertByName("Txt_Field1", oMod)
REM erstes Optionsfeld erzeugen ' <--------------------------------------------------------
oMod = oDlgM.createInstance("com.sun.star.awt.UnoControlRadioButtonModel")
REM die Eigenschaften setzen
oMod.setPropertyValue("Name", "Optionsfeld1")
oMod.setPropertyValue("FontHeight", 10)
oMod.setPropertyValue("PositionX", 200)
oMod.setPropertyValue("PositionY", 15)
oMod.setPropertyValue("Width", 80)
oMod.setPropertyValue("Height", 60)
oMod.setPropertyValue("Label", "Nebensatz")
REM und dem Dialogmodel zuweisen
oDlgM.insertByName("Optionsfeld1", oMod)
REM zweites Optionsfeld erzeugen ' <---------------------------------------------------------
oMod = oDlgM.createInstance("com.sun.star.awt.UnoControlRadioButtonModel")
REM die Eigenschaften setzen
oMod.setPropertyValue("Name", "Optionsfeld2")
oMod.setPropertyValue("FontHeight", 10)
oMod.setPropertyValue("PositionX", 200)
oMod.setPropertyValue("PositionY", 30)
oMod.setPropertyValue("Width", 80)
oMod.setPropertyValue("Height", 60)
oMod.setPropertyValue("Label", "Infinitivsatz")
REM und dem Dialogmodel zuweisen
oDlgM.insertByName("Optionsfeld2", oMod)
REM einen Button erzeugen
oMod = oDlgM.createInstance("com.sun.star.awt.UnoControlButtonModel")
REM die Eigenschaften setzen
oMod.setPropertyValue("Name", "Button1")
oMod.setPropertyValue("TabIndex", 2)
oMod.setPropertyValue("PositionX", 50)
oMod.setPropertyValue("PositionY", 160)
oMod.setPropertyValue("Width", 100)
oMod.setPropertyValue("Height", 20)
oMod.setPropertyValue("Label", "OK")
oMod.setPropertyValue("PushButtonType", com.sun.star.awt.PushButtonType.OK)
REM und dem Dialogmodel zuweisen
oDlgM.insertByName("Button1", oMod)
REM den Dialog erzeugen
oDlg = CreateUnoService("com.sun.star.awt.UnoControlDialog")
oDlg.setModel(oDlgM)
REM ein Fenster erzeugen und den Dialog zuweisen
oWin = CreateUnoService("com.sun.star.awt.Toolkit")
oDlg.createPeer(oWin, null)
Rem Dialog aufrufen
oDlg.execute()
End Sub
Gruß Mr.Ed