Guten Morgen allerseits
Ich habe eine möglich Lösung gefunden, aber damit bin ich noch nicht ganz zufrieden. Das muss doch besser gehen, siehe letzten Abschnitt.
Also, zuerst noch einmal das Problem, wie in obiger Beispieldatenbank dargestellt:
Code: Alles auswählen
Sub S_SHOW_HIDE_OPT_Sub(Event)
oMainForm = ThisComponent.drawpage.forms.getbyname("MainForm")
oSubForm = oMainForm.getbyname("SubForm")
oSubSubForm = oSubForm.getbyname("SubSubForm")
oOpt = Event.Source
if oOpt.State then
if oOpt.model.Label = "Einblenden" then bShow = true else bShow = false
for i = 0 to oSubForm.Count -1
oSubForm(i).EnableVisible = bShow '<--- Hier entsteht der Laufzeitfehler!
next i
endif
End Sub
Eigentlich ist der Fehler logisch, denn die Zeilen
Code: Alles auswählen
for i = 0 to oSubForm.Count -1
oSubForm(i).EnableVisible = bShow '<--- Hier entsteht der Laufzeitfehler!
next i
versuchen ein Formular-Element Un-/Sichtbar zu machen, was offensichtlich nicht möglich ist. Natürlich könnte ich nun den Fehler mit "On Error resume Next" ignorieren, was aber keine Option ist. Besser scheint mir jedoch
Code: Alles auswählen
Sub S_SHOW_HIDE_OPT_Sub(Event)
oMainForm = ThisComponent.drawpage.forms.getbyname("MainForm")
oSubForm = oMainForm.getbyname("SubForm")
oSubSubForm = oSubForm.getbyname("SubSubForm")
oSubSubFormName = oSubSubForm.name '<-- Namen des SubSubForm's auslesen
oOpt = Event.Source
if oOpt.State then
if oOpt.model.Label = "Einblenden" then bShow = true else bShow = false
for i = 0 to oSubForm.Count -1
if oSubForm(i).name = oSubSubFormName then '<-- Verbesserungswürdige if Klausel
else
oSubForm(i).EnableVisible = bShow
endif
next i
endif
End Sub
eine weitere if Klausel, um das Formular-Element zu umgehen.
Nun zu meinem Problem, bei einem Formular-Element geht das ja, aber wenn ich nun mehrere dieser Formular-Elemente habe, wird das Makro unnötig kompliziert.
Es muss doch eine Anweisung geben alla
Code: Alles auswählen
...
if oSubForm(i).FORMULAR-ELEMENT = true then
Tue dieses, oder nichts
else
Tue jenes
...
um alle Formular-Elemente zu überspringen.
Besten Dank für eure Hilfe
Alex