Zapętlenie makra

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Zapętlenie makra

Post autor: Dawidek990 »

Witam, nie wiem czy byl juz taki temat ale mam takie makro:

Kod: Zaznacz cały

sub makro
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "By"
args1(0).Value = 1
args1(1).Name = "Sel"
args1(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Flags"
args2(0).Value = "U"

dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Flags"
args3(0).Value = "U"

dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Flags"
args4(0).Value = "U"

dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "Flags"
args5(0).Value = "U"

dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args5())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())

rem ----------------------------------------------------------------------
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "By"
args7(0).Value = 1
args7(1).Name = "Sel"
args7(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(1) as new com.sun.star.beans.PropertyValue
args8(0).Name = "By"
args8(0).Value = 1
args8(1).Name = "Sel"
args8(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args8())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

rem ----------------------------------------------------------------------
dim args10(1) as new com.sun.star.beans.PropertyValue
args10(0).Name = "By"
args10(0).Value = 1
args10(1).Name = "Sel"
args10(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args10())

rem ----------------------------------------------------------------------
dim args11(1) as new com.sun.star.beans.PropertyValue
args11(0).Name = "By"
args11(0).Value = 1
args11(1).Name = "Sel"
args11(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args11())

rem ----------------------------------------------------------------------
dim args12(0) as new com.sun.star.beans.PropertyValue
args12(0).Name = "Flags"
args12(0).Value = "U"

dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args12())

rem ----------------------------------------------------------------------
dim args13(0) as new com.sun.star.beans.PropertyValue
args13(0).Name = "Flags"
args13(0).Value = "U"

dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args13())

rem ----------------------------------------------------------------------
dim args14(0) as new com.sun.star.beans.PropertyValue
args14(0).Name = "Flags"
args14(0).Value = "U"

dispatcher.executeDispatch(document, ".uno:DeleteCell", "", 0, args14())


end sub
I co mam zrobic zeby chodzilo ono samo w kolko... i ew czy jest przycisk do anulowania jak juz bede chcial zby skonczylo?
OpenOffice 4.1.6 Windows 10
Jan_J
Posty: 4558
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Zapętlenie makra

Post autor: Jan_J »

Zamiast cytować stosunkowo skomplikowany (jak na czynność, którą ma wykonać) szkic, lepiej napisz, co on robi, a co chcesz, żeby robił.
Twój projekt napisany jest jako makropolecenia dla dispatchera -- rozrządcy zleceń interfejsu użytkownika, czyli niejako `na wierzchu`, ponad warstwą użytkową.
Wszelkie merytoryczne czynności lepiej się wykonuje `pod spodem`, za pomocą funkcji dostępu do struktur danych dokumentu, bez pośrednictwa interfejsu użytkownika. Ale żeby móc coś zaproponować, lepiej mieć napisane czarno na białym, zamiast rozkodowywać z funkcji uno.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Dawidek990
Posty: 58
Rejestracja: czw gru 13, 2018 12:15 am

Re: Zapętlenie makra

Post autor: Dawidek990 »

ogolnie sie zastanawilem czy istnieje mozliwosc zapetlenia jakiego kolwiek makra... zeby samo wykonywalo dana czynnosc w kolko az go nie zatrzymam?
OpenOffice 4.1.6 Windows 10
Jan_J
Posty: 4558
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Zapętlenie makra

Post autor: Jan_J »

Tak.
Makro to jest funkcja.
Można albo ją zmienić, obudowując jej kod pętlą, albo wywołać ją z innej funkcji w pętli.
Tylko że czasem, zanim się to zrobi, warto przeorganizować działanie.

No i jeżeli ma działać ,,pod maską'', warto żeby była napisana za pomocą ,,podmaskowych'' środków. UNO Dispatcher do nich nie należy.
Trochę tak: jakby zadawać numer telefonu to raczej jako numer (ew. ciąg znaków) do połączenia, zamiast kierowania wirtualnym palcem, żeby naciśnięte przezeń cyfry ułożyły się w ten numer.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
ODPOWIEDZ