[ yiwan @ 12.08.2008. 12:47 ] @
Pravim aplikaciju koja izmedju ostalog na formi ima TDBgrid, TEdit i par dugmica...

Fokus je uglavnom na TDBgridu tj. na TEditu ciji onChange aktivira pretragu i nalazi odgovarajucu vrstu u gridu.

Hteo bi da kad stisnem neku kombinaciju tastera (sa Ctrl, Alt i sl.) pozovem Onclick od nekog dugmeta i tako izbegnem upotrebu misa.

Probao sam na vise i nacina i sledeci su problemi:
- ako koristim akcelerator (&) kod dugmeta, on se aktivira i bez upotrebe Alt, sto mi onemogucava pretragu (jer je fokus na Tedit koji ocekuje unos)
- ako koristim neto tipa:
Code:
if (Key = Ord('N')) and (ssCtrl in Shift) then begin 
  Key := 0;
  NoviBtnClick(self);
end; 

onda reaguje na kombinaciju, ali i udje u obradu onChange od TEdit (nece da ignorise taj pritisak tastera).

Gde gresim i ima li neko mozda neki bolji predlog da ovo izvedem?


P.S. mora biti podrzano u Delphi5 tako da Akcije i nesto slicno otpada...
[ savkic @ 12.08.2008. 14:16 ] @
> Hteo bi da kad stisnem neku kombinaciju tastera (sa Ctrl, Alt i sl.) pozovem Onclick od nekog dugmeta i tako izbegnem upotrebu misa.
> gde gresim i ima li neko mozda neki bolji predlog da ovo izvedem?
> P.S. mora biti podrzano u Delphi5 tako da Akcije i nesto slicno otpada...

Shortcutovi su prirodan način da se to reši, bilo da ćeš koristiti OnShortcut na Formi ili TAction (koji postoji u D5). Najlakše ti je da ubaciš novi TAction, dodeliš shortcutove koji ti trebaju, ubaciš kod i povežeš button sa njim.
[ franjo_tahi @ 12.08.2008. 21:13 ] @
Postoji i drugo rješenje:

1. formi na kojoj radiš postavi property u obj. insp.
KeyPreview := true;

2. kreiraj proceduru OnKeyUp npr:
procedure Form1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (ssAlt in Shift) and (Key = 65) then // 65 = a illi A
Botton1.OnKeyPress; // Poziv procedure gumba
end;