Libereoffice Base - Textfelder ein und ausblenden

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Libereoffice Base - Textfelder ein und ausblenden

Beitrag von RobertG »

Hallo dave637070,

warum willst Du die Textfelder ausblenden? Hast Du zu wenig Platz im Formular und dadurch Felder übereinander liegen? Ich würde die Felder, die nicht erwünscht sind, auf inaktiv schalten.

Bei den Makros ist wohl

Code: Alles auswählen

oField.EnableVisible = False
der Weg zum Ausblenden von Feldern.

Gruß

Robert
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Libereoffice Base - Textfelder ein und ausblenden

Beitrag von Stephan »

oField ist wohl der Name des zu auszublendenden Feldes.
Nein, oField, ist das Object des auszublendenden Feldes (eine Variable die das Object des Feldes enthält).
1.) Wie stelle ich die Beziehung zwischen dem Listenfeld und her. Es soll im Endeffekt abhängig nach dem Wahl etwas ausblenden.
im Eigenschaftsdialog des Listenfeldes gibt es im Register "Ereignisse" diverse Ereignisse dehnen Du das Makro zuordnen kannst/musst das das Ausblenden des anderen Feldes erledigt. z.B. ordne das dem Ereignis "Modifiziert" zu.
2.) Kann ich das auf mehrere Felder gleichzeitig anwenden?
Ja, indem Du in dem Makro mehrere Felder ansprichst/ausblendest.


Wenn Du selbst hier den Code postest den Du schon hast, ist Dir sicher auch jemand behilflich da zu ergänzen. Es ist als Antworter mühevoll sich nur zum Zwecke der Antwort den kompletten Code selbst ausdenken zu müssen, wenn der Kern der Antwort eigentlich nur ein paar Code-Zeilen umfasst die aber ohne Bezug zum Rest schwer zu verstehen sind.

Gruß
Stephan
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Libereoffice Base - Textfelder ein und ausblenden

Beitrag von RobertG »

Hallo Dave,

zuerst einmal musst Du an das Listenfeld ran:

Code: Alles auswählen

SUB Ausblenden(oEvent AS OBJECT)
oListField = oEvent.Source.Model
oForm = oListField.Parent
stListValue = oListField.CurrentValue
END SUB
Das Makro wird an das Listenfeld gebunden. Die Änderung des Inhaltes soll das Makro auslösen. Über das auslösende Element ermittelst Du das Listenfeld und das Formular, in dem das Listenfeld und (hoffentlich) Deine Textfelder liegen. Den Wert des Listenfeldes liest Du mit CurrentValue aus. Achtung: Hier verhalten sich LO und AOO unterschiedlich. Während LO den Wert ausliest, der an die Datenbank weitergegeben wird, liest AOO den Wert der Anzeige aus. Siehe hierzu das Handbuch Base.

Jetzt gibt es verschiedene Möglichkeiten, die Felder, die ein- bzw. ausgeblendet werden sollen, zu kennzeichnen. Du kannst die Namen der Felder in Arrays innerhalb eines Makros zusammenfassen und dann über eine Schleife die Felder mit EnableVisible = True kennzeichnen, die in einem Array stecken und die mit EnableVisible = False die, die in einem zweiten Array stecken. Welche dieser Arrays genutzt werden machst Du über die Auswahl des Wertes des Listenfeldes klar.

Wenn Du so etwas nicht hart in dem Makro eingeben willst, so bietet sich bei den Feldern die Eigenschaft "Tag" an: oField.Tag speichert die Zusatzinformationen. Du könntest also in die Zusatzinformationen des Listenfeldes die Felder gruppiert mit Namen eintragen, die bei einer bestimmten Auswahl angezeigt werden sollen. Daraus machst Du später im Makro Arrays. Oder Du könntest die Felder kennzeichnen, die bei bestimmten Auswahlen angezeigt werden sollen. Dann werden alle Felder durchsucht und nur die angezeigt, die in den Zusatzinformationen einen entsprechenden Vermerk anzeigen.

Du musst natürlich wissen, wie Du das jeweils in Arrays übertragen kannst oder Schleifen ablaufen lassen kannst. Schau Dir dazu einfach einmal im Handbuch im Makrokapitel die "Eingabekontrolle bei Formularen" an. Da werden je nach Auswahl Felder als notwendig gekennzeichnet - ist im Prinzip ein ähnliches Vorgehen.

Also: Es geht auch mit vielen Feldern, aber Du brauchst etwas Makrowissen. Versuche es erst einmal mit dem Handbuch und melde Dich dann wieder.

Gruß

Robert
Antworten