Delphi 调用FormKeyDown事件解决思路
Delphi 调用FormKeyDown事件
怎么调用
FormKeyDown(Sender,kye,TShiftState);
这三个属性具体讲的是什么
出发的对象,是Form吗?
kye 我知道是F2
Tshiftstate是什么
怎么在别的事件里面调用这个事件。
------解决方案--------------------
sender值触发事件的对象
key就是按键值
Tshiftstate是一些特殊键 set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble)
------解决方案--------------------
自己ctrl+鼠标左键点击TShiftState,你就能看到TShiftState的源码,看到它是如何声明的
// TShiftState 是一个set 集合类型,它包含下面这些值,顾名思义就知道这些值表示啥
TShiftState = set of (ssShift, ssAlt, ssCtrl,
ssLeft, ssRight, ssMiddle, ssDouble);
事件是没有调用一说的,就这个FormKeyDown来说,它是一个用来处理 KeyDown 这个消息的回调函数,
你可以直接调用这个函数,但这样它跟 KeyDown 消息没有关系
怎么调用
FormKeyDown(Sender,kye,TShiftState);
这三个属性具体讲的是什么
出发的对象,是Form吗?
kye 我知道是F2
Tshiftstate是什么
怎么在别的事件里面调用这个事件。
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=Vk_F2 then
begin
with DataModule3.qry1 do
begin
Close;
SQL.Clear;
SQL.Add('select top 1 奖项名称,奖品名称,奖品数量,抽取数量,一次抽取 from 奖品设置 where 是否=0;');
Open;
end;
if DataModule3.qry1.RecordCount>0 then
begin
lbl2.Caption:=DataModule3.qry1.FieldValues['奖项名称'];
lbl3.Caption:=DataModule3.qry1.FieldValues['奖品名称'];
lbl4.Caption:='中奖名额:'+IntToStr(DataModule3.qry1.FieldValues['奖品数量']);
lbl5.Caption:='已抽取数量:'+IntToStr(DataModule3.qry1.FieldValues['抽取数量']);
lbl6.Caption:='一次抽取:'+IntToStr(DataModule3.qry1.FieldValues['一次抽取']);
intdata:=IntToStr(DataModule3.qry1.FieldValues['抽取数量']);
intdatai:=IntToStr(DataModule3.qry1.FieldValues['一次抽取']);
lbl2.Visible:=True;
lbl3.Visible:=True;
lbl4.Visible:=True;
lbl5.Visible:=True;
lbl6.Visible:=True;
end;
end;
end;
------解决方案--------------------
sender值触发事件的对象
key就是按键值
Tshiftstate是一些特殊键 set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble)
------解决方案--------------------
自己ctrl+鼠标左键点击TShiftState,你就能看到TShiftState的源码,看到它是如何声明的
// TShiftState 是一个set 集合类型,它包含下面这些值,顾名思义就知道这些值表示啥
TShiftState = set of (ssShift, ssAlt, ssCtrl,
ssLeft, ssRight, ssMiddle, ssDouble);
事件是没有调用一说的,就这个FormKeyDown来说,它是一个用来处理 KeyDown 这个消息的回调函数,
你可以直接调用这个函数,但这样它跟 KeyDown 消息没有关系