🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Formularfeld sichtbar schalten

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Formularfeld sichtbar schalten

Beitrag von Gundo » Sa 25. Feb 2017, 16:31

Hallo,

Ich verwende unter Linux-Mint 18.1 "LibreOffice 5.1.6.2", und versuche eine Art Karteikasten (ENGLISCH-DEUTSCH) mit "base" zu basteln.

Soweit komme ich klar. Per Button soll das Feld: "FormatiertesFeld1" sichtbar gemacht werden. Das Formular nennt sich "Grundwortschatz". Dem Button habe ich ein Makro zugeordnet mit folgendem Inhalt: (Das o.g. Beispiel liegt dem zugrunde)

Code: Alles auswählen

Sub UnsichtbarAnAus
   oForm = oDrawpage.Forms.getByName("Grundwortschatz")
   oFeld = oForm.getByName("FormatiertesFeld1") 
    IF oFeld.enableVisible = false THEN
       oFeld.enableVisible = true
    ELSE
       oFeld.enableVisible = false
    END IF
end sub
Klicke ich mit der Maus auf dem Button erscheint: "BASIC-Laufzeitfehler. Objektvariable nicht belegt."
Markiert wird mir dann die Zeile: "oForm = oDrawpage.Forms.getByName("Grundwortschatz")".

Kann mir da jemand weiterhelfen ?

Gruß Gundo

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Formularfeld sichtbar schalten

Beitrag von F3K Total » Sa 25. Feb 2017, 16:39

Hi,
öffne das Formular im Bearbeitungsmodus (rechte Maus-> Bearbeiten) und dann den Formularnavigator, wie heißt dein Hauptformular?
Vermutlich nicht Grundwortschatz sondern MainForm.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Formularfeld sichtbar schalten

Beitrag von Gundo » Sa 25. Feb 2017, 16:54

Stimmt ... hab's korrigiert.

Code: Alles auswählen

Sub UnsichtbarAnAus
   oForm = oDrawpage.Forms.getByName("MainForm")
   oFeld = oForm.getByName("FormatiertesFeld1") 
    IF oFeld.enableVisible = false THEN
       oFeld.enableVisible = true
    ELSE
       oFeld.enableVisible = false
    END IF
end sub
Aber die Fehlermeldung ist noch immer identisch.

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Formularfeld sichtbar schalten

Beitrag von F3K Total » Sa 25. Feb 2017, 16:58

Dann lade die DB, ggf. verfremdet, hier hoch, sonst fischen wir im Trüben. Geht beim Bearbeiten eines Beitrages unten->Reiter Dateianhänge.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Formularfeld sichtbar schalten

Beitrag von Gundo » Sa 25. Feb 2017, 17:26

Ok, hier ist ein kleines Beispiel mit veränderten Settings.
Dateianhänge
base.zip
(20.88 KiB) 174-mal heruntergeladen

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Formularfeld sichtbar schalten

Beitrag von F3K Total » Sa 25. Feb 2017, 17:38

Hi, es fehlt die Definition von oDrawpage:

Code: Alles auswählen

Sub UnsichtbarAnAus
   oDrawpage = ThisComponent.Drawpage
   oForm = oDrawpage.Forms.getByName("MainForm")
   oFeld = oForm.getByName("txtDE-Wort/Satz 1") 
    IF oFeld.enableVisible = false THEN
       oFeld.enableVisible = true
    ELSE
       oFeld.enableVisible = false
    END IF
end sub
Gruß R

EDIT
Da bei deinem Code der Name des Textfeldes im Makro steht, müsstest du für jedes weitere Feld ein neues Makro schreiben.
Es geht auch anders, mit nur einem Makro für alle vier Schaltflächen:
In die Zusatzinformation einer Schaltfläche kann man, z.B. per Semikolon getrennt, die Namen der ein- oder auszublendenden Kontrollfelder hinterlegen -> klicke die Schaltfläche im Formularnavigator an, markiere sie, rechte Maustaste, Eigenschaften... Reiter Allgemein, etwas weiter unten:
ZI.png
ZI.png (7 KiB) 3557 mal betrachtet
Das Makro:

Code: Alles auswählen

Sub UnsichtbarAnAus (oEvent)
   oButton = oEvent.source.model
   sFields = oButton.tag
   aFields = split(sFields,";")
   oDrawpage = ThisComponent.Drawpage
   oForm = oDrawpage.Forms.getByName("MainForm")
   IF oButton.Label = "DE-ANZEIGEN" THEN
       oButton.Label = "DE-AUSBLENDEN"
       oButton.BackgroundColor = 16763904 'Orange
       for i = 0 to 1
           oFeld = oForm.getByName(aFields(i))
           oFeld.enableVisible = true
       next i
   ELSE
       oButton.Label = "DE-ANZEIGEN"
       oButton.BackgroundColor = 52224 'Grün 3
       for i = 0 to 1
           oFeld = oForm.getByName(aFields(i))
           oFeld.enableVisible = false
       next i
   END IF
end sub
liest diese Zusatzinformation mit

Code: Alles auswählen

oButton = oEvent.source.model
sFields = oButton.tag
aus, teilt den Text mit

Code: Alles auswählen

aFields = split(sFields,";")
wieder in zwei Teile und blendet dann mit der for...next Schleife jeweils das korrespondierende Text- und Beschriftungsfeld ein/aus.
Ausserdem wird der Text auf dem Button und seine Farbe sinngemäß angepasst.
Dateianhänge
Englisch-Grundwortschatz.zip
(23.07 KiB) 150-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Formularfeld sichtbar schalten

Beitrag von Gundo » Mo 27. Feb 2017, 10:56

Wow .... vielen vielen Dank für deine Mühe.

Wärst du mein Nachbar, würde ich erst mal zu einem Bier einladen: Bild

Leider hat mein Karteikartensystem eine Schwachstelle. Durch die Buttons ist eine ziemliche Mausklickerei nötig. Sinnvoll wäre es, wenn durch nur einen Button oder noch besser durch eine Taste (return? ) der nächste Datensatz aufgerufen würde, die Übersetzungen noch nicht sichtbar wären, dann aber durch das Drücken der gleichen Taste die Übersetzungen sichtbar würden. Und wiederum nach dem Drücken dieser Taste der nächste Datensatz aufgerufen würde mit erst mal verdeckten Übersetzungen. usw. Ist das möglich ?

Gruß Gundo

ps. Kann man dieses Forum durch eine kleine Spende unterstützen ?

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Formularfeld sichtbar schalten

Beitrag von F3K Total » Mo 27. Feb 2017, 17:32

Hallo Gundo,
wer weiß, vielleicht sind wir Nachbarn, wo wohnst Du?
Klar geht das, anbei eine geänderte Version. Ich habe in die Zusatzinformation aller Felder, die ein- bzw. ausgeblendet werden sollen, den Text AN_AUS eingetragen. Das Makro durchläuft alle Felder auf dem Formular und blendet genau die mit dieser Zusatzinformation ein- bzw. aus:

Code: Alles auswählen

Sub Navigieren (oEvent)
   oButton = oEvent.source.model
   oDrawpage = ThisComponent.Drawpage
   oForm = oDrawpage.Forms.getByName("MainForm")
   IF oButton.Label = "DE-ANZEIGEN" then
       oButton.Label = "NÄCHSTE KARTE"
       oButton.BackgroundColor = 16763904 'Orange
       for i = 0 to oForm.Count - 1
           oFeld = oForm.getByindex(i)
           if oFeld.tag = "AN_AUS" then oFeld.enableVisible = true
       next i
   ELSE 
       oButton.Label = "DE-ANZEIGEN"
       oButton.BackgroundColor = 52224 'Grün 3
       for i = 0 to oForm.Count - 1
           oFeld = oForm.getByindex(i)
           if oFeld.tag = "AN_AUS" then oFeld.enableVisible = false
       next i
       if oform.islast then
           msgbox "Das war die letzte Karte"
           exit sub
       endif
       oForm.next
   ENDIF
end sub
Ausserdem springt es nach dem Einblenden auf den nächsten Datensatz und ändert Farbe und Text auf der Schaltfläche.

Gruß R
Dateianhänge
Englisch-Grundwortschatz.zip
(23.04 KiB) 157-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

Gundo
Beiträge: 53
Registriert: So 1. Jul 2012, 10:23

Re: Formularfeld sichtbar schalten

Beitrag von Gundo » Mo 27. Feb 2017, 18:11

Fantastisch !!!

Ich werde das Formular noch ein wenig "aufhübschen", größere Schrift ... vielleicht auch andere Farben. Die Buttons um die einzelnen Übersetzungs-Felder einzublenden mach ich auch noch rein. Kann man gut gebrauchen. Das versuche ich mal alleine hinzubekommen.

Woher hast du diese Programmierkentnisse ? Kann man wohl ohne gutes Englisch nicht lernen, oder ?

Ich wohne in D'Dorf-Rath.

Gruß Gundo

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Formularfeld sichtbar schalten

Beitrag von F3K Total » Mo 27. Feb 2017, 18:35

Gundo hat geschrieben:Woher hast du diese Programmierkentnisse ? Kann man wohl ohne gutes Englisch nicht lernen, oder ?
Denke doch, hier gibt es reichlich Info. Starbasic FAQ ist ein guter Einstieg.
Gruß R
PS: für ein Bier zu weit, 360 km ...
Windows 11: AOO, LO Linux Mint: AOO, LO


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten