[delphi]jak pobrac nazwe kliknietego komponentu?

0

jak pobrac nazwe kliknietego komponentu?

chodzi mi o to ze na scenie mam 20 TimegeListow nazywających sie ImageList1..ImageList20 i mam PopupList przypisane do nich wszystkich i teraz jakos chce sie dowiedziec jesli wyswietli sie popup to na komponencie o jakiej nazwie - nie chodzi mi o class tylko name ale nie wiem jak to zrobic nom i wtedy gdy juz wiem jaką ma nazwe robie odpowiednią procedure

w PopupList mam 2 Buttony - Dodaj i Usun a pod nimi:

procedure TMainForm.DodajSkrt1Click(Sender: TObject);
var
  W:Word;
begin
  if Open.Execute then
    Path[1] := Open.FileName;
W:=0;
Image1.Picture.Icon.Handle := ExtractIcon(hInstance, PCHAR(Path[1]), 0);
end;

procedure TMainForm.UsuSkrt1Click(Sender: TObject);
begin
  Path[1] := '';
  Image1.Picture.LoadFromFile(Sciezka + 'Brak.JPG');
end;

i chce tak zrobic ze w zaleznosci ktory sie kliknie ImageList np. jak sie kliknie Image jeden to macie tam wyzej jak sie kliknie Image2 to znowu wszystkie 1 z powyzszego kodu zamienic na 2 itd. chyba ze macie jakis lepszy pomysl

aha Path to tablica string

Z gory dzieki za jakies wskazó [browar] wki

0

Zamień Imagex na (Sender as TComponent)

0

dzieki wielkie ale jak dam :

(Sender as TComponent).Picture.Icon.Handle := ExtractIcon(hInstance, PCHAR(Path[1]), 0);

albo

(Sender as TComponent).Picture.LoadFromFile(Sciezka + 'Brak.JPG');

to delphi wywala bląd

co jest zle ??

0

Hmm chciałeś pobrać nazwę więc wystarczyło rzutować na TComponent, - zamień po "as TComponent" na "as TImage" ..

0
procedure TMainForm.DodajSkrt1Click(Sender: TObject);
var
  W:Word;
begin
  if Open.Execute then
    Path[1] := Open.FileName;
W:=0;
(Sender as TImage).Picture.Icon.Handle := ExtractIcon(hInstance, PCHAR(Path[1]), 0);
end;

zrobilem dokladnie tak ^ i dalej nie dziala (jest to akcja buttona w popupmenu wyswietlanym po kliknieciu na Image)

wyskakuje taki blad podczas klikania na tego buttona :
,,raised exception class EInvalidCast with Messege "Invalid Class Typecast''. proces stoped ..."

0

wyskakuje taki blad podczas klikania na tego buttona :
,,raised exception class EInvalidCast with Messege "Invalid Class Typecast''. proces stoped ..."

jeżeli klikasz na buttona i rzutujesz ten typ na TImage to ja się nie dziwię, że jest błąd. Ten kod ma być w OnCLick dla klasy TImage

0

dzieki wielkie wlasnie to rozwiazalem :)))

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