各位大侠,我用delphi想在dbgrid中可以通过按键来显示不同的数据表,要怎么做呢?
展开全部
既然是按键 那就用消息机制处理,键盘消息
procedure testMsg(var Msg: TMessage); message WM_KEYDOWN;
procedure Form1.testMsg(var Msg: TMessage);
begin
If Msg.Message=wm_keydown Then
Begin
If (Msg.wparam= Vk_UP) Then //如果是向上键
Begin
//做你想做的事情 写sql 打开对应的dataset 例如adoquery 那对应绑定的dbgrid就自动改了
End;
End;
end;
procedure testMsg(var Msg: TMessage); message WM_KEYDOWN;
procedure Form1.testMsg(var Msg: TMessage);
begin
If Msg.Message=wm_keydown Then
Begin
If (Msg.wparam= Vk_UP) Then //如果是向上键
Begin
//做你想做的事情 写sql 打开对应的dataset 例如adoquery 那对应绑定的dbgrid就自动改了
End;
End;
end;
更多追问追答
追问
感谢您的答案,但是我还有个关键的地方不懂,比如我只有一个dbgrid,然后我有20个表格想要显示,我的意思是我要按一次键盘的时候,就在这个表格中分别显示不同的表格, 所以我的问题是:当我按以下某个动作的时候,我是要控制adoquery指向不同的表格呢 ,还是我要放20 个adoquery,使其每个指向不同的表格呢? 如果是adoquery分别指向不同的表格,那么这条语句要怎么写呢?
追答
adoquery里的sql语句更改就好
If (Msg.wparam= Vk_UP) Then //如果是向上键
Begin
adoquery.close;
if 条件1 then
begin
adoquery.sql.text:='select * from table1';
adoquery.open;
end
else if 条件2 then
begin
adoquery.sql.text:='select * from table2';
adoquery.open;
end
.....
.....
.....
End;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询