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


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.