如何将光标在几个编辑框中改变焦点?

hzzkf 2000-07-25 01:57:00
高手们:
我在一个窗口中放置了几个edit组件。当输入信息时,如果用鼠标改变光标在几个edit中的位置比较麻烦,我想用键盘中的上、下光标键实现这一功能,如何进行?
...全文
170 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
meijg 2000-07-26
  • 打赏
  • 举报
回复
有没有包括messages
hzzkf 2000-07-26
  • 打赏
  • 举报
回复
当我编译时,PostMessage(Handle,WM_NEXTDLGCTL,1,0);这句通不过,报错为[Error] dlUnit.pas(92): Undeclared identifier: 'WM_NEXTDLGCTL'如何解决
supershan 2000-07-26
  • 打赏
  • 举报
回复
同意
meijg 2000-07-26
  • 打赏
  • 举报
回复
你要设好各个控键的tabstop属性,设定好他们的次序,把按钮放到后面,这样就会好了
如果你想回到上一个控件,就用shift+Tab组合键
hzzkf 2000-07-26
  • 打赏
  • 举报
回复
我用了第一个方法,可以改变光标位置。但我只想让焦点在编辑框中改变,程序却将光标移到了其他按键上,且用键盘不能将光标再移回去了,如何解决
Michaelyfj 2000-07-25
  • 打赏
  • 举报
回复
下面的程序可以实现Enter把光标移动到下一个Edit
if Key=#13 then { 判断是按执行键}
if not (ActiveControl is TDbgrid) Then
Begin { 不是在TDbgrid控件内}
// key:=#0;
perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
end else
if (ActiveControl is TDbgrid) Then{是在 TDbgrid 控件内}
begin
With (ActiveControl as TDbgrid).DataSource.DataSet Do
if not eof then next
else perform(WM_NEXTDLGCTL,0,0);
{ if Selectedindex<(FieldCount-1) then
Selectedindex:=Selectedindex+1 // 移动到下一字段
else Selectedindex:=0; }
end;
meijg 2000-07-25
  • 打赏
  • 举报
回复
下面是一段程序,可以实现敲击Enter设置焦点到下一个控件:
procedure TAppbarMain.FormKeyPress(Sender: TObject; var Key: Char);
begin
if(Key=VK_RETURN) then
begin
SendMessage(Handle,WM_NEXTDLGCTL,0,0);
Key:=0;
end;
end;
halfdream 2000-07-25
  • 打赏
  • 举报
回复
先设FORM 的KeyPreview 的属性为true;

然后在KEYDOWN事件中:

if Key=VK_UP then
begin
PostMessage(Handle,WM_NEXTDLGCTL,1,0);
Key:=0;
end
if Key=VK_DOWN then
begin
PostMessage(Handle,WM_NEXTDLGCTL,0,0);
Key:=0;
end

注意:最好用PostMessage, 不宜用SendMessage

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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