Zmiana koloru przycisku po każdym kliknieciu
Zmiana koloru przycisku po każdym kliknieciu
Dzień dobry,
Potrzebuję makro przypisane do przycisku które będzie uruchamiane po naciśnięciu przycisku a rezeltatem będzie zmiana koloru przycisku. Jeden z przycisków będzie mógł zmienić się na 1 z 5 kolorów inny na 1 z 2 itp konfigurację. Po każdym naciśnięciu przycisku następuje zmiana koloru na wybrany przeze mnie oczywiscie.
Ogólnie stworzyłem arkusz z użyciem formantów te formanty chciałbym zamienić na przyciski zmieniające kolory po każdym kliknieciu aby arkusz był bardziej widoczny i zrozumiały. Taki dokument z wybranymi kolorami chciałbym zapisać aby inna osoba mogła go przeanalizowac.
Potrzebuję makro przypisane do przycisku które będzie uruchamiane po naciśnięciu przycisku a rezeltatem będzie zmiana koloru przycisku. Jeden z przycisków będzie mógł zmienić się na 1 z 5 kolorów inny na 1 z 2 itp konfigurację. Po każdym naciśnięciu przycisku następuje zmiana koloru na wybrany przeze mnie oczywiscie.
Ogólnie stworzyłem arkusz z użyciem formantów te formanty chciałbym zamienić na przyciski zmieniające kolory po każdym kliknieciu aby arkusz był bardziej widoczny i zrozumiały. Taki dokument z wybranymi kolorami chciałbym zapisać aby inna osoba mogła go przeanalizowac.
LibreOffice 7.2 / windows 10 pro
Re: Zmiana koloru przycisku po każdym kliknieciu
Jakoś nie umiem sobie wyobrazić, żeby kolor przycisku wpływał na czytelność arkusza...
No ale, tak na zachętę masz funkcję zmieniającą w kolor przycisku arkuszu Calc
Powyższe makro przypisz do przycisku o nazwie "Przycisk 1", znajdującego się w Arkuszu1. Po uruchomieniu dany przycisk zmieni kolor na niebieski ---> zielony ---> czerwony.
No ale, tak na zachętę masz funkcję zmieniającą w kolor przycisku arkuszu Calc
Kod: Zaznacz cały
Sub Kolor
Dim oSheets As Variant
Dim oObj1 As Variant
Dim oDrawPage As Variant
Dim oForms As Variant
Dim oObj2 As Variant
oSheets = ThisComponent.getSheets()
oObj1 = oSheets.getByName("Arkusz1")
oDrawPage = oObj1.getDrawPage()
oForms = oDrawPage.Forms(0)
oObj2 = oForms.getByName("Przycisk 1")
print "kolor niebieski"
oObj2.BackgroundColor= RGB(0, 0, 255)
print "kolor zielony"
oObj2.BackgroundColor= RGB(0, 255, 0)
print "kolor czerwony"
oObj2.BackgroundColor= RGB(255, 0, 0)
End Sub
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Zmiana koloru przycisku po każdym kliknieciu
Dziękuję działa tylko nie do końca tak jakbym oczekiwał. Tzn potrzebuje żeby po każdym kliknieciu zmieniał się jeden kolor tutaj zmieniają się po jednym kliknięciu wszystkie kolory.
Wciskam przycisk - kolor niebieski, wciskam przycisk - kolor czerwony, wciskam przycisk - kolor biały
Wciskam przycisk - kolor niebieski, wciskam przycisk - kolor czerwony, wciskam przycisk - kolor biały
LibreOffice 7.2 / windows 10 pro
Re: Zmiana koloru przycisku po każdym kliknieciu
To zmodyfikuj makro np. tak:
Kod: Zaznacz cały
REM ***** BASIC *****
Sub Kolor
Dim oSheets As Variant
Dim oObj1 As Variant
Dim oDrawPage As Variant
Dim oForms As Variant
Dim oObj2 As Variant
Dim kolory as long
niebieski=255 : Czerwony=65280 : zielony=16711680
oSheets = ThisComponent.getSheets()
oObj1 = oSheets.getByName("Arkusz1")
oDrawPage = oObj1.getDrawPage()
oForms = oDrawPage.Forms(0)
oObj2 = oForms.getByName("Przycisk 1")
kolory= oObj2.BackGroundColor
if kolory=niebieski then
kolory=czerwony
elseif kolory=czerwony then
kolory=zielony
else
kolory=niebieski
end if
oObj2.BackgroundColor= kolory
End Sub
Ostatnio zmieniony wt kwie 26, 2022 2:07 pm przez Jermor, łącznie zmieniany 1 raz.
Powód: Poprawiłem kod makro
Powód: Poprawiłem kod makro
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.
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.
Re: Zmiana koloru przycisku po każdym kliknieciu
Dla dowolnej liczby kolorów proponuje takie rozwiązanie:
Kod: Zaznacz cały
global barwa() as long
sub _UstawKolory
Redim barwa (5)
barwa(0) = RGB(255, 255, 255) 'biały
barwa(1) = RGB(0, 0, 255) 'niebieski
barwa(2) = RGB(0, 255, 0) 'zielony
barwa(3) = RGB(255, 0, 0) 'czerwony
barwa(4) = RGB(255, 255, 0) 'żółty
barwa(5) = RGB(255, 0, 255) 'różowy?
end sub
Sub Kolor
Dim oSheets As Variant
Dim oObj1 As Variant
Dim oDrawPage As Variant
Dim oForms As Variant
Dim oObj2 As Variant
dim WybranyKolor as Long
dim i as integer
oSheets = ThisComponent.getSheets()
oObj1 = oSheets.getByName("Arkusz1")
oDrawPage = oObj1.getDrawPage()
oForms = oDrawPage.Forms(0)
oObj2 = oForms.getByName("Przycisk 1")
if UBound(barwa) = -1 then _UstawKolory
WybranyKolor = oObj2.BackgroundColor
i=0
Do While i<UBound(barwa) and WybranyKolor<>barwa(i)
i=i+1
Loop
if i < UBound(barwa) then i=i+1 else i=0
oObj2.BackgroundColor = barwa(i)
End Sub
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Zmiana koloru przycisku po każdym kliknieciu
Dziękuję za odpowiedzi, niestety dopiero wczoraj się za to wzialem. Korzystałem z obydwu sposobów i nadal mam problem z poprawnym ustawieniem tzn. wszystko jest dobrze jeśli wybranymi kolorami są np: niebieski, czerwony, żółty. Ale jeśli do tych kolorów dorzucę kolor biały lub domyślny przycisku czyli szary pojawia się problem (w domyśle biały lub szary oznaczają brak wyboru). Jeśli dodam kolor biały czyli jest: niebieski, czerwony, zielony, żółty i biały to zamiast białego wyświetla się szary - dopiero po kliknięciu komórki obok zmienia się na biały. To samo jest z szarym zamiast szarego pojawia się biały a kliknięcie komórki innej lub odświeżenie zmienia go na szary
LibreOffice 7.2 / windows 10 pro
Re: Zmiana koloru przycisku po każdym kliknieciu
Możesz dołączyć do postu swój plik? Bez niego jakoś trudno mi stwierdzić co jest nie tak...
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Re: Zmiana koloru przycisku po każdym kliknieciu
Jeśli miałoby to pomoc to oczywiście ale będę musiał to jakoś przerobić ten plik bo nie chciałbym takiego jak jest udostępniać także nie teraz. A faktycznie jest tak jak napisałem. Wydaje się jakby było to związane z zaznaczeniem przycisku w momencie kliknięcia. Teraz wyłączyłem np fokus po kliknięciu kolor to niebieski zielony i biały. Efekt jest taki że wszystkie kolory są okej i się trzymają ale zamiast białego mam szary dopiero odświeżenie arkusza zmianie na biały ehh
LibreOffice 7.2 / windows 10 pro