[SOLVED]

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO

[SOLVED]

Postprzez antekg » N cze 21, 2020 6:30 pm

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   Rozszerz widokZwiń widok
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 edytowano Wt lis 03, 2020 8:41 pm przez antekg, łącznie edytowano 1 raz
AOO 4.1.4 (Polish) na Windows 10 (64b) / AOO 4.1.0 na Windows Vista / LibreOffice na Mageia Linux
Avatar użytkownika
antekg
 
Posty: 16
Dołączył(a): Śr sie 25, 2010 6:18 pm
Lokalizacja: Warszawa

Re: Dlaczego makro z paska ma parametr?

Postprzez Jermor » N lis 01, 2020 10:28 pm

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.7, LO 6.4.6 (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.
Avatar użytkownika
Jermor
 
Posty: 1281
Dołączył(a): So paź 12, 2013 11:09 am


Powrót do Makra i programowanie

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości