Seite 1 von 1

LOB, Beschriftungsfeld mit Makro ändern

Verfasst: Mi 28. Jul 2021, 18:34
von Frewer
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

Re: LOB, Beschriftungsfeld mit Makro ändern

Verfasst: Fr 30. Jul 2021, 10:21
von gogo

Code: Alles auswählen

oForm.getByName("Ube").setTitle("Neuer Text")
(frei aus dem Gedächtnis :oops: )
sollte gehen

Re: LOB, Beschriftungsfeld mit Makro ändern

Verfasst: Fr 30. Jul 2021, 20:36
von Frewer
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

Re: LOB, Beschriftungsfeld mit Makro ändern

Verfasst: Sa 31. Jul 2021, 07:30
von Wanderer
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

Re: LOB, Beschriftungsfeld mit Makro ändern

Verfasst: Sa 31. Jul 2021, 10:35
von Frewer
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

Re: LOB, Beschriftungsfeld mit Makro ändern

Verfasst: Sa 31. Jul 2021, 11:12
von Frewer
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

Re: LOB, Beschriftungsfeld mit Makro ändern

Verfasst: Sa 31. Jul 2021, 12:27
von Frewer
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

Re: LOB, Beschriftungsfeld mit Makro ändern

Verfasst: Sa 31. Jul 2021, 17:21
von RobertG
Der angezeigte Text ist "Label"
Also:

Code: Alles auswählen

oForm.getByName("Beschriftungsfeld").Label = "Ug"

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

Verfasst: So 1. Aug 2021, 14:29
von Frewer
Vielen Dank Robert. Punkt gelöst.
Gruß
Frewer

Re: LOB, Beschriftungsfeld mit Makro ändern

Verfasst: Di 10. Aug 2021, 10:11
von F3K Total
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