在DBGrid上怎样让回车代替Tab健作焦点切换。(在线等。。。)

myan18 2003-08-21 08:50:45
在DBGrid上怎样让回车代替Tab健作焦点切换。(在线等。。。)
...全文
29 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
myan18 2003-08-21
  • 打赏
  • 举报
回复
顶!up!
myan18 2003-08-21
  • 打赏
  • 举报
回复
halibut(乡下人)
代码不好使,当ENTER时焦点跑到第一个控件。
myan18 2003-08-21
  • 打赏
  • 举报
回复
我先试试。
halibut 2003-08-21
  • 打赏
  • 举报
回复
... KeyPress(..,DWORD Key)
{
if(Key==VK_RETURN)
{
Key = 0;
SendMessage(Handle,WM_NEXTDLGCTL,0,0);
}
}
...
myan18 2003-08-21
  • 打赏
  • 举报
回复
谢谢keiy():
你给我的不仅仅是答案,更重要的是认真的态度!
myredsun 2003-08-21
  • 打赏
  • 举报
回复
在KeyPress事件里判断是否输入回车,如果为回车则把Key的值修改为Tab键的值即可
真如实观 2003-08-21
  • 打赏
  • 举报
回复
当然你要作if(Key==13)的判断。
The PostMessage function places (posts) a message in the message queue associated with the thread that created the specified window and then returns without waiting for the thread to process the message. Messages in a message queue are retrieved by calls to the GetMessage or PeekMessage function.
真如实观 2003-08-21
  • 打赏
  • 举报
回复
//这么麻烦,这样写可以吗?
PostMessage(DBGrid1->Handle,WM_KEYDOWN,VK_TAB,0);
//把WM_KEYDOWN消息发给DBGrid1,所以在要响应DBGrid1的KeyDown事件。
柯本 2003-08-21
  • 打赏
  • 举报
回复
我试过与bcb6的pack无关(我没打pack,在win98下通过)
不行的话试试这个吧
在form1.h中
...
public: // User declarations
void __fastcall AppMessage(tagMSG &Msg, bool &Handled);
...
在form1.cpp中
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
if ((ActiveControl->Name=="DBGrid1") && (Msg.message == WM_KEYDOWN)&& (Msg.wParam==13))
{
Msg.wParam=VK_TAB;
Msg.lParam=983041; //我试出来的tab的键值
Handled = false;
}
/* for all other messages, Handled remains False so that other message handlers can respond */
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->OnMessage=&AppMessage;
}
//---------------------------------------------------------------------------
柯本 2003-08-21
  • 打赏
  • 举报
回复
也有可能是ADVANCE SERVER的问题,有可能的话换机试试
我还有一方法,等试好后再贴
myan18 2003-08-21
  • 打赏
  • 举报
回复
我检查了是DBGrid1的KeyPress及KeyDown。
我没有安装bcb6的pack4,会是它引起的毛病吗?
myan18 2003-08-21
  • 打赏
  • 举报
回复
我是2段程序都加入
BCB6(build 10.157)+W2K(ADVANCE SERVER)+PACEK3
柯本 2003-08-21
  • 打赏
  • 举报
回复
是不是你看错了,是DBGrid1的KeyPress及KeyDown,不是Form的
柯本 2003-08-21
  • 打赏
  • 举报
回复
你是什么版本,我是bcb6+pack4+2k+pack2
测试通过后才贴来的(2段程序都要加入)
myan18 2003-08-21
  • 打赏
  • 举报
回复
keiy()
你的方法不行啊!
当焦点在DBGrid上时,按回车焦点不能横向移动。
柯本 2003-08-21
  • 打赏
  • 举报
回复
繁一点:
void __fastcall TForm1::DBGrid1KeyPress(TObject *Sender, char &Key)
{
if(Key==13)
{
Key=0;
}

}
//---------------------------------------------------------------------------

void __fastcall TForm1::DBGrid1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key==13)
{
Key=VK_TAB;
}

}

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧