von Maggus » Mi, 22.06.2011 08:12
Hallo,
mir ist etwas schleierhaft, warum folgender Code unterschiedlich funktioniert, je nachdem, in welchem Kontext ich ihn aufrufe.
Zum Hintergrund: Ich möchte einem vorhandenem Dialog (per Dialogdesigner erstellt mit einigen Elementen auf Step 1) gerne nun auf Step 2 eine ganze Reihe weiterer Kontrollelemente hinzufügen.
Testweise hatte ich diese neuen Kontrollelemente erstmal in einem neuen Dialog erzeugt, was wunderbar schnell funktioniert. Nun aber habe ich das umgebaut, dass diese wie gesagt auf dem vorhandenen Dialog hinzukommen. Der Code sieht also so aus:
Dlg.Model ist der bestehende Dialog
Code: Alles auswählen
Sub inizialize_dlg_step2()
oMod = Dlg.Model.createInstance("com.sun.star.awt.UnoControlButtonModel")
oMod.PositionX = 5
oMod.PositionY = 5
oMod.Width = 10
oMod.Height = 10
oMod.Label = "1"
oMod.Toggle = true
oMod.FocusOnClick = false
oMod.Step = 2
Dlg.Model.insertByName("Button_1", oMod)
For i = 2 to 240
oMod = oMod.CreateClone
oMod.PositionY = oMod.PositionY+12
oMod.Label = i
Dlg.Model.insertByName("Button_"+i, oMod)
If i=21 Or i=41 Or i=61 Or i=81 Then
oMod.PositionY = 5
oMod.PositionX = oMod.PositionX+12
Elseif i = 100 Then
oMod.Width = 14
oMod.PositionX = oMod.PositionX-2
oMod.FontHeight = 9
Elseif i=101 Or i=121 Or i=141 Or i=161 Or i=181 Or i=201 Or i=221 Then
oMod.PositionY = 5
oMod.PositionX = oMod.PositionX+17
If i=101 Then oMod.PositionX = oMod.PositionX-3
End If
Next i
End Sub
Auf diese Weise braucht es aber tierisch lange, bis der Code ausgeführt wird. Kann mir jemand erklären warum? Zum ausprobieren habe ich mal eine Beispieldatei angehängt. Da kann man gut den Zeitunterschied feststellen.
Gruß,
Hallo,
mir ist etwas schleierhaft, warum folgender Code unterschiedlich funktioniert, je nachdem, in welchem Kontext ich ihn aufrufe.
Zum Hintergrund: Ich möchte einem vorhandenem Dialog (per Dialogdesigner erstellt mit einigen Elementen auf Step 1) gerne nun auf Step 2 eine ganze Reihe weiterer Kontrollelemente hinzufügen.
Testweise hatte ich diese neuen Kontrollelemente erstmal in einem neuen Dialog erzeugt, was wunderbar schnell funktioniert. Nun aber habe ich das umgebaut, dass diese wie gesagt auf dem vorhandenen Dialog hinzukommen. Der Code sieht also so aus:
Dlg.Model ist der bestehende Dialog
[code]
Sub inizialize_dlg_step2()
oMod = Dlg.Model.createInstance("com.sun.star.awt.UnoControlButtonModel")
oMod.PositionX = 5
oMod.PositionY = 5
oMod.Width = 10
oMod.Height = 10
oMod.Label = "1"
oMod.Toggle = true
oMod.FocusOnClick = false
oMod.Step = 2
Dlg.Model.insertByName("Button_1", oMod)
For i = 2 to 240
oMod = oMod.CreateClone
oMod.PositionY = oMod.PositionY+12
oMod.Label = i
Dlg.Model.insertByName("Button_"+i, oMod)
If i=21 Or i=41 Or i=61 Or i=81 Then
oMod.PositionY = 5
oMod.PositionX = oMod.PositionX+12
Elseif i = 100 Then
oMod.Width = 14
oMod.PositionX = oMod.PositionX-2
oMod.FontHeight = 9
Elseif i=101 Or i=121 Or i=141 Or i=161 Or i=181 Or i=201 Or i=221 Then
oMod.PositionY = 5
oMod.PositionX = oMod.PositionX+17
If i=101 Then oMod.PositionX = oMod.PositionX-3
End If
Next i
End Sub
[/code]
Auf diese Weise braucht es aber tierisch lange, bis der Code ausgeführt wird. Kann mir jemand erklären warum? Zum ausprobieren habe ich mal eine Beispieldatei angehängt. Da kann man gut den Zeitunterschied feststellen.
[attachment=0]Dlg_Step2_test.ods[/attachment]
Gruß,