🙏 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. 🤗

Formularnamen in Makro verwenden

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
althoffc
Beiträge: 5
Registriert: Mo 5. Mär 2012, 14:40

Formularnamen in Makro verwenden

Beitrag von althoffc » Mi 30. Jul 2014, 21:45

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

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

Re: Formularnamen in Makro verwenden

Beitrag von F3K Total » Fr 1. Aug 2014, 22:22

Hi,
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?
Nein, denn die Eigenschaften sind erst dann lesbar, wenn das Formular geöffnet (geladen) wurde.
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
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:

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
Dann kannst du die Formulare, auch nach dem Umbenennen mit diesem Makro öffen:

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
HTH R
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