再问有关捕获键盘问题.(50分)

  • 主题发起人 主题发起人 极品铁观音
  • 开始时间 开始时间

极品铁观音

Unregistered / Unconfirmed
GUEST, unregistred user!
目的:敲键盘字母键时动作,字母作为变量用于操作.
搜索论坛上的case key of 等都没办法编译通过,因为key为关键字而出错.我的程序如下:
procedure TF_lyshd.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin

if (key>=65) and (key<=91) then
begin
begin
with jc_dm.ADO_shd do
begin
close;
sql.clear;
sql.add('SELECT name,key_symbol FROM sys_parm a WHERE (a.key_symbol like key ) UNION ALL SELECT name,key_symbol FROM sys_parm b WHERE (b.key_symbol not like key)');
open;
dbgrideh1.DataSource.DataSet:=jc_dm.ADO_shd;
end;
end;
end;
end;
上面程序的key要用捕获到的字母键的变量代替.
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2545291
VAR
C:CHAR;
.....
c:=chr(key);
你上次的问题我也参与了,所以也想知道结果,关注一下!
 
你这个Key没有作为参数传输,另外你在KeyDown里面做访问数据库的动作是一种资源浪费,应该先把你的Key配置列表读入内存
 
楼上的高见啊,不过怎么实现啊?
 
那个key是为了好说明,直接用key作为参数出错.
 
if (Key='H') or (Key='h') then
with jc_dm.ADO_shd do
begin
close; //
sql.clear;
sql.add('SELECT * FROM sys_parm a WHERE (a.key_symbol like :bkey ) UNION SELECT * FROM sys_parm b WHERE (b.key_symbol not like :bkey)');
parameters.parambyname('bkey').value:=key;
open;
dbgrideh1.DataSource.DataSet:=jc_dm.ADO_shd;
end;
上面的语句只是筛选出h的记录,其他记录没显示达不到效果,如果用union all则出错:提供了不一致或不完整的信息.
 
后退
顶部