比如说在一个TEdit里面,已有若干个字符,强制让光标必须在最后一个字符的后面;也可以用于,点击TEdit进行输入时,光标停留在最后一个字符后

解决方案 »

  1.   

    我再解释一下吧,就是要类似于按END键的效果
      

  2.   

    SelStart属性设置一下就可以了或者使用API函数SetCaretPos!
      

  3.   

    procedure TForm1.Edit1Enter(Sender: TObject);
    begin
      TEdit(Sender).SelStart:=Length(TEdit(Sender).Text);
    end;
      

  4.   

    SetCaretPos的参数要怎么写?
    我更正一下,是我问的不对,应该是实现END键的效果,让光标到最后一个字符后
      

  5.   

    如果要实现End的效果SelStart是实现不了的,因为它会选择文本至于SetCaretPos进Delphi的SDK看看吧,俺手头现在么有D啊!
      

  6.   

    Declare Function CreateCaret Lib "user32" Alias "CreateCaret" (ByVal hwnd As Long, ByVal hBitmap As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long 
    这个API估计有用吧!!
    参数 类型及说明 
    hwnd Long,拥有插入符的那个窗口的句柄 
    hBitmap Long,用作插入符的一幅位图的句柄。可以是0或1;在这种情况下,插入符可通过nWidth和nHeight参数创建。如设为1,则新插入符以灰色显示;而不是传统的黑色 
    nWidth Long,采用逻辑单位的插入符的宽度 
    nHeight Long,采用逻辑单位的插入符的高度 
      

  7.   

    FrameSniper(§好好学习 天天向上§) :
    你小子以后回复人家的问题要注意负责任,没有把握的想法最好不要说得那么肯定。
    SelStart当然是可以实现的,joky1981() 的:
    procedure TForm1.Edit1Enter(Sender: TObject);
    begin
      with TEdit(Sender) do
        SelStart := Length(Text);
    end;
    就可以了。
    至于使用SetCaretPo或者大家没有提到的使用消息EM_SETSEL,本质上和使用SelStart并没有区别,SelStart也是调用API和发送消息实现的。—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  8.   

    支持~lxpbuaa
    在delphi中object(sender),传递消息