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
🙏 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!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 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 sub
Mit 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 sub
Code: 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 sub
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.