在VB中可以使用API实现,不知道在Delphi中行不行?

解决方案 »

  1.   

    一个 api函数,showcursor(false)
    我应该没记错吧
      

  2.   

    API Fun:
    HideCaret(HWND hwnd)
      

  3.   

    只要过滤WM_SETCURSOR消息即可
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
      private
        Old:TwndMethod;
        procedure NewMethod(Var Message:TMessage);
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
    begin
      Old:=Edit1.WindowProc;
      Edit1.WindowProc:=NewMethod;
    end;procedure TForm1.NewMethod(var Message: TMessage);
    begin
      if Message.Msg<>WM_SETCURSOR then
      Old(Message);
      {如果既不要输入光标,也不要焦点则可以这样}
      if (Message.Msg<>WM_SETCURSOR) and (Message.Msg<>WM_SETFOCUS) then
      Old(Message);
    end;end.
      

  4.   

       调用Windows API 函数 BOOL HideCaret(HWND hWnd);
       hWnd为edit控件的窗口句柄,成功时返回非0值。
      注意此函数仅当hWnd拥有插入符时才有效,且当调用n次此函数后,需调用n次ShowCaret(HWND hWnd)才能使插入符再显示出来。
      当hWnd为NULL时,隐藏当前任务中拥有插入符的窗口中的插入符。