BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makrogrundlagen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
prodosenbier
Beiträge: 6
Registriert: Mi 3. Okt 2012, 14:45

Makrogrundlagen

Beitrag von prodosenbier » So 18. Nov 2012, 16:31

Moin moin,

ich hab da mal zwei grundsätzliche Fragen zum Ansprechen von Objekten und Manipulation der Eigenschaften. Ich hänge da mal eine Testdatenbank an.

Beim Starten (Laden) des Formulars soll die Titelleiste gesetzt werden wie im Makro angegeben. Macht er aber nicht! Hinter der Schaltfläche hängt genau der gleiche Code, und schon funktioniert es.

Warum ich das frage? In meiner Datenbank habe ich z.Z. 8 Formulare, Ausgangspunkt ist das Startformular, da funktioniert das nicht. Bei allen weiteren von diesem Startformular aus aufgerufenen und den darunter liegenden Formularen funktioniert es. Bei einem habe ich ein seltsames Verhalten: Blende ich bei Haupt und Unterformular von Beginn an den standardmäßigen Navigationsbereich aus, funktioniert das auch nicht, laß ich ihn im Hauptformular aktiviert, funktioniert es. Wieso setzt das Makro im Beispiel den Titel beim Laden nicht?

Abschließend noch eine Frage zu den Objekteigenschaften: Ich suche mich bei jedem Objekt, das ich durch Makrocode manipulieren will tot, wie die jeweilige Eigenschaft heißt, meist finde ich das nur durch Code lesen in anderen Makros heraus. Beispiel? Ein Feld soll deaktivert sein und durch Code aktiviert werden: heiß es jetzt
...active = true oder
...activated = true oder
...enabled = true?

Gelöst habe ich es dann über "AllowUpdates = false/true", womit ich aber nicht die gwünschte Eigenschaft anspreche. Ein weiteres Beispiel? Ich wäre nie daraufgekommen, dass man z.B. das Hinzufügen von Datensätzen in einem Formular mittels "...AllowInserts = false" unterbindet. Ich hätte es mit "AllowInsert" versucht :o . Wo kann man sich eine Übersicht ansehen, welches Objekt welche Eigenschaften besitzt?

Gruß

Torsten
Dateianhänge
Test.zip
Testdatenbank
(9.04 KiB) 195-mal heruntergeladen

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Makrogrundlagen

Beitrag von gogo » So 18. Nov 2012, 17:56

Hi,

ersetz' mal Dein Makro-Modul mit dem Code unten und dann, wenn Du im Datenbankfenster bist Menü: Extras/Anpassen, dort dann den Index "Ereignisse". Da gibt's dann das Ereignis "Dokument öffnen" diesem weist Du die "Sub start" zu, dann sollte sich das Formular öffnen. Den Formulartitel "erbt" das Startformular allerdings vom Datenbankfenster. Ein Klick auf die Schaltfläche erläutert das...

Code: Alles auswählen

Sub start
	Dim oDoc as Object
	oDoc = ThisComponent
	oDoc.setTitle "Das ist ein Test! (Sub start)"
	oDoc.CurrentController.connect
	oDoc.FormDocuments.getbyname("StartForm").open
End Sub

Sub form_open2
	Dim oDoc as Object
	oDoc = ThisComponent
	oDoc.setTitle "Das ist ein Test! (Sub form_open2)"
	print "oDoc.setTitle ""Das ist ein Test! (Sub form_open2)"""
	oDoc.CurrentController.Frame.setTitle("Neuer Titel (Sub form_open2)")
	print "oDoc.CurrentController.Frame.setTitle(""Neuer Titel) (Sub form_open2)"""
End Sub
Und zu den Objekteigenschaften/Methoden: Such Dir das Tool "xray" - mit dem Befehl

Code: Alles auswählen

xray(Objekt)
kannst Du bequem durch die Properties und Methoden surfen - umfassender ist die Api, da gibt's auch die Dokumentation was Du mit den Properties und Methoden anfagen kannst ;). Die API kann über die "Optionen" von xray verlinkt werden. - d.h. ein Klick auf einen Button öffnet dann im Internetbrowser die entsprechende API-Seite...
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

prodosenbier
Beiträge: 6
Registriert: Mi 3. Okt 2012, 14:45

Re: Makrogrundlagen

Beitrag von prodosenbier » Do 22. Nov 2012, 19:35

Vielen Dank gogo,

ich komme zur Zeit nicht so recht zu, mir das näher anzusehen, verdammte Rufbereitschaft ... aber nächste Woche geht das los.

Gruß

Torsten

prodosenbier
Beiträge: 6
Registriert: Mi 3. Okt 2012, 14:45

Re: Makrogrundlagen

Beitrag von prodosenbier » Mo 3. Dez 2012, 21:22

So, hab mir das ganze mal angesehen.

Die Geschichte mit dem Xray ist cool.

Das mit dem Startformular klapp aber nicht so wirklich. Schön ist, gogo hat mir gezeigt, wie man das Startformular gleich beim Starten der Datenbank einbindet, das war aber nicht die Frage, aber vielen Dank für den Code. Die Frage war ja, wieso Base den Code nicht ausführt, der beim "Formular laden" hinterlegt ist (siehe test.odb im Anhang).

Ich habe jetzt festgestellt, wenn das Formular als Datenquelle "Tabelle" hinterlegt hat, aber keine Tabelle ausgewählt wurde, wird der Code "beim Laden" nicht ausgeführt. Deshalb wird der Titel auch nicht gesetzt. Hinterlegt man aber irgendeine Tabelle, wird das Makro beim Laden des Formulars ausgeführt und der Titel gesetzt (siehe test_neu.odb im Anhang). Das ist der einzige Unterschied zw den beiden Datenbanken.
Dateianhänge
Test.zip
(18.49 KiB) 160-mal heruntergeladen

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Makrogrundlagen

Beitrag von RobertG » Mo 3. Dez 2012, 21:32

Hallo Torsten,

wenn Du "Beim Laden" auswählst, muss das Formular ja auch irgendeinen Inhalt aus der Datenbank einlesen können. Wenn das Formular keinen Inhalt hat, was soll es denn dann laden? Zur Not nimmst Du eine Dummytabelle - wie bereits gemacht, oder eine Dummyabfrage. Aber ohne Inhalt kann nichts geladen werden.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Makrogrundlagen

Beitrag von gogo » Mo 3. Dez 2012, 22:26

Das "Formular" das Du meintest ist ein Daten-Formular innerhalb des Writer-Dokumentes. Jedes Deiner Base-Formulare kann mehrere Daten-Formulare beinhalten, und Eriegnisse dieser Daten-Formulare beziehen sich klarerweise auf ebendiese.
Wenn Du einen Titel setzen willst, so musst Du dafür den jeweiligen Frame suchen, und dort den Titel ändern.

Wenn Du in Deinem Makro

Code: Alles auswählen

oDoc = ThisComponent
durch

Code: Alles auswählen

oDoc = ThisComponent.CurrentController.Frame
ersetzt, dann wir der Titel auch korrekt gesetzt, sonst wird nur der Dateinamen-Teil des Titels geändert.

Zuweisen des Makros:
Das von Dir beabsichtigte Titel-Ändern beim Öffnen des Writerformulars musst Du dann auch bei den Ereignissen des Writerformulars eintragen:
Extras/Anpassen/Ereignisse/"Dokument Öffnen"

Dann kannst Du auch die Datenquelle "Tabelle1" rausnehmen und die Verknüpfung des Makro mit "Beim Laden" entfernen.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
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