-2

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

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

完全关闭热键对我们来说一定更方便,我似乎无法找到使用 IDE 的方法,但我确信有一些花哨的 Windows 消息可以覆盖它(希望我没有不必重写基类)


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

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

1 回答 1

3

如果发生这种情况,您可能没有使用默认的 TListBox 绘制函数,因为默认情况下它使用 DT_NOPREFIX 来绘制事物。

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

于 2014-09-03T15:38:34.297 回答