Seite 1 von 4
Formularfeld sichtbar schalten
Verfasst: Fr 18. Apr 2014, 18:02
von pingpong
Hallo,
Ich möchte ein Formularfeld (das Tabellen-Steuerelement) mit einer umschaltbaren Schaltfläche sichtbar bzw unsichtbar schalten. Hier konnte ich erste Ansätze finden, leider komme ich aber jetzt nicht weiter:
http://www.libreoffice-forum.de/viewtop ... 10&t=12591
Re: Formularfeld sichtbar schalten
Verfasst: Fr 18. Apr 2014, 19:50
von RobertG
Hallo pingpong,
Code: Alles auswählen
SUB UnsichtbarAnAus
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
oDoc=thisComponent
oDrawpage=oDoc.Drawpage
REM Lage des Feldes in dem entsprechenden Formular aufsuchen
oForm=oDrawpage.Forms.getByName("Formular")
oFeld=oForm.getByName("Tabel")
oDocCrl = ThisComponent.getCurrentController()
oCtlView = oDocCrl.GetControl(oFeld)
IF oCtlView.isVisible = false THEN
oCtlView.Visible=true
ELSE
oCtlView.Visible=false
END IF
END SUB
Das Formular heißt "Formular", das Tabellenkontrollfeld "Tabel". Damit habe ich das gerade erfolgreich geschafft.
Gruß
Robert
Re: Formularfeld sichtbar schalten
Verfasst: Fr 18. Apr 2014, 20:56
von pingpong
Läuft seidenweich.
Vielen Dank!
Und ich wette, du schreibst im Kopf auch schnell ein Makro, wenn du den Mülleimer an die Straße stellen sollst

Und jetzt brauch ich das noch andersrum, d.h. beim Öffnen des Formulars ist das Tabellenfeld unsichtbar und erst wenn ich umschalte wird es sichtbar. Also habe ich die true und false vertauscht, passiert aber keine Änderung.
Re: Formularfeld sichtbar schalten
Verfasst: Fr 18. Apr 2014, 22:14
von RobertG
Hallo pingpong,
um das direkt beim Öffnen auf unsichtbar geschaltet zu haben musst Du das Makro nur mit oCtlView.Visible = false an das Öffnen des Formulars binden.
Code: Alles auswählen
SUB UnsichtbarFormularstart
DIM oDoc AS OBJECT
DIM oDrawpage AS OBJECT
DIM oForm AS OBJECT
DIM oFeld AS OBJECT
oDoc=thisComponent
oDrawpage=oDoc.Drawpage
REM Lage des Feldes in dem entsprechenden Formular aufsuchen
oForm=oDrawpage.Forms.getByName("Formular")
oFeld=oForm.getByName("Tabel")
oDocCrl = ThisComponent.getCurrentController()
oCtlView = oDocCrl.GetControl(oFeld)
oCtlView.Visible=false
END SUB
Da musst Du einmal testen, bei welcher Eigenschaft des Formulars das Tabellenkontrollfeld nicht wieder auftaucht. Vermutlich reicht es es, das Ereignis "Beim Laden" damit zu verbinden.
Gruß
Robert
Re: Formularfeld sichtbar schalten
Verfasst: Sa 19. Apr 2014, 06:07
von pingpong
"beim Laden" war schon vergeben mit einem Makro für einen neuen Datensatz. Es läuft jetzt mit "vor dem Zurücksetzen" prima.
Re: Formularfeld sichtbar schalten
Verfasst: Sa 19. Apr 2014, 09:40
von RobertG
Hallo pinpong,
Du kannst Doch mehrere Makros an das gleiche Ereignis binden:
Code: Alles auswählen
SUB BeimLadenAusfuehren
NeuerDatensatz 'Startet das Makro NeuerDatensatz.
UnsichtbarFormularstart 'Startet das Makro UnsichtbarFormularstart.
END SUB
Aber wenn's so auch funktioniert ist das ja egal.
Gruß
Robert
Re: Formularfeld sichtbar schalten
Verfasst: Sa 19. Apr 2014, 09:46
von F3K Total
Hi,
ein kleiner Tipp:
das Tabellenkontrollfeld hat auf dem Reiter Allgemein die Eigenschaft "Sichtbar". Setzt man sie im Formularentwurfsmodus auf "Nein", ist das Feld beim Öffnen des Formulares ausgeblendet und kann dann mit diesem Makro über den Button wieder ein/ausgeblendet werden. So wird kein zusätzliches Makro benötigt.
Code: Alles auswählen
Sub UnsichtbarAnAus
oForm = oDrawpage.Forms.getByName("Formular")
oFeld = oForm.getByName("Tabel")
IF oFeld.enableVisible = false THEN
oFeld.enableVisible = true
ELSE
oFeld.enableVisible = false
END IF
end sub
HTH R
Re: Formularfeld sichtbar schalten
Verfasst: Sa 19. Apr 2014, 10:34
von RobertG
Hallo R,
genau damit hatte ich das gestern erst noch probiert - und dann den anderen Weg zum Umschalten rausgesucht, weil irgendetwas nicht lief. Das Tabellenkontrollfeld blieb einfach sichtbar.
Jetzt gerade habe ich Deinen Code einfach noch einmal kopiert - tat's. Keine Ahnung, wo gestern der Haken war.
Gruß
Robert
Re: Formularfeld sichtbar schalten
Verfasst: Sa 19. Apr 2014, 10:42
von F3K Total
Hallo Robert,
- die Eigenschaft des Models ist .enableVisible
- die Eigenschaft des Controls .visible
Das was man auf dem Reiter Allgemein ändert, ist die Eigenschaft des Models.
Gruß Rik
Re: Formularfeld sichtbar schalten
Verfasst: Sa 19. Apr 2014, 12:11
von pingpong
Richtig gut! Das mit zwei oder mehr Makros wußte ich garnicht. Hat mich schonmal gestört, dass ich verschiedene Ereignisse wählen musste. Auf "hintereinanderhängen" bin ich garnicht gekommen. In meinem Hirn müssen wohl noch ein paar mehr Makrosynapsen wachsen Danke!