Zugriff auf Formularfeld (Position)
Verfasst: Di, 27.02.2018 09:59
Hallo, ich habe mal wieder ein Problem. Vielleicht könnt ihr mir nochmal helfen...
Ich möchte gerne per Makro ein Formularfeld (grafische Schaltfläche) platzieren. Zugriff habe ich mir über den Befehl
verschafft. Ich kann hier auch durchaus Parameter wir "BackgroundColour" oder "Sichtbarkeit" steuern. Aber anscheinend keine Position obwohl dies in den Eigenschaften des Kontrollfelds (Rechtsklickmenu) angegeben werden kann. Ich habe mit X-Ray nach den entsprechenden Parametern gesucht aber nichts gefunden.
Im Netz habe ich eine Lösung gefunden bei der folgender Code verwendet wird
Mit diesem Code scheint es zu funktionieren. Aber ich verstehe es nicht. Warum muss man den Umweg über die Schleife gehen? Ist es an dieser Stelle nicht möglich direkt auf das Formularfeld zuzugreifen und die Position einzugeben?
Mit X-Ray kommt man hier auch nicht weiter. An der Stelle
ist Schluss. Es ist anscheinend nicht möglich zu dem Punkt "Drawpage" mit einem Parameter (i) zu springen. "Drawpage" ist nur ohne Parameter verfügbar. (Hier habe ich mich jetzt sicher absolut unprofessionell ausgedrückt. Ich weiß aber nicht wie ich es anders beschreiben soll. Ich hoffe ihr wisst was gement ist.)
Zudem bin ich irgendwie von der Strukturierung verwirrt. Eigentlich existiert mein Formularfeld doch als Teil eines Formulars auf einer "Drawpage". Zumindest würde ich den Code
so interpretieren. Nun scheint es mir aber so zu sein, dass ebenfalls eine "Drawpage" unterhalb des Formulars existiert, die denselben Namen trägt wie mein Formularfeld.
Über diesen "Pfad" suche ich mir ja in der oben beschriebenen Schleife die richtige "Drawpage" für mein Formularfeld heraus.
Ich bin auf jeden Fall ziemlich verwirrt. Wäre schön, wenn jemand Licht in mein Dunkel bringen könnte...
_________________
Moderationshinweis
Thema verschoben von OOo Calc nach Makros und allgemeine Programmierung, wo alle Themen zur individuellen Programmierung hingehören. – lorbass, Moderator
Ich möchte gerne per Makro ein Formularfeld (grafische Schaltfläche) platzieren. Zugriff habe ich mir über den Befehl
Code: Alles auswählen
thisComponent.Sheets().getbyName("Tabelle").DrawPage.Forms.getbyName("Formular").getbyName("Feldname")
Im Netz habe ich eine Lösung gefunden bei der folgender Code verwendet wird
Code: Alles auswählen
myPos.X = [x]
myPos.Y = [y]
myDrawpage = thisComponent.Sheets().getbyName("Name").Drawpage
for i = 0 to myDrawpage.count - 1
myShape = myDrawpage(i)
if myShape.supportsservice("com.sun.star.drawing.ControlShape") then
if myShape.control.name = ("Feldname") then
myShape.Position = myPos
end if
end if
next
Mit X-Ray kommt man hier auch nicht weiter. An der Stelle
Code: Alles auswählen
myDrawpage = thisComponent.Sheets().getbyName("Name").Drawpage(i)
Zudem bin ich irgendwie von der Strukturierung verwirrt. Eigentlich existiert mein Formularfeld doch als Teil eines Formulars auf einer "Drawpage". Zumindest würde ich den Code
Code: Alles auswählen
thisComponent.Sheets().getbyName("Name").DrawPage.Forms.getbyName("Formular").getbyName("Feldname")
Code: Alles auswählen
thisComponent.Sheets().getbyName("Name").Drawpage(i).control.name
Ich bin auf jeden Fall ziemlich verwirrt. Wäre schön, wenn jemand Licht in mein Dunkel bringen könnte...
_________________
Moderationshinweis
Thema verschoben von OOo Calc nach Makros und allgemeine Programmierung, wo alle Themen zur individuellen Programmierung hingehören. – lorbass, Moderator