BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

LOB, Beschriftungsfeld mit Makro ändern

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

LOB, Beschriftungsfeld mit Makro ändern

Beitrag von Frewer » Mi 28. Jul 2021, 18:34

Hallo,

hänge mal wieder beim Programmieren eines Makros in meiner Datenbank "Komponenten" fest. Die Datenbank beinhaltet die Informationen meiner Bauteile wie "elektr Bauteildaten, Stückzahl vorhanden, etc.". Das Formblatt "Eingabe" habe ich an einen Bauteiltyp notgedrungener Weise angepasst. Es beinhaltet String-Felder zusammen mit den jeweiligen Beschriftungsfeldern (BFeld). Nun möchte ich die Beschriftung einzelner Felder anpassen, da der Wert zwar gleicher Art, aber die Beschriftung des Wertes anders ist. zB. BFeld heißt original "Ube", gebe ich die Werte eines FET ein, dann sollte das BFeld "Ug" heißen. Ich versuche abhängig von einem Feld, das den Typ des Bauteiles enthält das BFeld zu ändern.
Mein Makro:
Beim Fokusverlust des Feldes "Bauteil" wird der Makro "Test" aufgerufen, da abhängig vom Bauteil das BFeld an anderer Stelle geändert werden soll. Nur wie funktioniert das? Meine Versuche sind derzeit alle schiefgelaufen.

Sub Test
Dim oController as object, DIM oDoc as object, DIM oDrawpage as object, DIM oForm as object
DIM oField as Object
DIM var1 as String
DIM Label as string

oDoc = thisComponent
oController = oDoc.getCurrentController()
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Eingabe") ' mein Formular
var1=oForm.findColumn("Typ") ' Bauteiltyp
REM Feststellen des Typs
if oForm.getstring(var1)="BIP" or oForm.getstring(var1)="FET" THEN

Bis hierher geht alles. Wie kann ich nun den Text des BFeldes eines Feldes "lblUcb" das zZt "Ube" heißt in "Ug" ändern?
lblUcb="Ug"
Mit meiner Methode geht nix! Fehlermeldung ist "Variable nicht belegt".
In der Dok wird das BFeld mit "Label" bezeichnet, aber leider kein Bsp. genannt, wie man den Label ausliest.

Gibt es Hilfe?
Gruß Frewer

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: LOB, Beschriftungsfeld mit Makro ändern

Beitrag von gogo » Fr 30. Jul 2021, 10:21

Code: Alles auswählen

oForm.getByName("Ube").setTitle("Neuer Text")
(frei aus dem Gedächtnis :oops: )
sollte gehen
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

Re: LOB, Beschriftungsfeld mit Makro ändern

Beitrag von Frewer » Fr 30. Jul 2021, 20:36

Vielen Dank für Deinen Tip. Aber er geht leider nicht. Meldet Fehler "Eigenschaft oder Methode nicht gefunden: setTitle." Habe dann setLabel ausprobiert, geht aber auch nicht (gleiche Fehlermeldung). Nächster Verrsuch war, den Text des Beschriftungsfeldes über msgBox oField .getcurrentvalue() mit oField=oForm.getByName("Ube" anzuzeigen. Das funktioniert für den Ert des Datenfeldes nicht des BFeld.
Nun steht im LO-Buch, dass das BFeld in Englisch "Label" heißt und "L/S" ist (lesen/schreiben?). Nur leider steht nirgendwo, wie das BFeld gelesen wird und schon garnicht, wie es beschrieben wird.
Fällt Dir noch eine Lösung ein?
Frewer

Wanderer
Beiträge: 895
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: LOB, Beschriftungsfeld mit Makro ändern

Beitrag von Wanderer » Sa 31. Jul 2021, 07:30

Kann das gerade nicht probieren,
klingt aber nach der klassischen anwendung für MRI(), da Du den Ansatzpunkt weisst:

Code: Alles auswählen

oField=oForm.getByName("Ube")
Danach ein MRI(oField) in den Code einsetzen und nachsehen, welche Methoden oder Eigenschaften Dir zur Verfügung stehen.

Mfg, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

Re: LOB, Beschriftungsfeld mit Makro ändern

Beitrag von Frewer » Sa 31. Jul 2021, 10:35

Hallo Jörn,
vielen Dank für den Tip, mit MRI(oField) die möglichen Funktionen zu finden. Leider ist bei mir wohl MRI() nicht integriert und mehrere Versuche mit dem ExtManager das heruntergeladene MRI() zu integrieren scheitern (es sieht so aus als ob die ZIP Datei fehlerheft ist. Meldung).
Gruß Frewer

Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

Re: LOB, Beschriftungsfeld mit Makro ändern

Beitrag von Frewer » Sa 31. Jul 2021, 11:12

Hallo,
nach Ausprobieren funktioniert Xray(oField). Es zeigt mir alle Eigenschaften zu meinem BFeld an (Name, Label). D.h. mit oField habe ich mein gewünschtes BFeld angesprochen.
Ich finde auch zugehörige Methoden wie zB setName() aber das will ich ja nicht sondern ich möchte nur den "Label" ändern, finde aber kein "setLabel()" .
Bei Datenfeldern suche ich mit getByName() die Spalte (also auch das Feld) und schreibe (mit oForm.updateString()) dann in das Datenfeld. Warum geht das nicht bei BFeldern? Das BFeld existiert und ist mit oField angesprochen und jetzt muss ich doch nur in das Feld "Label" einen String reinschreiben. Den Haken verstehe ich im Moment einfach nicht, weil ich keine Methode finde, um den Label zu beschreiben obwohl er offensichtlich beschreibbar ist.

Gruß Frewer

Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

Re: LOB, Beschriftungsfeld mit Makro ändern

Beitrag von Frewer » Sa 31. Jul 2021, 12:27

Hallo,
habe jetzt eine zwar umständliche aber immerhin funktionierende Methode gefunden.
Ich lege ein 2tes BFeld an, das lblUg heißt und den Label UG hat und nicht sichtbar ist.
Im Makro gebe ich nun die Zeilen ein:
oForm.getName("Ube").enableVisible.false 'Markierfeld unsichtbar
oForm.getName("Ug").enableVisible.true 'Markierfeld sichtbar
Das funktioniert, muss nur drandenken, diese Änderung wieder aufzuheben.

Gruß Frewer

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: LOB, Beschriftungsfeld mit Makro ändern

Beitrag von RobertG » Sa 31. Jul 2021, 17:21

Der angezeigte Text ist "Label"
Also:

Code: Alles auswählen

oForm.getByName("Beschriftungsfeld").Label = "Ug"
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Frewer
Beiträge: 29
Registriert: Mo 1. Feb 2021, 19:23

Re: GELÖST11 LOB, Beschriftungsfeld mit Makro ändern

Beitrag von Frewer » So 1. Aug 2021, 14:29

Vielen Dank Robert. Punkt gelöst.
Gruß
Frewer

F3K Total
Beiträge: 2409
Registriert: So 10. Apr 2011, 10:10

Re: LOB, Beschriftungsfeld mit Makro ändern

Beitrag von F3K Total » Di 10. Aug 2021, 10:11

Moin,
ich hätte da einen Vorschlag, bei dem man ohne Makro auskommt.
Statt eines Labelfeldes, verwendet man ein Textfeld, das ohne Rahmen, mit der Hintergrundfarbe des Formulares eingefärbt ist. Dieses befüllt man aus eine Abfrage, die eben den Bezug zwischen TEIL und LABEL herstellt.
Ein Beispiel mit zwei möglichen Varianten hängt an.

Gruß R
Dateianhänge
Beschriftungsfeld_per_Abfrage_anpassen.zip
(16.81 KiB) 97-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten