[ franjo_tahi @ 08.07.2009. 22:28 ] @
Kreiram svoju kontrolu koja bi trebala raditi sa ShortCut-ovima. Naime, ima do 8 button-a, a za svaki se može reči koji je ShortCut.

Najlogičnije mi je bilo upotrijebiti tAction i dodjeliti mu .OnExecute = buttonOnClick;

U glavnom, ne radi mi. Pokušao sam napraviti jedan programčić s 2 gumba. Ako postavim na formu kontrolu: tActionList i njoj dodam Action, sve je ok, radi.
Ako u runtime keriram tActionList i tAction - ne radi...

ovo je kod programčića koji bi trebao nakon pritiska na btn1, na svaki F3 ispisati "btn 2":

Code:

var
  Form1: TForm1;
  a: TAction;
  al: TActionList;
  
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   al := TActionList.Create(nil);
   al.State := asNormal;
   a := TAction.Create(al);
   a.ShortCut := TextToShortCut('F3');
   a.Visible := true;
   a.Enabled := true;
   a.OnExecute := Button2Click;
   a.ActionList := al;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   ShowMessage('btn 2');
end;


U čemu griješim?
[ franjo_tahi @ 08.07.2009. 22:31 ] @
E, jesam smotan....
neka ostane, možda kome zatreba. Greška je u jednom retku:

Code:

   al := TActionList.Create(Nil);


treba:

Code:

   al := TActionList.Create(Form1);