Programmierung unter AOO/LO (StarBasic, Python, Java, ...)
Moderator: Moderatoren
retuwe61
****
Beiträge: 159 Registriert: So, 18.11.2007 21:25
Beitrag
von retuwe61 » Do, 29.12.2016 10:27
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
Zuletzt geändert von
retuwe61 am Do, 29.12.2016 23:27, insgesamt 1-mal geändert.
Angewandt wird LibeOffice Version 5.1.6.2
Stephan
********
Beiträge: 12369 Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin
Beitrag
von Stephan » Do, 29.12.2016 10:38
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
retuwe61
****
Beiträge: 159 Registriert: So, 18.11.2007 21:25
Beitrag
von retuwe61 » Do, 29.12.2016 11:33
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
Angewandt wird LibeOffice Version 5.1.6.2
F3K Total
********
Beiträge: 3706 Registriert: Mo, 28.02.2011 17:49
Beitrag
von F3K Total » Do, 29.12.2016 12:00
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
retuwe61
****
Beiträge: 159 Registriert: So, 18.11.2007 21:25
Beitrag
von retuwe61 » Do, 29.12.2016 12:06
Klasse!
Vielen Dank.
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2