🍀 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!

🙏 DANKE >> << DANKE 🙏

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

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: 2515
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:
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 ❤️

Antworten