Date: prev next · Thread: first prev next last
2016 Archives by date, by thread · List index


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.