聚焦时显示的 TComboBox TextHint
TComboBox TextHint to Display While Focused
EM_SETCUEBANNER 设置 TEdit
控件显示的文本提示或提示以提示用户输入信息,但是如何设置 [=12= 的文本提示] 控制并改变它的行为,以便它只在用户开始输入时消失?这是我用来在 TEdit
控件上实现 EM_SETCUEBANNER 的代码:
SendMessage(TEdit.Handle, EM_SETCUEBANNER, wParam, Integer(PWideChar(HintText)));
我需要如何更改上述代码才能使用 TComboBox
控件实现所需的输出?
有一个等价的 CB_SETCUEBANNER
消息。
Sets the cue banner text that is displayed for the edit control of a combo box.
SendMessage(TComboBox.Handle, CB_SETCUEBANNER, 0, LPARAM(PWideChar(HintText)));
话虽如此,TEdit
已发布 TextHint
property that internally uses EM_SETCUEBANNER
, and TComboBox
has a published TextHint
属性,内部在 XP 上使用 EM_SETCUEBANNER
,在 Vista+ 上使用 CB_SETCUEBANNER
。
我不确定 TEdit.TextHint
是什么时候添加的,但是 TComboBox.TextHint
是在 Delphi 2009 年添加的:
Delphi 2009 - TextHint in TComboBox
Update:注意CB_SETCUEBANNER
的wParam
值必须为0,因此不支持制作banner文字的功能当空 ComboBox 具有焦点时保持可见。如果你需要它,你将必须获得 ComboBox 编辑字段的 HWND(参见 GetComboBoxInfo()
and 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;
EM_SETCUEBANNER 设置 TEdit
控件显示的文本提示或提示以提示用户输入信息,但是如何设置 [=12= 的文本提示] 控制并改变它的行为,以便它只在用户开始输入时消失?这是我用来在 TEdit
控件上实现 EM_SETCUEBANNER 的代码:
SendMessage(TEdit.Handle, EM_SETCUEBANNER, wParam, Integer(PWideChar(HintText)));
我需要如何更改上述代码才能使用 TComboBox
控件实现所需的输出?
有一个等价的 CB_SETCUEBANNER
消息。
Sets the cue banner text that is displayed for the edit control of a combo box.
SendMessage(TComboBox.Handle, CB_SETCUEBANNER, 0, LPARAM(PWideChar(HintText)));
话虽如此,TEdit
已发布 TextHint
property that internally uses EM_SETCUEBANNER
, and TComboBox
has a published TextHint
属性,内部在 XP 上使用 EM_SETCUEBANNER
,在 Vista+ 上使用 CB_SETCUEBANNER
。
我不确定 TEdit.TextHint
是什么时候添加的,但是 TComboBox.TextHint
是在 Delphi 2009 年添加的:
Delphi 2009 - TextHint in TComboBox
Update:注意CB_SETCUEBANNER
的wParam
值必须为0,因此不支持制作banner文字的功能当空 ComboBox 具有焦点时保持可见。如果你需要它,你将必须获得 ComboBox 编辑字段的 HWND(参见 GetComboBoxInfo()
and 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;