BITTE helfen Sie uns HEUTE mit einer SPENDE
Das LibreOffice Forum braucht jetzt Ihre Hilfe!

❤️ DANKE >><< DANKE ❤️

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

Zugriff auf Formular Steuerelemente in einer Texttabelle

Alles zur Programmierung im LibreOffice.
alex0005
Beiträge: 12
Registriert: So 25. Mär 2018, 12:26

Zugriff auf Formular Steuerelemente in einer Texttabelle

Beitrag von alex0005 » So 25. Mär 2018, 14:16

Hallo zusammen.
ich habe eine Texttabelle in einem Writerdokument. Diese Texttabelle enthält unter anderem die Formular-Steuerlemente des Typs Checkbox.
Ich versuche nun Zugriff auf diese CheckBox zu erhalten, um in Abhängigkeit von einem Wert in der Tabelle den Status der Checkbox zu verändern.

Der Zugriff auf Formularelemente geht schon einmal mit:

Code: Alles auswählen

thisComponent.Drawpage.Forms.getByName("Formularname").getByName("CheckboxName")
Ich möchte aber das Steuerelement aus der Texttabelle "fischen", da ich ja genau die Checkbox komfortabel ändern möchte, welche in einer bestimmten Zeile der Tabelle steht.
So wie ich das bisher sehe und mit xray analysiert habe, bekomme ich zwar Zugriff auf den Zellinhalt der Texttabelle:

Hier der Zugriff auf eine Zelle B3 in der Tabelle "Meine_Tabelle":

Code: Alles auswählen

ThisComponent.TextTables.getbyName.("Meine_Tabelle").getCellByName("B3")
aber ich finde keine richtige Methode, die meinen Wunsch erfüllt und das Formularsteuerelement aus dem Zellinhalt liest.

Ich kann bisher nur Zellinhalte mit diesen Eigenschaften auslesen: EMPTY, VALUE, STRING oder FORMULA

Code: Alles auswählen

CellContentType
Vielleicht hatte ja schon jemand solch ein Problem und vielleicht auch eine Lösung. Ich suche weiter...
Beste Grüße
Alex

alex0005
Beiträge: 12
Registriert: So 25. Mär 2018, 12:26

Re: Zugriff auf Formular Steuerelemente in einer Texttabelle

Beitrag von alex0005 » Mo 26. Mär 2018, 13:27

In dem Falle ist es ein Formularsteuerelement, das gleiche Problem gilt für alle Komponenten die sich in einer Texttabelle befinden wie Grafiken, Textrahmen...
Wie komme ich bloß über das Objekt Texttabelle an den Inhalt derselben? Irgendwo muss doch die Information hinterlegt sein, welche Objekte die Zellen aufnehmen.
Es könnte natürlich auch sein, dass nur das Objekt selber weiß, dass es sich in einer Texttabellenzeile befindet... :cry:
Eine Texttabelle selbst ist ein Objekt vom Typ TextContent.

F3K Total
Beiträge: 2405
Registriert: So 10. Apr 2011, 10:10

Re: Zugriff auf Formular Steuerelemente in einer Texttabelle

Beitrag von F3K Total » Mo 26. Mär 2018, 19:45

Hi,
das mag alles möglich sein, du kannst über die Drawpage die Shape Elemente enumerieren, deren Anchor zeigt dir die Zelle ... usw.
Aber, viel einfacher ist das ganze mit einer eingebetteten Calc-Tabelle, da kannst du das Kontrollfeld an den Zellenwert binden.
Beispiel anbei, kein Makro notwendig.

Gruß R
Dateianhänge
Checkbox_Calc.odt
(24.49 KiB) 235-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

alex0005
Beiträge: 12
Registriert: So 25. Mär 2018, 12:26

Re: Zugriff auf Formular Steuerelemente in einer Texttabelle

Beitrag von alex0005 » Di 27. Mär 2018, 23:36

Vielen Dank, das wäre auch eine Idee.
Ich glaube an die Formularelemente kommt man über die TextTabelle nicht ran.

Hier ist eine Grafik, wie sich ein Textdokument zusammensetzt.
https://wiki.openoffice.org/wiki/Docume ... _Documents
Möglich, dass ich an die Formularsteuerelement nur über Forms gelange.

F3K Total
Beiträge: 2405
Registriert: So 10. Apr 2011, 10:10

Re: Zugriff auf Formular Steuerelemente in einer Texttabelle

Beitrag von F3K Total » Mi 28. Mär 2018, 06:19

Mann kommt dran, aber das Problem besteht darin einen Listener zu definieren, der Änderungen an der Texttabelle detektiert.
Windows 10: AOO, LO Linux Mint: AOO, LO

DavidG
Beiträge: 195
Registriert: Do 22. Mär 2018, 21:41

Re: Zugriff auf Formular Steuerelemente in einer Texttabelle

Beitrag von DavidG » Mi 28. Mär 2018, 16:54

Hallo Alex,
Alex hat geschrieben:Ich versuche nun Zugriff auf diese CheckBox zu erhalten, um in Abhängigkeit von einem Wert in der Tabelle den Status der Checkbox zu verändern.
Wenn ich dieses richtig verstanden habe, soll das Makro gestartet werden und prüfen, welcher Zellinhalt in der Tabelle steht.
In dieser Abhängigkeit soll die betreffende Checkbox(das Markierfeld) den Status checked oder unchecked annehmen.
Dazu dieses Beispiel:
Checkbox Tabelle.odt
(11.56 KiB) 197-mal heruntergeladen
Das Makro habe ich in der Datei gespeichert.

Anfänglich habe ich auch mit xray gearbeitet, heute bevorzuge ich MRI.
Siehe Link im Makrokommentar.

Gruß
David
Gruß

David
___________________
WIN 10 PRO
LO 7.4.5.1 (x64)

alex0005
Beiträge: 12
Registriert: So 25. Mär 2018, 12:26

Re: Zugriff auf Formular Steuerelemente in einer Texttabelle

Beitrag von alex0005 » Mi 28. Mär 2018, 19:51

Hi David,
danke für Deine Hilfe
Ja, über Forms ist das gut möglich. Nur wollte ich die Checkboxen über die Tabelle identifizieren. In meinem Fall habe ich eine Tabelle, in der der Benutzer Werte eintragen soll. Nach bestimmten Kriterien werden dann in Abhängigkeit dieser Werte die Checkboxen Stati verändert. Das Kriterium der Identifizierung der Checkbox soll also die Zelle Tabelle sein, in der sie steckt.

Dann kann man so was schönes machen wie (Achtung kein echter Code):

for i to anzahlzeilenderTabelle
Wenn Wert in Spalte A<1 dann Checkbox in Spalte B = ausgewählt.
next i

Das ist universeller anwendbar, zumal ich mehrere Tabellen habe, in denen quasi dasselbe gemacht werden soll.

VG Alex

DavidG
Beiträge: 195
Registriert: Do 22. Mär 2018, 21:41

Re: Zugriff auf Formular Steuerelemente in einer Texttabelle

Beitrag von DavidG » Mi 28. Mär 2018, 20:03

Hallo Alex,

ich habe Dir gezeigt, wie man die Checkboxen ansprechen kann.
Im Code auskommentiert geht die Auswahl der einzelnen Boxen auch
über die Indizes. Damit ist eine Durchnumerieng per Schleife möglich.
Gleiches gilt für die Zellen der Tabelle.
Statt A1 auch 0,0 (Zeile, Spalte) möglich.

So nun habe ich Deine Hinweise gelesen, verstehe aber Dein Problem noch nicht.
Stellen mir mal ein Beispiedatei zu Verfügung, damit wir über die gleichen Dinge sprechen.

Danke
David
Gruß

David
___________________
WIN 10 PRO
LO 7.4.5.1 (x64)

alex0005
Beiträge: 12
Registriert: So 25. Mär 2018, 12:26

Re: Zugriff auf Formular Steuerelemente in einer Texttabelle

Beitrag von alex0005 » Do 29. Mär 2018, 12:18

Code: Alles auswählen

Sub Tab_MeineTabelle_Checkbox_State_aendern(oEvent AS Object)

	GlobalScope.BasicLibraries.loadLibrary("XrayTool")
	DialogLibraries.LoadLibrary("Library1")

	DIM oDoc AS OBJECT
	DIM oTable1 AS OBJECT
	DIM j as INTEGER
	DIM rows as integer
	oDoc = thisComponent

	oTable1 = oDoc.TextTables.getbyName("MeineTabelle")
	rows = oDoc.TextTables.getbyName("MeineTabelle").getRows().Count
	for j = 1 to rows

		REM in Spalte A stehen Zahlenwerte, wenn Wert in A <1 soll Checkbox.State = 1 sein 
		REM CDBL -> wandle um in Double
		if CDBL(oTable1.getCellByName("A "& j).getString) < 0 then
				REM Die Checkbox wird über ihren Namen gefunden, 
				REM der Name der Checkbox orientiert sich an der Reihenfolge in der Tabelle (fortlaufende Nummerierung im Sinne der Zeilennummern der Tabelle)
				REM besser wäre ein Finden der Checkbox über den Zellinhalt der Tabelle, hoffe das wird jetzt am Beispiel etwas klarer.
				REM Denn ich muss hier das Formular wissen und den Namen der Checkbox wissen/bzw. ermitteln..
				REM Der Zellinhalt weiß aber eigentlich, was er enthält (eine Checkbox) aber das bekomme ich darüber nicht raus)
				oDoc.Drawpage.Forms.getByName("Formular für Tabelle1").getByName("CheckBox_Tabelle1_" + j).State = 1
		next

End Sub

F3K Total
Beiträge: 2405
Registriert: So 10. Apr 2011, 10:10

Re: Zugriff auf Formular Steuerelemente in einer Texttabelle

Beitrag von F3K Total » Do 29. Mär 2018, 16:38

Ein Beispiel anbei. Ich lese von allen Elementen der DRAWPAGE den Namen der jeweilige Tabelle, den Cellnamen und ob es sich um ein Markierfeld handelt, zunächst in ein ARRAY ein ... damit es etwas schneller geht ...
Gruß R
Dateianhänge
Set_Checkbox_Texttable.odt
(18.11 KiB) 203-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO

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