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 :lol:
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!