在Edit1Exit(Sender: TObject);事件里面有这么一些代码:     
 if messagebox(0,'你输入的水表编号不够6位数!选择YES进行修改,选择NO系统自动补足!','提示',MB_YESNO+MB_ICONQUESTION)=IDYES THEN
      edit1.SetFocus
      else begin
      edit1.Text:=inttostr(100000+strtoint(edit1.Text));
      edit2.SetFocus;
      end;
下面是NNN条语句
执行完这个过程以后
edit2中的光标消失了!但是如果输入数据的时候它还是会在edit2里面显示出来,在edit2的最前面显示出来,而edit2里面原有的字符向后推进.如何把我的光标弄出来啊?

解决方案 »

  1.   

    我用鼠标怎么点击edit2光标还是没有出来,只有把光标移动到别的控件上再点会edit2,光标才会在edit2上显示出来!不可能大白天见鬼吧?
      

  2.   

    unit test;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        procedure Edit2Enter(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Edit2Enter(Sender: TObject);
    begin
    if messagebox(0,'你输入的水表编号不够6位数!选择YES进行修改,选择NO系统自动补足!','提示',MB_YESNO+MB_ICONQUESTION)=IDYES THEN
    edit1.SetFocus
    end;end.
    你在新工程里面添加2个Tedit控件!然后执行,点击edit2,你就会发现问题了!
      

  3.   

    如果选择了NO,切换窗口到别的窗口再切换回去,这就可以看到光标在edit2的最末尾!
      

  4.   

    我有个简单的办法:不用messagebox,用一个自己创建的窗口用showmodal显示出来来给用户选择就行了。
      

  5.   

    呵呵,有意思,还真没发现过这个问题。没这么处理过录入问题,这种界面并不友好。
    建议别研究这个了,反正大多数用户对太多的MessageBox都会厌烦的。输入不符合要求时disable一些按钮是比较规范的做法。
      

  6.   

    我试了一下.如果你在edit2的onenter中加个MESSAGEBOX对话框.Edit2就不会出显什么光标.
      

  7.   

    我试了一下,我有光标。
    我是W2k+ D7