Hallo Gerhard,
Heute fallen mir die Augen zu. Wenn ich wieder wach bin, werde ich mich
mit dem Vorschlag beschäftigen. Erst mal vielen Dank
Herzliche Grüße
Günter
Am 08.11.2016 um 00:03 schrieb Gerhard Weydt:
Hallo Günter,
du solltest nicht so sehr auf den Macro Recorder setzen, er hat enge
Grenzen. Arbeite dich lieber in die Objekte selbst ein. Unerlässlich
dafür ist, wie schon mal gesagt, ein Werkzeug wie Xray. Da kann man
ein bisschen herumsuchen, bis man etwas Vielversprechendes findet, und
das dann in Testprogrammen ausprobieren.
Beim folgenden Programm ist der einzige wirkliche Dreh der Einstieg
über CurrentController.ActiveSheet, weil man vom Dokument aus zunächst
auf Drawpages stößt, das enthält aber für jedes Sheet eine Drawpage,
und man kann nicht direkt ablesen, welche die gewünschte ist, weil die
Drawpages automatisch angelegt werden, wenn man ein grafisches Objekt
oder ein Kontrollelement einfügt, und sie daher auch keinen
erkennbaren Namen haben. Und die zweite kleine Hürde ist, dass die
Elemente der Drawpage in unserem Fall erst mal grafische Objekte sind,
die das eigentliche Kontrollelement erst tragen, daher der Weg über
.Control, um den Namen zu vergleichen; aber sowas findet man nach
kurzem Rumsuchen schnell.
dim oDoc as object
dim DrawPage as object, i as long, ctrl as object
dim tempPos as New com.sun.star.awt.Point 'wenn man das nicht weiß,
geht es auch mit variant
oDoc = ThisComponent
DrawPage = oDoc.CurrentController.ActiveSheet.Drawpage
for i = 0 to DrawPage.Count - 1
ctrl = Drawpage.getByIndex(i)
if ctrl.Control.Name = "Push Button 1" then ' wie immer deine
Schaltfläche heißt
tempPos = ctrl.Position 'die Verwendung einer
Zwischenvariablen ist bei structs wie Position, Size normalerweise
'notwendig, die
direkte Zuweisung auf X und Y funktioniert normalerweise nicht.
tempPos.X = tempPos.X * 1.5 'das nur als Beispiel
tempPos.Y = tempPos.Y * 1.5
ctrl.Position = tempPos
end if
next
Die Verschiebung der Schaltfläche auf das Anderthalbfache ihrer
Abstände zu links und oben ist bloß ein Beispiel, weil ich mich nicht
mit den dort verwendeten Enheiten rumschlagen will. Da musst du etwas
probieren, wo der gewünschte Ort liegt.
Herzlichen Gruß
Gerhard
Am 07.11.2016 um 15:40 schrieb Günter Fritze:
Hallo,
Ich habe in einer Zelle eine viereckige Schaltfläche erstellt. Wenn
ich diese Schaltfläche an einen anderen Ort verschieben möchte, dann
ist in der Makro-Programmieranleitung genau beschrieben, wie man das
macht:
1. Schaltfläche mit der rechten Maustaste markieren und an den neuen
Standort plazieren.
Das funktioniert also. Diese Aktion mit Makroaufzeichnung
wiederholen, Makro abspeichern und starten, was passiert? Nichts.
2. Schaltfläche markieren, mit Ctrl-X oder rechter Maustaste löschen,
an neuem Platz mit 'Einfügen' oder Ctrl-V plazieren. Funktioniert
also. Die gleiche Aktion mit Makroaufzeichnung wiederholen,
Abspeichern und Starten. Was passiert? Die Schaltfläche wird an die
neue Stelle kopiert, aber nicht an der Quelle gelöscht.
Kann man solche Tastenbedienungen in einem Makro programmieren?
Für eine Antwort wäre ich dankbar
Mit freundlichen Grüßen
Günter
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.