Hallo,
ich möchte per Makro Formulare öffnen bzw. wechseln. Das habe ich mit Hilfe verschiedener Forenbeiträge hinbekommen und es funktioniert so weit sehr gut.
Ich verwende die "Zusatzinformationen" (Tag) der Schaltfläche, um dort den Namen des zu öffnenden Formulars zu hinterlegen.
Mit der getByName()-Methode wird dann das entsprechende Formular geöffnet.
Es wird hier der Formularname verwendet, der in der Base-Anwendung für den Enduser unter "Formulare" sichtbar ist.
Wenn nun ein Enduser ein Formular umbenennt, funktionieren die Makros zum wechseln der Formulare nicht mehr.
Kann man nicht auf einen "internen" Namen der Formulare zurückgreifen, welcher zum Beispiel in den Eigenschaften eines Formulars (beim Bearbeiten) zu finden ist?
Dort wird ein Name nicht so schnell von Endusern geändert und die Makros laufen dadurch stabiler.
Gruß
Carsten
🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!
>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
Formularnamen in Makro verwenden
Re: Formularnamen in Makro verwenden
Hi,
Aber hier eine erste Alternative:
Wenn du in die Zusatzinformation (Tag) eine fortlaufende Nummer, beginnend bei 0, schreibst, werden die Formulare in der Reihenfolge, in der sie erstellt wurden, geöffnet:
Hier eine Lösung , die den internen Namen der Formulare verwendet, z.B. Obj12, Obj21 ... usw.:
Mit diesem Makro ermittelst du die persistenten Namen deiner Formulare, die du dann als Zusatzinformation in die jeweilige Schaltfläche legst:
Dann kannst du die Formulare, auch nach dem Umbenennen mit diesem Makro öffen:
HTH R
Nein, denn die Eigenschaften sind erst dann lesbar, wenn das Formular geöffnet (geladen) wurde.althoffc hat geschrieben:Kann man nicht auf einen "internen" Namen der Formulare zurückgreifen, welcher zum Beispiel in den Eigenschaften eines Formulars (beim Bearbeiten) zu finden ist?
Aber hier eine erste Alternative:
Wenn du in die Zusatzinformation (Tag) eine fortlaufende Nummer, beginnend bei 0, schreibst, werden die Formulare in der Reihenfolge, in der sie erstellt wurden, geöffnet:
Code: Alles auswählen
Sub S_open_Form(event)
dim i as integer
i = event.source.model.tag
oformdocuments = Thisdatabasedocument.formdocuments
oformdocuments.getByIndex(i).open
end subMit diesem Makro ermittelst du die persistenten Namen deiner Formulare, die du dann als Zusatzinformation in die jeweilige Schaltfläche legst:
Code: Alles auswählen
Sub S_analyse_persistant_Form_Name
oformdocuments = Thisdatabasedocument.formdocuments
oformdocumentsenumeration = oformdocuments.createEnumeration
while oformdocumentsenumeration.hasmoreelements
oformdocument = oformdocumentsenumeration.nextelement
inputbox ("Formularname: " & oformdocument.Name & chr(10) & chr(10)& "persistenter Name:","persistenten Formularnamen ermitteln",oformdocument.PersistentName)
wend
end subCode: Alles auswählen
Sub S_open_Form(event)
dim sNamePersistant as string
sNamePersistant = event.source.model.tag
oformdocuments = Thisdatabasedocument.formdocuments
oformdocumentsenumeration = oformdocuments.createEnumeration
while oformdocumentsenumeration.hasmoreelements
oformdocument = oformdocumentsenumeration.nextelement
if oformdocument.PersistentName = sNamePersistant then oformdocument.open
wend
end subWindows 11: AOO, LO Linux Mint: AOO, LO
An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️