[SOLVED]Dlaczego makro z paska ma parametr?

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
Awatar użytkownika
antekg
Posty: 18
Rejestracja: śr sie 25, 2010 6:18 pm
Lokalizacja: Warszawa

[SOLVED]Dlaczego makro z paska ma parametr?

Post autor: antekg »

Logicznym byłoby, gdyby makro podłączone pod przycisk na pasku narzędzi nie było wywoływane z parametrami.
Nie jest wywoływane z parametrami, gdy makro podłączymy pod pozycję (wpis) menu i to jest OK.
Oto kod do tego eksperymentu:

Kod: Zaznacz cały

Sub Sprwdz (Optional NoMsg)
  if IsMissing(NoMsg) then
    MsgBox "Missing"
  else
    MsgBox NoMsg
  end if
End Sub
Zwykłe uruchomienie tego kodu daje komunikat "Missing". Wywołanie z pozycji menu również daje taki komunikat.
Uruchomienie przyciskiem z paska narzędzi daje komunikat "0", czyli parametr w wywołaniu istnieje i jest równy 0.
Jest to brak konsekwencji i dość zaskakujące. Czy jest to celowe?
Moim zdaniem jest to drobna pluskwa. Jak to zgłosić do dalszej dyskusji?
Ostatnio zmieniony wt gru 08, 2020 7:24 am przez Rafkus, łącznie zmieniany 2 razy.
Powód: Przywróciłem nazwę wątku, więcej wyjaśnie niż wpis [SLOVED]
AOO 4.1.4 (Polish) na Windows 10 (64b) / AOO 4.1.0 na Windows Vista / LibreOffice na Mageia Linux
Awatar użytkownika
Jermor
Posty: 2361
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Dlaczego makro z paska ma parametr?

Post autor: Jermor »

Dopiero teraz przeczytałem twój post.
Wg. mnie wszystko funkcjonuje prawidłowo.
Sądzę, że twoim celem jest utworzenie takiego makra, które może być podpięte pod przycisk i równocześnie wykorzystywane w kodowaniu programu.
Jeżeli makro zostanie przypisane np. do kliknięcia przycisku, to pierwszy parametr takiego makra otrzymuje typ zmiennej com.sun.star.awt.MouseEvent wtedy gdy nie określono tego typu lub podano typ Object. Gdy podano inny typ tego pierwszego argumentu, pojawi się błąd o niezgodności typu dla tego parametru.
Przy wywoływaniu makra pośrednio (z innego makra) lub poprzez wymuszenie jego wykonania z menu "Narzędzia" ten parametr otrzymuje typ Variant i generuje błąd 448 (nie odnaleziono nazwanego argumentu).
Aby osiągnąć takie uniwersalne rozwiązanie trzeba "poświęcić " pierwszy argument, gdyż musi on obsłużyć zdarzenie uruchamiające makro. Właściwy parametr (właściwe parametry) muszą wystąpić jako następne. Jednak wówczas "zwykłe" wywołanie takiego kodu wymaga opuszczenia pierwszego parametru, sygnalizując to samym przecinkiem.
AOO 4.1.15, LO 24.8.2 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
ODPOWIEDZ