我想将 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/