首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TComboBox TextHint在聚焦时显示

TComboBox TextHint在聚焦时显示
EN

Stack Overflow用户
提问于 2016-02-21 13:47:51
回答 1查看 1.1K关注 0票数 1

EM_SETCUEBANNER设置TEdit控件显示的文本提示或提示,以提示用户提供信息,但如何设置TComboBox控件的文本提示并更改其行为,使其仅在用户开始键入时消失?下面是用于在EM_SETCUEBANNER控件上实现TEdit的代码:

代码语言:javascript
复制
SendMessage(TEdit.Handle, EM_SETCUEBANNER, wParam, Integer(PWideChar(HintText)));

如何使用TComboBox控件更改上述代码以实现所需的输出?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-21 16:31:40

有一个相同的CB_SETCUEBANNER消息。

设置为组合框的编辑控件显示的提示横幅文本。

代码语言:javascript
复制
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_SETCUEBANNERwParam值必须为0。因此,它不支持在空ComboBox有焦点的情况下使横幅文本保持可见的能力。如果需要,您必须获得ComboBox编辑字段的HWND (请参阅GetComboBoxInfo()CB_GETCOMBOBOXINFO),然后直接发送EM_SETCUEBANNER (这是TextHint属性在XP上所做的),以便将其wParam参数设置为TRUE。

代码语言:javascript
复制
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;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35536926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档