正常情况下,SelStart报告的应该是一个中文两个长度的,如edit中文字“中华人民共和国”,光标停在“人”前面时,selstart应该是4,但是现在报告2,不只怎么回事。
我的edit是自己创建的:
  myEdit:=TEdit.Create(Self);
  myEdit.Parent:=SG1;
  myEdit.Ctl3D:=False;
  myEdit.ReadOnly:=True;
  myEdit.Visible:=False;
  myEdit.PopupMenu:=PopupMenu1;
写在formCreat事件里,不只问题在哪里
在线急盼回复

解决方案 »

  1.   

    Sel返回的是字符数,不是字节数。
      

  2.   

    Visible:=False,怎么知道光标停在“人”前面?
    给多点代码来看看
      

  3.   

    必要的时候是把visible设为true的
    另:我自己新建了一个application,在新的工程里,edit的selStart就不出错,所以我估计是我哪里的因素设错了
      

  4.   

    代码在这里,写在stringgrid的OnDrawCell事件里的
      if State=[gdFocused,gdSelected] then begin
        myEdit.SetBounds(Rect.Left,Rect.Top,Rect.Right-Rect.Left,Rect.Bottom-Rect.Top);
        myEdit.Text:=SG1.Cells[ACol,ARow];
        myEdit.Visible:=True;
      end;
      

  5.   

    function TCustomEdit.GetSelStart: Integer;
    begin
      SendMessage(Handle, EM_GETSEL, Longint(@Result), 0);
    end;
    selStart是通过发送消息取值的
      

  6.   

    to  hmzgz81(哩翱)
    区域设置都是默认的中文
    同时我在同样的机器上再建立一个程序(XP系统),就不会出现这种错误
    真是见鬼了
      

  7.   

    是XPMan的问题,就是那个delphi7支持xp样式的控件,当界面上有他的时候,在xp下就返回一个汉字一个长度,其他情况下都是一个汉字两个长度
      

  8.   

    长见识了~~
    XPMan还会影响这个`
    谢谢楼主喽。