Seite 1 von 2
Zugriff auf Formular Steuerelemente in einer Texttabelle
Verfasst: So 25. Mär 2018, 14:16
von alex0005
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
Vielleicht hatte ja schon jemand solch ein Problem und vielleicht auch eine Lösung. Ich suche weiter...
Beste Grüße
Alex
Re: Zugriff auf Formular Steuerelemente in einer Texttabelle
Verfasst: Mo 26. Mär 2018, 13:27
von alex0005
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...
Eine Texttabelle selbst ist ein Objekt vom Typ TextContent.
Re: Zugriff auf Formular Steuerelemente in einer Texttabelle
Verfasst: Mo 26. Mär 2018, 19:45
von F3K Total
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
Re: Zugriff auf Formular Steuerelemente in einer Texttabelle
Verfasst: Di 27. Mär 2018, 23:36
von alex0005
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.
Re: Zugriff auf Formular Steuerelemente in einer Texttabelle
Verfasst: Mi 28. Mär 2018, 06:19
von F3K Total
Mann kommt dran, aber das Problem besteht darin einen Listener zu definieren, der Änderungen an der Texttabelle detektiert.
Re: Zugriff auf Formular Steuerelemente in einer Texttabelle
Verfasst: Mi 28. Mär 2018, 16:54
von DavidG
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:
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
Re: Zugriff auf Formular Steuerelemente in einer Texttabelle
Verfasst: Mi 28. Mär 2018, 19:51
von alex0005
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
Re: Zugriff auf Formular Steuerelemente in einer Texttabelle
Verfasst: Mi 28. Mär 2018, 20:03
von DavidG
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
Re: Zugriff auf Formular Steuerelemente in einer Texttabelle
Verfasst: Do 29. Mär 2018, 12:18
von alex0005
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
Re: Zugriff auf Formular Steuerelemente in einer Texttabelle
Verfasst: Do 29. Mär 2018, 16:38
von F3K Total
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