Makro: Felder unsichtbar machen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

pony_slaystation
Beiträge: 9
Registriert: Fr, 25.04.2014 13:32

Makro: Felder unsichtbar machen

Beitrag von pony_slaystation »

Hallo Leute,
ich habe keine Erfahrung mit OO Basic oder dem Schreiben von Makros und möchte den EInstieg mit einem einfachen Beispiel machen. Per Druck auf eine Schaltfläche sollen einige Textfelder samt Beschreibungen ein- oder ausgeblendet werden; je nach dem, ob sie gerade sichtbar sind oder nicht. ALso: Druck auf Makro-Button (rift Makro auf): Makro prüft, ob die Schaltfläche gerade sichbar ist oder nicht. Ist sie sichtbar, setzt es die Schaltfläche auf unsichtbar. Andernfalls setzt sie sie auf sichtbar. Ich kriege es hin, eine Schaltfläche damit unsichtbar zu machen, aber nicht wieder zurück; sprich: nur ohne die if-Anweisung.
Im vorliegenden Fall erhalte ich die Meldung: "Datentypen unverträglich" in der if---then Zeile.

Code: Alles auswählen

REM  *****  BASIC  *****

Sub ein_ausblenden
oDoc = ThisComponent
oView = oDoc.getCurrentController()
oForm = oDoc.drawpage.forms.getByName("Segment")
oFeld1 = oForm.getByName("segmenterl_txt")
oFeld2 = oForm.getByName("segmenterl_feld")
oControl = oDoc.getCurrentController()
oFeld1aus = oControl.getcontrol(oFeld1)
if oFeld1aus.Visible = true THEN
	oFeld1aus.Visible = false
	oControl = oDoc.getCurrentController()
	oFeld2aus = oControl.getcontrol(oFeld2)
	oFeld2aus.Visible = false
	ELSE
	oFeld1aus.Visible = true
	oControl = oDoc.getCurrentController()
	oFeld2aus = oControl.getcontrol(oFeld2)
	oFeld2aus.Visible = true
end if	
end sub
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Makro: Felder unsichtbar machen

Beitrag von DPunch »

Servus

Die richtige Anweisung lautet

Code: Alles auswählen

if oFeld1aus.isVisible = true THEN
.Visible ist nur der Setter (setVisible).

Wenn Du sowieso immer nur zwischen sichtbar und unsichtbar hin- und herschalten willst, ohne weitere Bedingungen, kannst Du das Ganze übrigens auch einfach so abkürzen:

Code: Alles auswählen

oDoc = ThisComponent
oView = oDoc.getCurrentController()
oForm = oDoc.drawpage.forms(0)
oFeld1 = oForm.getByName("segmenterl_txt")
oFeld2 = oForm.getByName("segmenterl_feld")
oControl = oDoc.getCurrentController()
oFeld1aus = oControl.getcontrol(oFeld1)
oFeld2aus = oControl.getcontrol(oFeld2)
oFeld1aus.Visible = NOT oFeld1aus.isVisible
oFeld2aus.Visible = NOT oFeld2aus.isVisible
pony_slaystation
Beiträge: 9
Registriert: Fr, 25.04.2014 13:32

Re: Makro: Felder unsichtbar machen

Beitrag von pony_slaystation »

Danke dir.
deine Lösung sieht schlanker aus, aber wenn ich sie einbaue, erhalte ich (egal was ich mache) eine NoSuchElement Exception. Die Namen der Felder stimmen aber, das hab ich überprüft.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Makro: Felder unsichtbar machen

Beitrag von DPunch »

Servus

Tausch mal die Zeile

Code: Alles auswählen

oForm = oDoc.drawpage.forms(0)
gegen

Code: Alles auswählen

oForm = oDoc.drawpage.forms.getByName("Segment")
Antworten