为什么我的tlistbox要求我加倍我的&符号?

时间:2014-09-03 15:20:36

标签: delphi vcl hotkeys tlistbox

有没有办法让它成为你不必加倍你的&'s以使Delphi列表框不能将它们注册为热键?

我们有一个药物名称列表,我们在ListBox中填充,其中一些药物和“A& D Ointment”中的药物一样,“A _D软膏”有点愚蠢“出现所以我们加倍了&&'s来使它成为”A& D软膏“唯一的问题是,当我们这样做时,我们不能把列表框中的文字用于任何有用的文本而不重新转换文本。

我们必须更加方便地完全关闭热键,我似乎无法找到与IDE相关的方法,但我确信有一些奇特的Windows消息可以覆盖它(希望如此)我不必覆盖基类)


我们使用以下方法覆盖DrawItem函数:

DrawText(List.Canvas.Handle, PChar(List.Items.Strings[Index]), -1, Rect, DT_VCENTER);

1 个答案:

答案 0 :(得分:3)

如果发生这种情况,您可能没有使用默认的TListBox绘图功能,因为默认情况下它使用DT_NOPREFIX来绘制内容。

检查并确保您没有覆盖DrawItem函数以查看是否使用没有DT_NOPREFIX的DrawText。如果您使用DT_NOPREFIX,那么您的文本将保持不变。