我想将 TEdit 的 Texthint 更改为灰色。

我已经找到了这个 https://stackoverflow.com/a/31550017/1862576 并尝试像这样通过 SendMessage 更改颜色

procedure TEdit.DoSetTextHint(const Value: string);
var
  Font: TFont;
begin
  if CheckWin32Version(5, 1) and StyleServices.Enabled and HandleAllocated then
  begin
    Font := TFont.Create;
    try
      Font.Assign(self.Font);
      Font.Color := clGreen;
      Font.Size := 20;

      SendTextMessage(Handle, EM_SETCUEBANNER, WPARAM(1), Value);
      SendMessage(Handle, WM_SETFONT, Integer(Font.Handle), Integer(True));
    finally
//      Font.Free;
    end;
  end;
end;

它会改变字体的大小,但不会改变颜色。
谢谢你的帮助。

最佳答案

提示横幅是内置于 EDIT 包装的底层 Win32 TEdit 控件的功能。它根本不受 VCL 管理。没有公开的 Win32 API 来管理提示横幅文本的着色。如果您想要自定义着色,您将不得不停止使用 native 提示横幅功能并通过直接处理其 WM_ERASEBKGND 和/或 WM_PAINT 消息来手动自定义绘制编辑控件(请参阅 How do i custom draw of TEdit control text? )。否则,您将不得不寻找支持自定义着色的第三方编辑控件。或者使用 TRichEdit 而不是 TEdit 以便您可以根据需要设置文本颜色。

关于Delphi XE7 : TEdit TextHint Color,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33082582/

10-11 16:12