[Delphi] Zmienianie barwy wszystkich buttonow

0

Mam cos takiego:

[code]
for i:=0 to ComponentCount-1 do
if (Components[i] is TIAeverButton) then
TIAeverButton(Components[i]).OnMouseMove := zmiana_koloru(xxx);
[/code]

No TIAeverButton to jest taki button i chce zeby we wszystkich buttonach zmienic procedure OnMouseMove. Kolor jednego buttona zmienia wlasnie procedura zmiana_koloru wyglada ona tak:
[code]procedure zmiana_koloru(nazwa : TIAeverButton);[/code]
No i teraz nie wiem co wstawic za xxx. Probowalem juz TIAeverButton(Components[i]) i samo Components[i] ale nie chcialo mi sie kompilowac. Moge recznie dodac ta procedure ale to zajmie duzo miejsca w kodzie i bedzie czasochlonne :)

Skoro juz napisalem post to dodam jeszcze jedno :) Jak odwolac sie do wszystkich komponentow ktore nie sa TIAeverButton i w nich zmienic procedure. Mam cos takiego:
[code]
for i:=1 to ComponentCount-1 do
if (Components[i] is not TIAeverButton) then
TComponent(Components[i]). // wlasnie to chcialbym wstawic cos takiego OnMouseMove := czyszczenie; ale nie ma czegos takiego
[/code]
No i wlasnie takie mam problemiki. Mam nadzieje ze znajdzie sie ktos kto mi odpowie :)

0

Kod powinien wyglądać tak:

for i:=0 to ComponentCount-1 do
if (Components[i] is TIAeverButton) then
TIAeverButton(Components[i]).OnMouseMove := zmiana_koloru;

czyli bez żadnycha parametrów :)

natomiast musisz zadeklarować procedurę zmiana_koloru z parametrami skopiowanymi z oryginalnej procedury onmousemove komponentu :)

0

natomiast musisz zadeklarować procedurę zmiana_koloru z parametrami skopiowanymi z oryginalnej procedury onmousemove komponentu :)

Hmm czytalem to kilka razy i jakos nie moge zalapac o co biega :) Jak bys mogl nieco jasniej :)

0

Hmm czytalem to kilka razy i jakos nie moge zalapac o co biega :) Jak bys mogl nieco jasniej :)

Jak klikniesz dwukrotnie w zakładce events na zdarzeniu onmousemove, to pojawi ci się procedura, coś w rodzaju:

procedure tform1.przyciskmousemove(sender:tobject; button:tmousebutton; itd...);
begin
...
end;

Mówiąc o parametrach miałem na mysli to:

(sender:tobject; button:tmousebutton; itd...);

więc deklarujesz teraz procedurę z takimi samymi parametrami, która przejmie zadania onmousemove:

procedure zmiana_koloru(sender:tobject; button:tmousebutton; itd...);

Mam nadzieję, że teraz wiesz, o co chodzi :)

0

No tak teraz zrozumialem ale pojawia sie inny problem bo:
[code]
procedure TForm1.zmiana_koloru(nazwa : TIAeverButton);
begin
nazwa.ButtonColor := $00DCE1E4;
end;
[/code]

Wlasnie tak wyglada procedura zmiana_koloru no i jak zmienie te parametry to co zrobic z nazwa

0

Wykorzystaj zmienną sender przekazywaną w parametrach. Jak chcesz name, to dajesz po prostu:

tcośtam(sender).name;

1 użytkowników online, w tym zalogowanych: 0, gości: 1