Tag

0

Mam jakąś tam procedure z parametrem:

procedure proc1(i: integer);
begin
...
end;

I chcę, aby parametrem był tag danego komponentu - sendera, ale jako element Menu (TMenuItem). Niestety takie coś nie działa:

proc1(Sender as TComponent).Tag);

Ponieważ zwraca zawsze tag, który jest tagiem menu (TMainMemu). Próbowałem też tak:

proc1(((Sender as TComponent) as TMenuItem).Tag);

Oczywiście też nie działa.. jak to należy zrobić ?

0

To działa!!

procedure TForm1.MenuItem1Click(Sender: TObject);
begin
 Proc1(TMenuItem(Sender).Tag);
end;

Sprawdzałem to na procedurze Proc1 o następującej treści:

procedure Proc1(i: integer);
begin
 ShowMessage(IntToStr(i));
end;

W Tagu MenuItema dałem 100 - pokazało się okienko z liczbą 100, czyli tag został poprawnie przekazany. Mozliwe, że blad zrobiles w samej proceudrze Proc1.

//dopisane
I nie potrzebnie zamieniałeś Sender na TComponent a dopiero potem na TMenuItem - to tez moze byc przyzczyna

0

A mi oczywiście dalej nie działa.. zawsze wskazując 0, może to przez to, że używam BcBarMenus (ttp://www.torry.net), ale aż dziwne...

DOPISANE: Okej doszedłem już co robie źle.. po prostu przekazuje wartość Tag do akcji.. i jakoś się on przekazać nie chce - można to jakoś poprawić? Nie będę przecież robił 17 procedur na prawie to samo, to chciałem zrobić właśnie tak z akcją..

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