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

Text an Textfelder im Dokument übergeben

Alles zur Programmierung im LibreOffice.
Antworten
rito
Beiträge: 4
Registriert: Mi 7. Feb 2018, 12:22

Text an Textfelder im Dokument übergeben

Beitrag von rito » Sa 15. Aug 2020, 22:11

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

rito
Beiträge: 4
Registriert: Mi 7. Feb 2018, 12:22

Re: Text an Textfelder im Dokument übergeben

Beitrag von rito » So 16. Aug 2020, 16:54

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?

Wanderer
Beiträge: 895
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Text an Textfelder im Dokument übergeben

Beitrag von Wanderer » So 16. Aug 2020, 19:04

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
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

craig
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Text an Textfelder im Dokument übergeben

Beitrag von craig » So 16. Aug 2020, 19:47

Hallo rito,

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

rito
Beiträge: 4
Registriert: Mi 7. Feb 2018, 12:22

Re: Text an Textfelder im Dokument übergeben

Beitrag von rito » Mi 19. Aug 2020, 07:28

Vielen Dank für die ausführlichen Antworten. Das hat mich einen ganz schönen Schritt weiter gebracht.

craig
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Text an Textfelder im Dokument übergeben

Beitrag von craig » Mi 19. Aug 2020, 08:50

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.
  1. https://www.uni-due.de/~abi070/count.ph ... eutsch.pdf
  2. www.pitonyak.org
  3. http://www.starbasicfaq.de/index.html
  4. Libreoffice Handbücher.
    Ganz unten auf der Seite befindet sich auch ein Handbuch zur Makro-Programmierung.
    https://de.libreoffice.org/get-help/documentation/
  5. Hiernoch ein Buch von Oracle, ist zwar schon ein wenig betagt, aber hilfreich:
    https://docs.oracle.com/cd/E19064-01/so ... 7-3924.pdf
  6. https://erack.de/bookmarks/O.html
Um dies noch zu erwähnen:
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

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