关于edit和bitbtn的问题(100分)

  • 主题发起人 主题发起人 linuxcrow
  • 开始时间 开始时间
L

linuxcrow

Unregistered / Unconfirmed
GUEST, unregistred user!
我想实现用enter代替tab<br>以下的代码可以实现<br>procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);<br>begin<br>&nbsp;if key=#13 then<br>&nbsp; begin<br>&nbsp; key:=#0;<br>&nbsp; &nbsp;perform(WM_NEXTDLGCTL,0,0);<br>&nbsp; end;<br>end;<br>但是只能从一个edit1到edit2.<br>我要是在form上放一个bitbtn的话,就会先执行bitbtn的click的事件!<br>而跳过edit2(taborder的顺序是:edit1,edit2 bitbtn 0 1 2)<br>为什么??
 
把那些代码加在edit的KeyPress事件中就可以了,并且可以把所有edit的keypress事件<br>公用一个keypress过程。
 
9494<br>楼上说的是呀
 
bitbtn的Default属性设为False
 
MilkRoad说的不是关键,即使把代码加在Edit的KeyPress事件中,也还是不能解决<br>问题,出现你说的那种情况的关键原因是你那个BitBtn按钮设置了Default属性,所以<br>把BitBtn的Default属性设为False就没事了,weekboy说的是对的。
 
procedure Tadd_frm.FormKeyPress(Sender: TObject; var Key: Char);<br>begin<br>if key=#13 then<br>if (ActiveControl is Tedit) Then<br>&nbsp;begin<br>&nbsp; &nbsp; key:=#0;<br>&nbsp; &nbsp; perform(WM_NEXTDLGCTL,0,0); &nbsp; //移动到下一个控件<br>&nbsp; &nbsp; end;<br>end;<br>把edit的KeyPress事件启用FormKeyPress事件就ok了!<br>
 
把 bitbtn的Default属性设为False<br>再用 披星戴月 的代码,效果极好!
 
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);<br>begin<br>&nbsp;if key=#13 then<br>&nbsp; &nbsp;begin<br>&nbsp; &nbsp; &nbsp;key:=#0;<br>&nbsp; &nbsp; &nbsp;if ActiveControl is TEdit then<br>&nbsp; &nbsp; &nbsp; &nbsp;SelectNext(ActiveControl,true,true);<br>end;
 
问题描述清楚了吗?是不是在Edit2中按回车要跳到Edit1,而不是Bitbtn上?<br><br>如果有很多Edit,可用数组动态建立,让它们共享KeyPress事件,这样光标定位较容易。
 
程序是这么写地!~[:D]<br>procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean);<br>begin<br>if Msg.CharCode=13 then<br>begin<br>&nbsp; Msg.CharCode:=9;<br>&nbsp; Handled:=False;//消息没有处理.<br>end;<br>给分吧!~~~~
 
怎么没反应?!
 
单击“EDIT”中的“TAB ORDER”<br>按你想要的顺序排。
 
我觉得还是逐个编写Edit的事件比较好!
 
是taborder的问题,如果当前输入焦点在edti2上,按回车后要跳到edit1上,按顺序设置<br>taborder即可!!!
 
//处理在对象TObject按回车键时,自动将焦点移到下一个可聚焦处<br>procedure PressEnterKey(Sender: TObject; Key: Word);<br>begin<br>&nbsp; with Sender as TWinControl do<br>&nbsp; begin<br>&nbsp; &nbsp; PostMessage(Handle, WM_KEYDOWN, VK_TAB, 1);<br>&nbsp; &nbsp; PostMessage(Handle, WM_KEYUP, VK_TAB, 1);<br>&nbsp; end;<br>end;
 
没有问题,是不是你自己搞错了,你再检查一下taborde的先后设置
 
后退
顶部