Seite 1 von 1

[Gelöst] Textfelder ausblenden - Objektvariable nicht belegt

Verfasst: Do, 29.12.2016 10:27
von retuwe61
Guten Morgen.
Ich möchte mehrere Text- und Listenfelder ausblenden. In der Zeile "oFeldaus = oControl.getcontrol (oFeld)" erhalte ich eine Fehlermeldung.
Könnt Ihr helfen?
Danke.
Gruß
Uwe

Code: Alles auswählen

sub Felder_aus

oDoc = ThisComponent
oSheet = oDoc.Sheets.getByName ("AssEingabe")

oForm = ThisComponent.DrawPages.getByIndex(1).getForms().getByName( "Formular" )
oFeld1 = oForm.getByName("Textfeld 3")
oFeld2 = oForm.getByName("Listenfeld 2")
oFeld3 = oForm.getByName("Textfeld 4")
oFeld4 = oForm.getByName("Textfeld 6")
oFeld5 = oForm.getByName("Textfeld 7")
oFeld6 = oForm.getByName("Listenfeld 3")
oFeld7 = oForm.getByName("Textfeld 8")
oFeld8 = oForm.getByName("Listenfeld 10")
oFeld9 = oForm.getByName("Formatiertes Feld 1")

if oSheet.getCellbyPosition(1,5).String = "j" then

For i = 1 to 9
oControl = oDoc.getCurrentController()
oFeld = ("oFeld" & i)
'msgbox oFeld
oFeldaus = oControl.getcontrol (oFeld)
oFeldaus.Visible = FALSE
next

end if
end sub

Re: Textfelder ausblenden - Objektvariable nicht belegt

Verfasst: Do, 29.12.2016 10:38
von Stephan
In der Zeile "oFeldaus = oControl.getcontrol (oFeld)" erhalte ich eine Fehlermeldung.
Könnt Ihr helfen?
Ich verstehe diese Zeile ohnehin nicht.

Formularelemente liegen auf der Drawpage des Tabellenblatte, also z.B.:

Code: Alles auswählen

oDoc = ThisComponent
oSheet = oDoc.Sheets.getByName ("AssEingabe")

oFeldaus = oSheet.Drawpage.Forms.getByName("Formular").getByName(oFeld)
wobei "Formular" der Name Deines Formulars ist (bei OOo 3.3.0 ist "Formular" der Defaultname, ich weiß aber nicht ob das bei allen LO/OO-Versionen so ist)


Ein Beispiel für einen (ähnlichen) Steuerelementzugriff findest Du hier:
viewtopic.php?f=18&t=66049&p=257347#p257347


Gruß
stephan

Re: Textfelder ausblenden - Objektvariable nicht belegt

Verfasst: Do, 29.12.2016 11:33
von retuwe61
Hallo stephan.
Dieser Code funktioniert. Ich wollte ihn jetzt nur mit einer Schleife ausstatten, da noch weitere Textfelder existieren, die ich ausblenden möchte. Daran scheitere ich.
Gruß
Uwe

Code: Alles auswählen

sub Felder_aus

oDoc = ThisComponent
oSheet = oDoc.Sheets.getByName ("AssEingabe")

oForm = ThisComponent.DrawPages.getByIndex(1).getForms().getByName( "Formular" )
oFeld1 = oForm.getByName("Textfeld 3")
oFeld2 = oForm.getByName("Listenfeld 2")
oFeld3 = oForm.getByName("Textfeld 4")
oFeld4 = oForm.getByName("Textfeld 6")
oFeld5 = oForm.getByName("Textfeld 7")
oFeld6 = oForm.getByName("Listenfeld 3")
oFeld7 = oForm.getByName("Textfeld 8")
oFeld8 = oForm.getByName("Listenfeld 10")
oFeld9 = oForm.getByName("Formatiertes Feld 1")

if oSheet.getCellbyPosition(1,5).String = "j" then

'For i = 1 to 9
oControl = oDoc.getCurrentController()
'oFeld = ("oFeld" & i)

oFeldaus = oControl.getcontrol (oFeld1)
oFeldaus.Visible = FALSE
oFeldaus = oControl.getcontrol (oFeld2)
oFeldaus.Visible = FALSE
oFeldaus = oControl.getcontrol (oFeld3)
oFeldaus.Visible = FALSE
oFeldaus = oControl.getcontrol (oFeld4)
oFeldaus.Visible = FALSE
oFeldaus = oControl.getcontrol (oFeld5)
oFeldaus.Visible = FALSE
oFeldaus = oControl.getcontrol (oFeld6)
oFeldaus.Visible = FALSE
oFeldaus = oControl.getcontrol (oFeld7)
oFeldaus.Visible = FALSE
oFeldaus = oControl.getcontrol (oFeld8)
oFeldaus.Visible = FALSE
oFeldaus = oControl.getcontrol (oFeld9)
oFeldaus.Visible = FALSE

'next
end if
end sub

Re: Textfelder ausblenden - Objektvariable nicht belegt

Verfasst: Do, 29.12.2016 12:00
von F3K Total
Hallo,
versuche mal dies:

Code: Alles auswählen

sub Felder_an_aus
    dim oFeld(1 to 9) as variant
    dim bHide as boolean
    oDoc = ThisComponent
    oSheet = oDoc.Sheets.getByName ("AssEingabe")
    oForm = ThisComponent.DrawPages.getByIndex(1).getForms().getByName( "Formular" )
    oFeld(1) = oForm.getByName("Textfeld 3")
    oFeld(2) = oForm.getByName("Listenfeld 2")
    oFeld(3) = oForm.getByName("Textfeld 4")
    oFeld(4) = oForm.getByName("Textfeld 6")
    oFeld(5) = oForm.getByName("Textfeld 7")
    oFeld(6) = oForm.getByName("Listenfeld 3")
    oFeld(7) = oForm.getByName("Textfeld 8")
    oFeld(8) = oForm.getByName("Listenfeld 10")
    oFeld(9) = oForm.getByName("Formatiertes Feld 1")
    bhide = (oSheet.getCellbyPosition(1,5).String = "j")
    For i = 1 to 9
        oFeld(i).EnableVisible = not bhide
    next
end sub
Gruß R

Re: Textfelder ausblenden - Objektvariable nicht belegt

Verfasst: Do, 29.12.2016 12:06
von retuwe61
Klasse!
Vielen Dank.
Gruß
Uwe