delphi中文本框edit编译完运行时,光标是‘|’的竖线闪烁,我需要的是'_'这样的光标闪烁;注意不是鼠标,我查了很多帮助,都是鼠标的变化,没有光标变化方面的我知道在DOS中变成很容易实现,但在delphi中怎样实现,请告知,谢谢。                                                              菜鸟敬上,各位大侠请拉一把

解决方案 »

  1.   

    HCURSOR SetCursor(HCURSOR hCursor);
      

  2.   

    如果我记得没错文本光标是有WinAPI的,以前翻windows SDK的时候看见过。
    你在msdn里找CreateCaret,SetCaretPos看看就应该差不多了
      

  3.   

    ps
    好像文本光标就是一个位图,可以直接LoadBitmap,然后用CreateCaret创建
      

  4.   

    大概就是下面这样的,不过要改变Edit的文本光标可能有点困难,没试过,最好是自己从TWinControl继承下来,连字符也自己画,光标位置自己算(嗯,看起来很麻烦......)
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        procedure FormClick(Sender: TObject);
        procedure FormDeactivate(Sender: TObject);
        procedure FormActivate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        FbmpCaret:TBitmap;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
      FbmpCaret:=TBitmap.Create;
      FbmpCaret.LoadFromFile('c:\caret.bmp');
      CreateCaret(Handle,FbmpCaret.Handle,0,0);
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
      DestroyCaret();
      FbmpCaret.Free;
    end;procedure TForm1.FormActivate(Sender: TObject);
    begin
      ShowCaret(Handle);
    end;procedure TForm1.FormDeactivate(Sender: TObject);
    begin
      HideCaret(Handle);
    end;procedure TForm1.FormClick(Sender: TObject);
    var
      pt:TPoint;begin
      GetCursorPos(pt);
      pt:=ScreenToClient(pt);
      SetCaretPos(pt.X,pt.Y);
    end;end.