EM_SETCUEBANNER设置TEdit控件显示的文本提示或提示,以提示用户提供信息,但如何设置TComboBox控件的文本提示并更改其行为,使其仅在用户开始键入时消失?下面是用于在EM_SETCUEBANNER控件上实现TEdit的代码:
SendMessage(TEdit.Handle, EM_SETCUEBANNER, wParam, Integer(PWideChar(HintText)));如何使用TComboBox控件更改上述代码以实现所需的输出?
发布于 2016-02-21 16:31:40
有一个相同的CB_SETCUEBANNER消息。
设置为组合框的编辑控件显示的提示横幅文本。
SendMessage(TComboBox.Handle, CB_SETCUEBANNER, 0, LPARAM(PWideChar(HintText)));尽管如此,TEdit有一个已发布的TextHint属性,在内部使用EM_SETCUEBANNER,而TComboBox有一个已发布的TextHint属性,它在XP上内部使用EM_SETCUEBANNER,在Vista+上使用CB_SETCUEBANNER。
我不知道什么时候添加了TEdit.TextHint,但是TComboBox.TextHint是在Delphi2009中添加的:
德尔福2009 - TextHint in TComboBox
Update:注意CB_SETCUEBANNER的wParam值必须为0。因此,它不支持在空ComboBox有焦点的情况下使横幅文本保持可见的能力。如果需要,您必须获得ComboBox编辑字段的HWND (请参阅GetComboBoxInfo()和CB_GETCOMBOBOXINFO),然后直接发送EM_SETCUEBANNER (这是TextHint属性在XP上所做的),以便将其wParam参数设置为TRUE。
uses
..., Winapi.CommCtrl;
var
info: TComboBoxInfo;
begin
info.cbSize := sizeof(info);
GetComboBoxInfo(TComboBox.Handle, info);
// or: SendMessage(TComboBox.Handle, CB_GETCOMBOBOXINFO, 0, LPARAM(@info)));
SendMessage(info.hwndItem, EM_SETCUEBANNER, TRUE, LPARAM(PWideChar(HintText)));
end;https://stackoverflow.com/questions/35536926
复制相似问题