PDA

View Full Version : تشخیص فشرده شدن کلید Tab



ALIreza_nil
دوشنبه 04 آبان 1383, 14:20 عصر
با سلام
چطوری فشرده شدن کلید TAB را متوجه بشوم؟

با vk_tab و حتی کد کلید که عدد 9 است هم نشد :گیج:

مهدی کرامتی
دوشنبه 04 آبان 1383, 15:57 عصر
معمولا در اکثر کنترلها کلید Tab برای انتقال کنترل Focus به کامپوننت بعدی بکار میرود و شما نمیتوانید آنرا در OnKeydown به دام بیاندازید، اما میتوانید آنرا در OnKeyup بدام بیاندازید:

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_TAB then showmessage('Tab Key Pressed');
end;

ALIreza_nil
دوشنبه 04 آبان 1383, 16:40 عصر
ممنون از راهنمایی شما

ولی مثلا من یک کامپونت
editbox
دارم خودم برحسب نیاز خودم درست میکنم که نیاز به تشخیص فشرده شدن این کلید در متن کامپونت دارم این را چیکار کنم

:)

azhdari
دوشنبه 04 آبان 1383, 17:56 عصر
شاید این کد بتونه کمی کمک کنه :



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, AppEvnts;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
ApplicationEvents1: TApplicationEvents;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type myeditbox=class(tedit)
private
procedure onkeydown(var message :tmessage);message wm_killfocus ; // <- ofcourse it's not real tab key prressed
end;

var
Form1: TForm1;
i:myeditbox;

implementation

{$R *.dfm}


procedure myeditbox.onkeydown(var message:tmessage);
begin

showmessage('tab key pressed');
// if you want to don't let it to go to the another control after tab key pressed
//form1.ActiveControl:=i;

inherited;
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
i:=myeditbox.create(self);
i.Left:=50;
i.Top:=50;
i.Parent:=form1;
end;

end.