诸位高手请进,如何在edit中使光标变成下划线? 我用了以下代码;
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    CreateCaret(Edit1.Handle, 0, 10, 2);
    ShowCaret(Edit1.Handle);
end;光标变成横条,可是光标在edit上方,如何让光标在edit下边谢

解决方案 »

  1.   

    那就只好用个假光标来代替了,具体步骤:用画笔做一个16*16的黑色背景位图。在靠底部画一条2象素高的白色横线,然后保存。
    在窗体上加一个Image,然后将刚才那个位图加载进来。在Edit的OnMouseDown中添加以下代码:procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
        CreateCaret(Edit1.Handle, Image1.Picture.Bitmap.Handle, 16, 1);
        ShowCaret(Edit1.Handle);
    end;以上就实现了楼主要的效果。如果要优化的话,把这个位图放到资源中就可以了。
      

  2.   

    我写了个简单例子,在:http://www.ccrun.com/CustomCaret.rar
      

  3.   

    老妖的意思基本上可以通过下面代码反映,自己看看吧。。当然,最好把光标图片做成资源。
    procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
      var
      a : TRect;
    begin
      with Image1.Canvas do
      begin
        Brush.Color := clWhite;
        a.Left := 0;
        a.Top := 0;
        a.Bottom := Height;
        a.Right := Width;
        FillRect(a);
        Image1.Transparent := true;
        MoveTo(0,10);
        LineTo(10,10);
      end;
    CreateCaret(Edit1.Handle, Image1.Picture.Bitmap.Handle, 16, 0);
     ShowCaret(Edit1.Handle);end;
      

  4.   

    放在资源或用现成的图比较合适,否则每次鼠标点击了Edit都要在Image的Canvas上绘图,影响效率。