Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

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

Moderator: Moderatoren

laura36
**
Beiträge: 27
Registriert: Fr, 24.03.2006 16:29

Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

Beitrag von laura36 »

Hallo Liste,

nach langem ergebnislosen Suchen wende ich mich nun an euch:
Ich habe in einer Adressverwaltung ein Formular auf einem Textdokument basieren. Jetzt sollen abhängig von bestimmten Schaltern Teile des Formulars ausgetauscht werden, um nicht mehrere Formulare verwenden zu müssen.

* OpenOffice 2.0.4

Zwei Möglichkeiten gäbe es:

1. Mehrere Formulare, die je nach Gegebenheit sichtbar gemacht werden
2. die einzelnen Kontrollfelder ansprechen

ersteres scheint, was ich bisher gefunden habe nicht zu gehen. Zweites sollte gehen, ist mir aber in Formularen bisher nicht gelungen - nur in Dialogen.

Folgendes funktioniert nicht:

Sub HideCtrlField
oDoc = ThisComponent
oCtrl=oDoc.getcurrentcontroller()
oForm = oDoc.DrawPage.Forms.GetByName("result")
oSubForm = oForm.GetByName("contacts")
oCtrl = oSubForm.GetByName("test")
oCtrl.Visible = 0
End Sub

Im englischsprachigen Forum hab ich das gefunden:

Sub Main
doc=thiscomponent
view=doc.getcurrentcontroller()
' first control on first form
oCtrl=doc.getdrawpage().getforms().getbyindex(0).getbyindex(0)
vCtrl = View.GetControl(form)
octrl.setvisible(false)
End Sub

der Code ist erstens comisch, zweites funktioniert er nicht.
setvisible(false) finde ich auch nirgends als Eigenschaft.

Wer kann mir helfen?


grüße laura
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

Beitrag von komma4 »

der Code aus dem engl. Forum ist nicht korrekt; Folgendes funktioniert hier (aber nicht, wenn das Formular im Entwurfsmodus ist!)

Code: Alles auswählen

Sub hideCtrlField

doc=thiscomponent
view=doc.getcurrentcontroller()
' first control on first form
' oCtrl=doc.getdrawpage().getforms().getbyindex(0).getbyindex(0)

' first form, control by name
oCtrl=doc.getdrawpage().getforms().getbyindex(0).getbyName( "erstes" )

vCtrl = View.GetControl(oCtrl)
vCtrl.setvisible(false)
End Sub
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
laura36
**
Beiträge: 27
Registriert: Fr, 24.03.2006 16:29

Re: Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

Beitrag von laura36 »

Hi Komma4,

danke für die Antwort. Dein Code sieht definitiv besser aus ;-) aber funktioniert bei mir leider nicht - im exakt gleichen Szenario. Fehler ist "Eigenschaft oder Methode nicht gefunden".


Sub hideCtrlField
doc=thiscomponent
view=doc.getcurrentcontroller()
oCtrl=doc.getdrawpage().getforms().getbyindex(0).getbyName( "name" )
' msgbox view.dbg_methods
vCtrl = View.GetControl(oCtrl)
vCtrl.setvisible(false)
End Sub

wenn ich mir versuche mit dbg_methods oder properties näheres zu view anzeigen zu lassen kommt übrigens die gleiche Fehlermeldung.

Ich versuch's dann mal mit oOO 2.2, vielleicht gab's da eine Veränderung. Oder hat noch jemand eine Idee?

grüße
laura
laura36
**
Beiträge: 27
Registriert: Fr, 24.03.2006 16:29

Re: Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

Beitrag von laura36 »

laura36 hat geschrieben:Ich versuch's dann mal mit oOO 2.2, vielleicht gab's da eine Veränderung.
Komisch, auch mit 2.2.1 (debian-Pakete von der oOO-Seite) funktioniert es bei mir nicht. Was ist anders?

grüße
laura
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

Beitrag von komma4 »

Ich verstand nach Deinem ersten Posting: ein Formular in einem Writer-Dokument...korrekt?

Bei welcher Zeile kommt die Meldung?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

Beitrag von turtle47 »

Hi Laura,

suchst Du sowas?

Code: Alles auswählen

Sub ButtonAusblenden
   oDoc = thisComponent
   oController = oDoc.getCurrentController()
   oform=odoc.drawpage.forms.getbyindex(0)
   oKontroll1 = oForm.getByName("PushButton1")' Name der Schaltfläche
   oKView = oController.getControl(oKontroll1)
   oKView.visible = false ' einschalten = true
End Sub
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
laura36
**
Beiträge: 27
Registriert: Fr, 24.03.2006 16:29

Re: Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

Beitrag von laura36 »

komma4 hat geschrieben:Ich verstand nach Deinem ersten Posting: ein Formular in einem Writer-Dokument...korrekt?
ich denke schon... damit wir uns sicher richtig verstehen: ein Writer-Dokument mit Drawpage und Forms und Subforms. Kein Calc-Dokument, kein Writer-Dokument im Datenbankcontainer...
komma4 hat geschrieben:
Bei welcher Zeile kommt die Meldung?
bei:

Code: Alles auswählen

vCtrl = View.GetControl(oCtrl)
Das Controllelement selbst oCtrl wird noch angesprochen, ich kann mit

Code: Alles auswählen

msgbox oCtrl.text 
Text auslesen.
laura36
**
Beiträge: 27
Registriert: Fr, 24.03.2006 16:29

Re: Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

Beitrag von laura36 »

Hi Komma, hi Jürgen,

vielen Dank, jetzt funktionieren beide Versionen. Ich komm nicht drauf, was ich beim ersten Versuch falsch gemacht hatte. Ich hab Jürgens Variante ausprobiert, hat geklappt, und dann ging die von Komma auch. Der Teufel versteht es. Am Ende war's ein blöder Tipfehler ...

Danke auf jeden Fall. Das ist genau das, was ich gesucht habe.

grüße
Laura
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

Beitrag von komma4 »

laura36 hat geschrieben:[...]hab Jürgens Variante ausprobiert, hat geklappt, und dann ging die von Komma auch
:-) Wundert mich nicht, da sie "eigentlich" identisch sind....


Hattest Du vielleicht den Entwurfsmodus an....? Der Code versagte zunächst ja beim VIEW...., und der ist anders, wenn "Entwurf" aktiv ist.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

Beitrag von turtle47 »

Hallo Zusammen,

@Winfried
Hattest Du vielleicht den Entwurfsmodus an....? Der Code versagte zunächst ja beim VIEW...., und der ist anders, wenn "Entwurf" aktiv ist.
Wenn der Entwurfmodus noch aktiv ist, dann passiert gar nichts. Es kommt auch keine Fehlermeldung.
Habe das gerade mal ausprobiert.

Aber die Hauptsache ist ja, dass es jetzt funktioniert.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Gabriel123
***
Beiträge: 65
Registriert: Mo, 14.01.2008 19:31

Re: Unterformular bzw. Kontrollfeld verstecken / unsichtbar mac

Beitrag von Gabriel123 »

Hallo,

habe gerade versucht den Code zu übernehmen. Habe es mit einem ImageButton probiert. Komischerweise wird der Button nicht unsichtbar sondern nur nicht mehr anklickbar?! ist das normal für visible false? Eigentlich sollte der Button doch ganz weg sein.

Danke!
Antworten