嘿嘿,有很多时候需要计算Edit1的文本长度,来判断它是长了还是短了,比如:
if Edit1的文本长度 < 6 then
  ShowMessage('邮编号码格式不正确!');当当当当~问题出来了!Edit1的文本长度如何计算?方法有很多种的!抢答开始!Go!!!

解决方案 »

  1.   

    if SendMessage(Edit1.Handle, WM_GETTEXTLENGTH, 0, 0) < 6 then
      

  2.   

    我说一种
    Edit1.GetTextLen实际上是: Edit1.Perform(WM_GETTEXTLENGTH, 0, 0);
      

  3.   

    你这个是后期判断,也可以在前期限制,设定edit的输入格式和长度,,使用MaskEdit可以更灵活地设置EditMask,限制输入内容。
      

  4.   

    抛一块板砖:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Message: TMessage;
    begin
      Message.Msg := WM_GETTEXTLENGTH;
      Message.WParam := 0;
      Message.LParam := 0;
      Message.Result := 0;
      Edit1.WindowProc(Message);  ShowMessage(IntToStr(Message.Result));
    end;
      

  5.   

    再来!
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Message: TMessage;
    begin
      Message.Msg := WM_GETTEXTLENGTH;
      Message.WParam := 0;
      Message.LParam := 0;
      Message.Result := 0;
      Edit1.DefaultHandler(Message);  ShowMessage(IntToStr(Message.Result));
    end;
      

  6.   

    常用的就 Length(Edit1.Text) 和 SendMessage(Edit1.Handle, WM_GETTEXTLENGTH, 0, 0) 这两个喽
      

  7.   

    再来!procedure TForm1.Button1Click(Sender: TObject);
    var
      Message: TMessage;
    begin
      Message.Msg := WM_GETTEXTLENGTH;
      Message.WParam := 0;
      Message.LParam := 0;
      Message.Result := 0;
      Edit1.Dispatch(Message);  ShowMessage(IntToStr(Message.Result));
    end;
      

  8.   

    这算不算...-_-  Edit1.SelectAll;
      ShowMessage(IntToStr(Edit1.SelLength));
      

  9.   

    any body else?
    再来!
    type
      TWinControlCracker = class(TWinControl);procedure TForm1.Button1Click(Sender: TObject);
    var
      Message: TMessage;
    begin
      Message.Msg := WM_GETTEXTLENGTH;
      Message.WParam := 0;
      Message.LParam := 0;
      Message.Result := 0;
      TWinControlCracker(Edit1).MainWndProc(Message);  ShowMessage(IntToStr(Message.Result));
    end;
      

  10.   

    Edit1.GetTextLen
    但不知道为什么delphi7区分汉字,delphixe2不区分
      

  11.   

    嘿嘿,我马上要放出终极方法了,看来研究VCL源码的不多啊!!!
      

  12.   

    ...here comes it!
    type
      TWinControlCracker = class(TWinControl);procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(IntToStr(CallWindowProc(TWinControlCracker(Edit1).DefWndProc, Edit1.Handle, WM_GETTEXTLENGTH, 0, 0)))
    end;
      

  13.   

    果然……原理都是一样的,你这样写,莫非就是绕了更多弯,代码看上去更难懂,执行效率也不见得有提升,这样写码反而更容易出错,喷完。LZ有心深研VCL源码的精神和做法值得赞,但在实际应用就不太有必要去纠结茴字有多少种写法,快捷可靠的达成任务就OK!
      

  14.   

    执行效率肯定有提升的!不过实际应用还是Length(Edti1.Text)用得多啊!