Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 18 kwi 2024, o 09:42


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 6 cze 2018, o 09:09 
Offline
Nowy

Dołączył(a): 22 lis 2015
Posty: 8
Pomógł: 0

Witam, na początku chciałem zaznaczyć że jestem świeżak jeśli chodzi o programowanie i mam pewien problem, mianowicie:
w aplikacji mam bardzo dużą ilość przycisków (Buttonów) i jak do tej pory zmieniam ich kolor w taki sposób:

np: Button_ON.Color=Colors.Green lub Button_ON.Color=Colors.RGB(0,250,0)

i czy jest możliwość stworzenia Sub tego typu:

Sub Zmiana_koloru(nazwa_przycisku as String, R as Int, G as Int, B as Int)

nazwa_przycisku.Color=Colors.RGB(R,G,B)
End Sub

nie wiem jak zamienić Stringa na nazwę przycisku



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 09:17 
Offline
Użytkownik

Dołączył(a): 20 sty 2014
Posty: 56
Pomógł: 4

nie znam B4A, ale zgaduję, że nazwa_przycisku powinna być typu obiekt, na pewno nie string



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 09:25 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

dokładnie - OBIEKT a nie String przekaż jako pierwszy argument funkcji

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 09:31 
Offline
Nowy

Dołączył(a): 22 lis 2015
Posty: 8
Pomógł: 0

szpilek napisał(a):
nie znam B4A, ale zgaduję, że nazwa_przycisku powinna być typu obiekt, na pewno nie string



Dziękuję za zainteresowanie,

jeżeli zrobię tak :

Sub Zmiana_koloru(nazwa_przycisku as Button , R as Int, G as Int, B as Int) //nazwa_przycisku jako Button

nazwa_przycisku.Color=Colors.RGB(R,G,B)

End Sub
to działa z tym że chodzi mi o to żeby to działało w ten sposób jak np: CallSub("nazwa_funkcji" as String)
ponieważ dane które odbieram po UDP z ESP8266 są typu string i wygląda to np. tak

dane as String ="nazwa_przycisku"200,50,10#
potem to parsuje
i mam Stringa "nazwa_przycisku" i trzy Inty



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 09:56 
Offline
Użytkownik

Dołączył(a): 20 sty 2014
Posty: 56
Pomógł: 4

a to inna bajka
nie wiem jak jest w visual basicu ale w c# jest funkcja Controls.Find
musisz szukać czegoś podobnego



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 11:21 
Offline
Użytkownik

Dołączył(a): 10 sty 2018
Posty: 159
Pomógł: 11

Witam
użyj select case, np. ponumeruj sobie przyciski
Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


P.S. To kolejna z opcji ale skoro funkcja twoja działa no to co ty chcesz właściwie zrobić ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 11:57 
Offline
Nowy

Dołączył(a): 22 lis 2015
Posty: 8
Pomógł: 0

Działa jeżeli do funkcji przekazuje argument jako object typu Button

a ja chciałbym zrobić coś w stylu jak działa Callsub("nazwa funckcji" as String)
np:
//funkcje button Click
Sub ButtonOK_Click

End Sub

Sub ButtonUP_Click

End Sub

i np poprzez Call sub moge odwołac sie do funkcji w ten sposób:

dim nazwa_przycisku as String
Callsub(nazwa_przycisku & "_Click") //to działa


i chcę zrobic podobną funkcje która jako argument przyjmuje nazwe_przycisku jako String i Inty jako kolory RGB.
Cały czas kombinuje jak zamienić String na nazwe objektu typu Button(czy coś tego typu)

to by mi ułatwiło sprawe bo w moim programie mam bardzo dużą ilośc przycisków i w miare rozwoju programu bedą dynamicznie dodawane(mam taka nadzieje)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 12:12 
Offline
Użytkownik

Dołączył(a): 20 sty 2014
Posty: 56
Pomógł: 4

spróbuj:

Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


PS. używaj więcej googla, jak sam coś znajdziesz to się szybciej nauczysz:D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 13:10 
Offline
Nowy

Dołączył(a): 22 lis 2015
Posty: 8
Pomógł: 0

szpilek napisał(a):
spróbuj:

Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


PS. używaj więcej googla, jak sam coś znajdziesz to się szybciej nauczysz:D


W VB to na pewno działa natomiast w Basic 4 Android niestety nie.
W B4A nie ma czegoś takiego jak Me.Controls.Find()
natomiast jest "Me" ale po "Me." nic sie nie podpowiada

ale i tak dziękuje za zainteresowanie!!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 14:01 
Offline
Użytkownik

Dołączył(a): 10 sty 2018
Posty: 159
Pomógł: 11

Może spróbuj tego:
https://www.b4x.com/android/forum/threa ... iew.84501/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 16:22 
Offline
Nowy

Dołączył(a): 22 lis 2015
Posty: 8
Pomógł: 0

tfosik napisał(a):


Dziekuje za próby pomocy ale narazie stoje w miejscu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 16:39 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27224
Lokalizacja: Szczecin
Pomógł: 1041

ozi22 napisał(a):
ale narazie stoje w miejscu

Twoja wina - bo dostałeś już podpowiedź od kolegi tfosik ... zastosuj że IFy albo CASE'y i po ptakach ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 19:20 
Offline
Nowy

Dołączył(a): 22 lis 2015
Posty: 8
Pomógł: 0

Dziękuję za porady.
Panie Mirku IFy lub CASEy to by było najłatwiejsze rozwiązanie i na 100% by działało ale pisanie ponad 100 IFów to takie masochistyczne, w ostateczności na tym bym skończył ale znalazłem pewne rozwiązanie mianowicie:
-każdy Button , Label czy ImageView ma opcję Tag (Button.Tag) tak sie złożyło ze w Designerze przy tworzeniu przycisków w Tagu wpisywałem też jego nazwę i oto ten Tag został wykorzystany do stworzenia funkcji która po tym tagu odwołuje się do danego Butona i zmienia kolor (choć też można sie odwołać do Labela itd)

Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 19:42 
Offline
Użytkownik

Dołączył(a): 20 sty 2014
Posty: 56
Pomógł: 4

sprytnie, brawo!!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 cze 2018, o 22:34 
Offline
Nowy

Dołączył(a): 22 lis 2015
Posty: 8
Pomógł: 0

Lepszym rozwiązaniem będzie:

Składnia: [ Pobierz ] [ Ukryj ]
język vb
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Po If v.Tag ==tag Then lepiej dodać
Dim Button_temp As Button = v
Button_temp.Color=Colors.RGB(R,G,B)
ponieważ teraz mamy dostęp do wszystkich właściwości Buttona np

Button.Text

w poprzedniej wersji do tego nie było dostępu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO