Akcje i TActionManager

0

Pisałem to już jakieś pół roku temu, ale nie było odpowiedzi. Mam nadzieję, że tym razem ktoś będzie potrafił mi pomóc :)

Otóż mam "mały" problem, z którym nie umiem sobie poradzić. Otóż menu główne aplikacji tworzę z wykorzystaniem komponentu TActionManager oraz listy akcji TActionList. Elementy menu dodaję dynamicznie podczas pracy programu. Problem pojawia się, gdy chcę zidentyfikować, jaką pozycję kliknięto (każda ma inną właściwość Tag). Nie działa właściwość ActionComponent (czy jakoś tak), co jest zrozumiałe, gdyż element menu (w tym wypadku klasy TActionClassItem) nie jest potomkiem TComponent... Proszę o pomoc. Z góry dziękuję.

(skopiowane ze starego postu :P )

0

Chyba wiem o co Ci chodzi - sam kiedyś miałem ten problem - przypisana akcja do jakiegoś elementu MenuItem nie przekazuje Sender`a, którym powinien "niby" być właśnie element menu - jednak tak nie jest.. - dlatego chyba musisz pozbyć się tych akcji i wstawić zwykłą procedurę:

procedure TForm1.MyProc(Sender: TObject);

I pod OnClick elementu..

Mam nadzieję, że o to chodziło..

0

Właśnie z tym jest problem, bo tam OnClicka (chyba) nie ma, a Sender przekazuje, owszem, tyle tylko, że Sender akcji, a akcja dla kilku elementów jest jedna.

0

Dokładnie - obawiam się, że dla tej "grupy" itemów, gdzie wykorzystujesz TAG będziesz musiał zrobić własnie taką procedurkę i na niej bazować - gdzie już bez problemu wyłapiesz Sender`a .. Ja co prawda nie szukałem zbyt długo rozwiązania do tego.. ale się przyzwyczaiłem.. Może i da się to jakoś zrobić..

0

Dochodzi możliwość dynamicznego tworzenia kilku akcji z tą samą procedurą obsługi, ale innymi Tagami, ale to w przypadku większej ilości itemów może skończyć się EOutOfMemory :( A tego byśmy nie chcieli :)

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