如何在Delphi的TEdit控件中隐藏光标?

3

我希望能够在Delphi中移除TEdit控件中的插入符号。我已经将组件Enabled := False,但插入符号仍然出现。我的问题是如何在禁用的TEdit控件中移除插入符号?

2个回答

8
我假定你是指TEdit控件。
解决方案是使用HideCaret函数,唯一的问题是在哪里调用它。下面的两个事件处理程序对我来说都运作良好:
procedure TForm18.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  HideCaret(Edit1.Handle);
end;

procedure TForm18.Edit1MouseEnter(Sender: TObject);
begin
  HideCaret(Edit1.Handle);
end;

3
谢谢。我已经找到了另一个解决这个问题的方法。我只是将ReadOnly设置为True。 - Jordan Borisov
2
@Jordan 那个做了另外一件事,不是吗? - David Heffernan
@DavidHeffernan 是的,它会显示插入符号,但是我想要在单击文本框使其只读时移除插入符号。 - Jordan Borisov
1
@user246408 谢谢,它在 D7 中也可以工作。但是在 tEdit 中没有 "MouseEnter",只有 "MouseDown"。在新的 Delphi 版本中是否有所改变? - ZioBit

0
在窗体上放置一个TApplicationEvents控件,在OnIdle事件中,按如下方式隐藏插入符号。将该事件设置为nil,以便它只触发一次。
procedure TFormMain.AppEventsIdle(Sender: TObject; var Done: Boolean);
begin
  AppEvents.OnIdle := nil;
  HideCaret(Memo1.Handle);
end;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接