[gelöst] Formularfeld in Calc mit Makro sichtbar/unsichtbar schalten

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

Moderator: Moderatoren

Rupp
**
Beiträge: 46
Registriert: Mi, 27.01.2010 08:33
Kontaktdaten:

[gelöst] Formularfeld in Calc mit Makro sichtbar/unsichtbar schalten

Beitrag von Rupp »

Guten Morgen,

ich versuche jetzt schon seit gefühlten Ewigkeiten in Calc Formularfelder per Makro unsichtbar, bzw. sichtbar zu machen.
Ich habe mehrere Tabellenblätter, die jeweils die vier gleichen Datums- und Uhrzeit-Felder haben. In jedem Sheet heißen die Felder immer gleich. Das Formular heißt auch in allen Sheets immer gleich: "Formular".

Das Makro darf immer nur im gerade aktiven Sheet die diese 4 bestimmten Felder sichtbar/unsichtbar schalten. Auf allen anderen Sheets muss es bleiben wie es ist.

Ich habe es aber bisher nicht einmal auf einem einzigen Sheet auch nur ein Feld sichtbar, bew. unsichtbar zu machen. Alles was ich im Netz gefunden habe, scheint sich auf Makros für Base zu beziehen.

Versucht habe ich bisher solche Sachen wie:

Sub Visible
oDoc = thisComponent
oController = oDoc.getCurrentController()
oform=odoc.drawpage.forms.getbyname("Formular")
oKontroll = oForm.getByName("Schaltfläche 1")
oKView = oController.getControl(oKontroll)
oKView.visible = false
end sub

Als Fehlermeldung bekomme ich dann "Eigenschaft oder Methode nicht gefunden: drawpage."

Wer weiß wie so was geht? Bin da für jede Hilfe sehr dankbar :-)

Beste Grüße

Rupp
Zuletzt geändert von Rupp am Do, 01.04.2021 09:50, insgesamt 4-mal geändert.
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Formularfeld mit Makro sichtbar/unsichtbar schalten

Beitrag von Stephan »

schaust Du z.B. hier:
viewtopic.php?f=18&t=66049&p=257347#p257347

und wendest das sinngemäß an, dann müsste, für die Tabelle mit Index 0, das hier rauskommen (nicht getestet):

Code: Alles auswählen

Sub Visible()
	tc0 = ThisComponent.Sheets(0)
	oKontroll = tc0.Drawpage.Forms.getByName("Formular").getByName("Schaltfläche 1")
	oKontroll.enableVisible = False
End Sub

Warum ist das so?
Im Unterschied zu anderen Dokumenttypen haben Tabellendokumente in OO/LO immer genau eine drawpage pro Tabellenblatt. Objektbezug ist also nicht das Dokumentobjekt, sondern das jeweilige Tabellenblatt.


Gruß
Stephan
Rupp
**
Beiträge: 46
Registriert: Mi, 27.01.2010 08:33
Kontaktdaten:

Re: Formularfeld mit Makro sichtbar/unsichtbar schalten

Beitrag von Rupp »

Dankeschön Stephan,

das war jetzt aber wirklich eine schnelle und sofort hilfreiche Antwort - wenn man weiß "wie", ist es also ganz einfach!

Habe das jetzt so abgewandelt, dass es immer auf das gerade aktive Sheet angewandt wird:

Code: Alles auswählen

Sub Visible()
	oDoc = ThisComponent
	oActiveSheet = oDoc.currentController.ActiveSheet
	oKontroll = oActiveSheet.Drawpage.Forms.getByName("Formular").getByName("Datumsfeld 1")
	oKontroll.enableVisible = False
End Sub
Beste Grüße

Rupprecht
Antworten