BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> 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. 🤗
Text an Textfelder im Dokument übergeben
Text an Textfelder im Dokument übergeben
Hallo,
ich bin ein ziemlicher Neuling, was das Programmieren mit Basic und LibreOffice betrifft. Daher auch meine ziemlich ungelenke Frage:
Situation: Ich habe ein Textdokument mit Textfelder und einem Button. Per Klick auf den Button sollen die Ergebnisse unterschiedlicher Berechnungen an die Textfelder übergeben werden. Ich finde jedoch keinerlei Informationen, wie das innerhalb eines Textdokumentes funktioniert. Meist beschäftigen sich die Anleitungen die ich gefunden habe nur mit dem Arbeiten mit Dialogen.
Wie kann ich Textfelder direkt im Dokument ansprechen und ihnen Text übergeben? Und weiter - Wo kann ich mich denn informieren, wie man Makros von Grund auf, gut erläutert, programmieren lernt? (nur damit ich euch hier nicht wieder mit solch geschwurbelten Fragen nerve!)
Vielen Dank schon mal für eure Mühen
ich bin ein ziemlicher Neuling, was das Programmieren mit Basic und LibreOffice betrifft. Daher auch meine ziemlich ungelenke Frage:
Situation: Ich habe ein Textdokument mit Textfelder und einem Button. Per Klick auf den Button sollen die Ergebnisse unterschiedlicher Berechnungen an die Textfelder übergeben werden. Ich finde jedoch keinerlei Informationen, wie das innerhalb eines Textdokumentes funktioniert. Meist beschäftigen sich die Anleitungen die ich gefunden habe nur mit dem Arbeiten mit Dialogen.
Wie kann ich Textfelder direkt im Dokument ansprechen und ihnen Text übergeben? Und weiter - Wo kann ich mich denn informieren, wie man Makros von Grund auf, gut erläutert, programmieren lernt? (nur damit ich euch hier nicht wieder mit solch geschwurbelten Fragen nerve!)
Vielen Dank schon mal für eure Mühen
Re: Text an Textfelder im Dokument übergeben
Vielleicht, um das Ganze etwas greifbarer zu machen:
Dokument heißt Training
Textfeld heißt txtKraftaufwand
Schaltfläche heißt cmdBerechnen
Wie müsste z.B. ein Code aussehen, wenn der Button den String "Training Ende" an das Textfeld übergeben sollte?
Dokument heißt Training
Textfeld heißt txtKraftaufwand
Schaltfläche heißt cmdBerechnen
Wie müsste z.B. ein Code aussehen, wenn der Button den String "Training Ende" an das Textfeld übergeben sollte?
Re: Text an Textfelder im Dokument übergeben
Hallo,
ich verlinke Dir dann erstmal die FAQ eines anderen Forums für Boden Einstieg.
Wenn Du in Writer rechnen willst bin ich der falsche. Ich führe Berechnungen entweder in der Datenbank-Abfrage via Base aus, oder in Calc. Bei Einzelfeldern kann man das z.B als DDE-Verknüpfung aus Calc einlesen.
Mfg, Jörn
ich verlinke Dir dann erstmal die FAQ eines anderen Forums für Boden Einstieg.
Wenn Du in Writer rechnen willst bin ich der falsche. Ich führe Berechnungen entweder in der Datenbank-Abfrage via Base aus, oder in Calc. Bei Einzelfeldern kann man das z.B als DDE-Verknüpfung aus Calc einlesen.
Mfg, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit
Re: Text an Textfelder im Dokument übergeben
Hallo rito,
hier ein Code mit einigen Informationen in den Kommentaren:
hier ein Code mit einigen Informationen in den Kommentaren:
Code: Alles auswählen
REM ***** BASIC *****
REM -------------------------- INFO ----------------------------------------------------------------------------
REM Groß- und Kleinschreibung ist meistens egal,
REM zwecks besserer Lesbarkeit, verwende ich hier Groß- und Kleinschreibung.
REM Aber es gibt Fälle, z. B. bei Übergabe von Konstanten
REM bei denen Großschreibung unbedingt erforderlich ist!
REM siehe hier:
REM https://www.openoffice.org/api/docs/common/ref/com/sun/star/awt/PosSize.html
REM Beispiel "Rechteck"
REM → vRect = vWindow.getPosSize()
REM Beim Ändern der Position und der Größe bestimmt das letzte Argument,
REM welches der Argumente zu nutzen ist.
'com.sun.star.awt.PosSize.X Setzt nur die X-Position
'com.sun.star.awt.PosSize.Y Setzt nur die Y-Position
'com.sun.star.awt.PosSize.WIDTH Setzt nur die Breite
'com.sun.star.awt.PosSize.HEIGHT Setzt nur die Höhe
'com.sun.star.awt.PosSize.POS Setzt nur die Position
'com.sun.star.awt.PosSize.SIZE Setzt nur die Größe
'com.sun.star.awt.PosSize.POSSIZE Setzt sowohl die Position als auch die Größe
REM → vWindow.setPosSize(vRect.X, vRect.Y, 3 * vRect.Width / 4, 3 * vRect.Height / 4, _
REM → com.sun.star.awt.PosSize.SIZE)
REM ----------------------------------------------------------------------------------------------------------------------
REM -------------------------- INFO: Code-Inspektionstools ---------------------------------------------------
REM Die Tools können parallel installiert werden:
REM MRI 1.3.3 Extension für Libreoffice:
REM https://extensions.openoffice.org/en/projectrelease/mri-uno-object-inspection-tool-133
REM Siehe diese Seite unter XRAY Tool → "X-Ray tool von Bernard Marcelly"
REM auf dieser Seite befindet sich auch eine Liste von Konventionen, welche beim coden für mehr Übersicht sorgen.
REM https://wiki.openoffice.org/wiki/DE/Makro_Basic_Tutorial#X-Ray_tool
REM Nachfolgend befinden sich in einigen Zeile auskommentierte Zeile wie z.B.:
REM 'mri odoc
REM Entfernt man das Hochkomma vor der betreffenden Seite, wird bei Ablauf des Codes die Extension MRI aufgerufen,
REM Hierbei wird MRI die Objektvariable "oDoc" übergeben.
REM Zwecks Inspektion dieses Objektzeigers öffnet MRI nun ein Fenster mit allen API-Informationen
REM zum Objekt "oDoc", bzw. "ThisComponent". "oDoc" ist ja nur ein Zeiger, nicht das eigentliche Objekt.
REM Nun kann man die Eigenschaften, Methoden, Schnittstellen, usw. inspizieren.
REM Starbasic bzw. die API sind hierachisch aufgebaut ist. Sie besteht aus über- und untergeodrneten Instanzen.
REM "ThisComponent" beinhaltet die "Drawpage". Weil MRI die API wiederspiegelt , kann man von der aufgerufenen Instanz (ThisComponent)
REM zur darunter liegenden Instanz schalten.
REM Dazu reicht ein Doppelklick auf die EIGENSCHAFT (Properties) "Drawpage"
REM Nun zeigt MRI alle Eigenschaften, Methoden, Schnittstellen, usw. an.
REM Von dieser Instanz aus gelangt man nun zu den auf der Drawpage liegenden Instanzen (Steuerlement, Shapes, Grafiken, usw.)
REM All dies gilt auch für das Code-Inspektionstool XRAY.
REM ----------------------------------------------------------------------------------------------------------------------
REM Programmstart: Text in Textfeld (Shape)
Sub TextfeldInhalt
Dim oDoc as Object ' Objektvariable für Zeiger auf das aktuelle Dokument
REM Drawpage ist eine unsichbare "Ebene", auf der Grafiken, Steuerelemente, Zeichnungsobjekte abgelegt werden.
REM siehe Writer-Document-Model:
REM https://wiki.openoffice.org/wiki/Documentation/DevGuide/Text/Text_Documents
Dim oDPage as Object ' Objektvariable für Zeiger für die Drawpage
Dim oShape as Object ' Objektvariable für Zeiger auf das Shape (Textfeld = Zeichnungsobjekt)
REM Referenz auf das aktuelle Dokument
oDoc=ThisComponent
' mri oDoc
REM Referenz auf die Drawpage
REM .DrawPage ist eine EIGENSCHAFT von ThisComponent
REM Man könnte auch folgende METHODE verwenden:
REM oDoc.GetDrawPage
oDPage=oDoc.DrawPage
' mri oDPage
REM ---------------------------- Textfeld ---------------------------------------------
REM Ein Textfeld ist Objekt vom Typ "Shape"
REM Schleife über alle vorhandenen Shapes
' for i = 0 to oDPage.count-1
' oShape = oDPage.getByIndex(i)
' oShape.setString("Hallo 1")
' next
REM ODER
' Wenn nur ein Shape vorhanden, dann ist der Index = 0
oShape = oDPage.getByIndex(0)
' String in Shape schreiben
oShape.setString("Hallo 2")
' mri oShape
REM ---------------------------------------------------------------------------------------
End Sub
Gruß
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Re: Text an Textfelder im Dokument übergeben
Vielen Dank für die ausführlichen Antworten. Das hat mich einen ganz schönen Schritt weiter gebracht.
Re: Text an Textfelder im Dokument übergeben
Hallo Rito,
Wenn Du Dich mit der Thematik des Starbasic-Programmierens auseinandersetzen möchtest, kann
ich Dir folgende Seiten und Dokus zur Basic-Programmierung empfehlen.
Man kann zur Programmierung unter AOO und LO auch die Sprachen Java, Python benutzen.
Wenn Du Dich mit der Thematik des Starbasic-Programmierens auseinandersetzen möchtest, kann
ich Dir folgende Seiten und Dokus zur Basic-Programmierung empfehlen.
- https://www.uni-due.de/~abi070/count.ph ... eutsch.pdf
- www.pitonyak.org
- http://www.starbasicfaq.de/index.html
- Libreoffice Handbücher.
Ganz unten auf der Seite befindet sich auch ein Handbuch zur Makro-Programmierung.
https://de.libreoffice.org/get-help/documentation/ - Hiernoch ein Buch von Oracle, ist zwar schon ein wenig betagt, aber hilfreich:
https://docs.oracle.com/cd/E19064-01/so ... 7-3924.pdf - https://erack.de/bookmarks/O.html
Man kann zur Programmierung unter AOO und LO auch die Sprachen Java, Python benutzen.
Gruß
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
Craig
Nie die Sicherungskopie vergessen!
════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8
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 ❤️