Zmiana właściwości przycisku z poziomu makra
Zmiana właściwości przycisku z poziomu makra
Witam ponownie.
Następna rzecz z którą narazie nie umię sobie poradzić to edycja danych przycisków z poziomu makra.
Wiem już jak dodawać przyciski ale nie mogę sobie poradzić z ich edycją (zmiana koloru, rozmiar, przypisanie do komórki, dodanie makra do przycisku)
Wszelkie porady mile widziane.
W załączniku arkusz z opisami co chcę osiągnąć.
Następna rzecz z którą narazie nie umię sobie poradzić to edycja danych przycisków z poziomu makra.
Wiem już jak dodawać przyciski ale nie mogę sobie poradzić z ich edycją (zmiana koloru, rozmiar, przypisanie do komórki, dodanie makra do przycisku)
Wszelkie porady mile widziane.
W załączniku arkusz z opisami co chcę osiągnąć.
- Załączniki
-
- przycisk hiperłącze.ods
- (12.2 KiB) Pobrany 307 razy
Apache OpenOffice 4.1.4, Windows 8.1
Re: Zmiana właściwości przycisku z poziomu makra
W tych liniach masz dostęp do właściwości przycisku
Musisz manipulować właściwościami i metodami obiektu oButtonModel (w twoim przypadku).
Przykład:
Zainstaluj sobie dodatek MRI lub Xray, po odpowiednim wywołaniu go uzyskasz listę dostępnych metod i właściwości inspektorowanego obiektu. Ja preferuje ten pierwszy bo nawet kod za ciebie napisze.
Prawidłowe wywołanie inspektora:
Oczywiście po utworzeniu obiektu chociażby w pamięci, a i biblioteka MRI musi być załadowana, więc ma to wyglądać tak:
Kod: Zaznacz cały
oButtonModel.Name = sName
oButtonModel.Label = sLabel
Przykład:
Kod: Zaznacz cały
oButtonModel.Tag = "to jest dodatkowa informacja"
Prawidłowe wywołanie inspektora:
Kod: Zaznacz cały
mri oButtonModel
Kod: Zaznacz cały
oButtonModel.Name = sName
oButtonModel.Label = sLabel
mri oButtonModel
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Zmiana właściwości przycisku z poziomu makra
Pozostała sprawa [przypisania makra. pojawia ci się błąd bo makra o nazwie ButtonPushEvent nie masz w module1. wstaw poniższy kod a będzie działać.
Kod: Zaznacz cały
Sub ButtonPushEvent
print "to jest to" 'tu wstaw swój kod
end sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Zmiana właściwości przycisku z poziomu makra
Dzięki
Z dodaniem makra dałem radę i działa
Dodatek MRI zainstalowałem Wyświetla mi się jakieś okno ale ni diabła nie wiem jak to powiązać z makrem a tym bardziej jak zmienić kolor przycisku za pomocą tego dodatku.
oButtonModel.Name = sName
oButtonModel.Label = sLabel
mri oButtonModel - błąd pracy basica nie zdefiniowano procedury lub funkcji
Z dodaniem makra dałem radę i działa
Dodatek MRI zainstalowałem Wyświetla mi się jakieś okno ale ni diabła nie wiem jak to powiązać z makrem a tym bardziej jak zmienić kolor przycisku za pomocą tego dodatku.
oButtonModel.Name = sName
oButtonModel.Label = sLabel
mri oButtonModel - błąd pracy basica nie zdefiniowano procedury lub funkcji
Apache OpenOffice 4.1.4, Windows 8.1
Re: Zmiana właściwości przycisku z poziomu makra
MRI jest inspektorem obiektów, coś ja przeglądarka obiektów w Visual Basic for Application. Po uruchomieniu pokazuje okno z właściwościami, metodami inspektorowanego obiektu. W omawianym przypadku
pokaże ci wszystko co jest dostępne dla tego obiektu, czyli
Załóżmy że chcesz zmienić nazwę obiektu, a nie wiesz jaką metodę czy właściwość wykorzystać:
Przeglądasz okienko i znajdujesz odpowiednią pozycję odpowiadającą nazwie metody lub właściwości. po dwukliku pokaże ci odpowiedni dialog do wprowadzenia nowej nazwy.
Gdy angielskim jesteś na bakier i wykorzystujesz ciężką do zapamiętania nazwę metody, właściwości, warto skorzystać z wygenerowanego kodu przez MRI. Wystarczy ustawić myszkę nad poziomą belką przewijania, po zmianie kursora, przeciągnąć do góry. Odsłonisz tym samym to co poniżej.
Wystarczy skopiować i wstawić do swojego kodu, po małych przeróbkach musi działać. Nazwa oInitialTarget reprezentuje w twoim przypadku oButtonModel.
Co do koloru przycisku, musisz wykorzystać właściwość W celu ustawienia dowolnego koloru skorzystaj z funkcji RGB(), więc linia ma wyglądać tak:
Manipulując argumentami funkcji ustawisz kolor jaki chcesz i nie tylko dostępny w palecie kolorów w OO.
1. Zainstalowałeś nieodpowiednią wersje MRI do swojej wersji OO
2. Biblioteka MRI nie została zainicjowana. W tym przypadku odnajdź bibliotekę na liście i ją otwórz, po ukazaniu się zawartości powróć do swojego kodu wybierając ze wspominanej listy to co było poprzednio. Tym samym biblioteka MRI została załadowana. Gdy będziesz często korzystał z MRI warto załadować bibliotekę automatycznie z uruchomieniem OO
Po więcej informacji udaj się https://forum.openoffice.org/en/forum/v ... 74&t=49294
Gdy wbrew podpisowi pod swoimi postami używasz LO w wersji 5, musisz odnaleźć w sieci MRI w wersji 2, choć nie pochodzi ona z oficjalnych źródeł jest w pełni sprawna.
Kod: Zaznacz cały
mri oButtonModel
Co do koloru przycisku, musisz wykorzystać właściwość W celu ustawienia dowolnego koloru skorzystaj z funkcji RGB(), więc linia ma wyglądać tak:
Kod: Zaznacz cały
oButtonModel.BackgroundColor = RGB(155, 10, 0)
Błąd może mieć dwie przyczynykturendyk pisze:mri oButtonModel - błąd pracy basica nie zdefiniowano procedury lub funkcji
1. Zainstalowałeś nieodpowiednią wersje MRI do swojej wersji OO
2. Biblioteka MRI nie została zainicjowana. W tym przypadku odnajdź bibliotekę na liście i ją otwórz, po ukazaniu się zawartości powróć do swojego kodu wybierając ze wspominanej listy to co było poprzednio. Tym samym biblioteka MRI została załadowana. Gdy będziesz często korzystał z MRI warto załadować bibliotekę automatycznie z uruchomieniem OO
Kod: Zaznacz cały
Sub InitializeMRI()
Globalscope.BasicLibraries.LoadLibrary("MRILib")
End Sub
Gdy wbrew podpisowi pod swoimi postami używasz LO w wersji 5, musisz odnaleźć w sieci MRI w wersji 2, choć nie pochodzi ona z oficjalnych źródeł jest w pełni sprawna.
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Zmiana właściwości przycisku z poziomu makra
@ belstar
Witam
Za samą chęć i poświęcenie czasu jestem ci wdzięczny i wiszę ci duże piwo.
MRI u mnie działa tylko nie mogłem zlokalizować BackgroundColor, albo ten mój angielski bardzo fest kuleje.
Wczoraj próbowałem na wiele sposobów z oButtonModel i nie mogłem zatrybić (albo mój program) a dzisiaj kopiując twój wpis (oButtonModel.BackgroundColor = RGB(155, 10, 0)) wszystko działa elegancko (chyba w moim angielskim były jakieś literówki).
Dziękuję za pomoc i walczę dalej z moimi wypocinami, pewnie pytań będzie jeszcze kilka
W kodzie oButtonModel.Tag = "to jest dodatkowa informacja" nie ma żadnej reakcji
Witam
Za samą chęć i poświęcenie czasu jestem ci wdzięczny i wiszę ci duże piwo.
MRI u mnie działa tylko nie mogłem zlokalizować BackgroundColor, albo ten mój angielski bardzo fest kuleje.
Wczoraj próbowałem na wiele sposobów z oButtonModel i nie mogłem zatrybić (albo mój program) a dzisiaj kopiując twój wpis (oButtonModel.BackgroundColor = RGB(155, 10, 0)) wszystko działa elegancko (chyba w moim angielskim były jakieś literówki).
Dziękuję za pomoc i walczę dalej z moimi wypocinami, pewnie pytań będzie jeszcze kilka
W kodzie oButtonModel.Tag = "to jest dodatkowa informacja" nie ma żadnej reakcji
Kod: Zaznacz cały
oButtonModel = CreateUnoService("com.sun.star.form.component.CommandButton")
oButtonModel.Name = sName
oButtonModel.Label = sLabel
oButtonModel.BackgroundColor = RGB(155, 10, 0)
oButtonModel.Tag = "to jest dodatkowa informacja"
oControlShape.setControl(oButtonModel)
oDrawPage.add(oControlShape)
Apache OpenOffice 4.1.4, Windows 8.1
Re: Zmiana właściwości przycisku z poziomu makra
Uwierz mi, jest!kturendyk pisze:W kodzie oButtonModel.Tag = "to jest dodatkowa informacja" nie ma żadnej reakcji
Przełączysz się w tryb projektu formularza, wybierzesz właściwości wstawionego przyciski i odnajdź na karcie ogólne pole o nazwie Dodatkowa informacja, znajdziesz w niej właśnie to co zostało tam wstawione czyli:
Kod: Zaznacz cały
"to jest dodatkowa informacja"
Cytat z Helpa:
Dla każdego pola formantu można określić dodatkowe informacje lub wprowadzić opis. Dodatkowe informacje zawarte w tej właściwości mogą zostać wykorzystane przez programistę w kodzie programu. W polu tym można na przykład umieścić zmienne lub inne parametry ewaluacyjne.
Do czego to można wykorzystać? Pomysłów może być naprawdę sporo, np.
Tworzysz super grę i chcesz ograniczyć ilość kliknięć użytkownika w przycisk, a przecież informacje o ilości kliknięć musisz gdzieś przechowywać i właśnie możesz to ukryć tam. Razem z ograniczeniem dostępu do edytora basic, będzie to ukryte przed nim. Oczywiście nie jest to żadne zabezpieczenie przed fachowcami, ale zawsze jakieś. Ja przykładowo przechowuję tam zapytania sql tworząc filtry w base.
Aby unaocznić ci to zastosowanie, wklej poniższy kod podmieniając procedurę ButtonPushEvent, pamiętając o dodaniu argumentu oEv.
Kod: Zaznacz cały
Sub ButtonPushEvent(oEv)
Dim oPrzycisk As Object
Dim i As Integer
oPrzycisk = oEv.Source.Model
i = CInt(oPrzycisk.Tag)
If i < 5 Then
i = i + 1
oPrzycisk.Tag = CStr(i)
MsgBox oPrzycisk.Tag & chr(13) & "Klikaj jeszcze"
Else
MsgBox ("Przekroczyłeś limit kliknięć", 48, "Koniec gry!")
oPrzycisk.Enabled = False
oPrzycisk.TextColor = RGB(0, 128, 255)
oPrzycisk.BackgroundColor = RGB(255, 90, 0)
oPrzycisk.Label = "Jestem niedostępny"
End If
End Sub
i jeszcze w funkcji AddNewButton zamień linię
Kod: Zaznacz cały
oButtonModel.tag = "to jest dodatkowa informacja"
Kod: Zaznacz cały
oButtonModel.tag = "0"
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Zmiana właściwości przycisku z poziomu makra
Faktycznie wszystko działa jak należy.
Z tą dodatkową informacją myślałem że się wyświetli na ekranie, ale już wiem jak to działa.
Z ta blokadą kliknięć też mi poddałeś fajny pomysł, chyba wykorzystam go w moim arkuszu.
Jeszcze raz dzięki i walczę dalej z tymi moimi wypocinami
Z tą dodatkową informacją myślałem że się wyświetli na ekranie, ale już wiem jak to działa.
Z ta blokadą kliknięć też mi poddałeś fajny pomysł, chyba wykorzystam go w moim arkuszu.
Jeszcze raz dzięki i walczę dalej z tymi moimi wypocinami
Apache OpenOffice 4.1.4, Windows 8.1
Re: Zmiana właściwości przycisku z poziomu makra
Witam
Ciąg dalszy
Jak w właściwościach przycisku na karcie ogólne za pomocą makra zmienić pole "akcja" na "otwórz dokument/stronę internetową" i poniżej w polu "Url" dodać odnośnik do innej karty Dokumentu. Te pola są tak ustawione jeżeli za pomocą kreatora utworzymy hiperłącze (a ja chciałbym to zmienić z poziomu makra). Przeszukuję internet ale jakoś nie mogę tego znależć.
Czy to będzie oButtonModel z dopiskiem? coś jak belstar napisał powyżej tylko z odpowiednim parametrem?
Pozdrawiam
Ciąg dalszy
Jak w właściwościach przycisku na karcie ogólne za pomocą makra zmienić pole "akcja" na "otwórz dokument/stronę internetową" i poniżej w polu "Url" dodać odnośnik do innej karty Dokumentu. Te pola są tak ustawione jeżeli za pomocą kreatora utworzymy hiperłącze (a ja chciałbym to zmienić z poziomu makra). Przeszukuję internet ale jakoś nie mogę tego znależć.
Czy to będzie oButtonModel z dopiskiem? coś jak belstar napisał powyżej tylko z odpowiednim parametrem?
Pozdrawiam
Apache OpenOffice 4.1.4, Windows 8.1
Re: Zmiana właściwości przycisku z poziomu makra
Kod: Zaznacz cały
Sub OpenURL(oEv)
'Cel w dokumencie lub ścieżka do innego pliku
oEv.Source.getModel().getParent().getByName("Przycisk 2").TargetUrl = "#Arkusz1.A1"
'Zmiana typu przycisku, standardowo jest com.sun.star.form.FormButtonType.PUSH
oEv.Source.getModel().getParent().getByName("Przycisk 2").ButtonType = com.sun.star.form.FormButtonType.URL
End Sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Re: Zmiana właściwości przycisku z poziomu makra
Ok, dopasowałem to do swoich potrzeb i działa.
Właśnie brakowało mi tego .targetUrl, no i musiałem zmienić typ przycisku na formButtonType.Url
Dziękuje za pomoc i walczę dalej
Właśnie brakowało mi tego .targetUrl, no i musiałem zmienić typ przycisku na formButtonType.Url
Dziękuje za pomoc i walczę dalej
Apache OpenOffice 4.1.4, Windows 8.1