2014-09-03 8 views
-2

Есть ли способ сделать это, поэтому вам не нужно удвоить свой &, чтобы сделать окно списка Delphi не зарегистрированным в качестве горячих клавиш?Почему мой tlistbox требует от меня удвоить мои амперсанды?

У нас есть список наименований лекарств, которые мы заселить в ListBox, некоторые из препаратов имеют & «S в них, как„A & D Мазь“, ну это вроде стремно иметь„_d мазь“ так что мы удваиваем & &, чтобы сделать его «A & D Ointment» единственная проблема в том, что когда мы делаем это, мы не можем использовать текст в списке для чего-нибудь полезного без повторного отформатирования текста.

Нам было бы более удобно просто отключить функцию «горячих клавиш», и я не могу найти способ сделать это с помощью IDE, но я уверен, что есть некоторые причудливые окна, чтобы переопределить это (надеюсь, я не должен переопределить базовый класс)


Мы переопределение функции DrawItem с помощью:

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

Этого просто не бывает. Вы уверены, что имеете дело с «TListBox»? –

+0

Согласен с @Andreas; например в Delphi 7 или Delphi XE3 текст элемента «TListBox» отображается явно с помощью ['DT_NOPREFIX'] (http://msdn.microsoft.com/en-us/library/windows/desktop/dd162498 (v = vs. 85) .aspx # DT_NOPREFIX) (что предотвращает выделение символов подчеркивания с символами '&'). – TLama

+0

@AndreasRejbrand ohhhh dumb, парень, который написал код, рисует его вручную ... –

ответ

3

Вы, вероятно, не используется по умолчанию TListBox рисовать функцию, если это происходит поскольку по умолчанию он использует DT_NOPREFIX для рисования вещей.

Проверьте и убедитесь, что вы не переопределяете функцию DrawItem, чтобы увидеть, использует ли DrawText без DT_NOPREFIX. Если вы используете DT_NOPREFIX, ваш текст останется прежним.

+1

-1 Как и задано, 'DrawText' не имеет отношения к делу. Ящики списков не выполняют то, что описано в вопросе. Возможно, если вы хотите отредактировать вопрос, чтобы описать сценарий, к которому применяется этот ответ, тогда он может быть полезен кому-то в будущем. Но поскольку это стоит, это очень вводит в заблуждение. –

+0

OK, downvote удален. Было бы намного лучше, если бы вы удалили все разговоры о списках и просто включили вызов в DrawText. –

+0

Эта проблема представляет собой комбинацию флага DT DrawText и того факта, что окно списка было в ручном режиме. В этом смысле это может быть полезно кому-то. – serge

 Смежные вопросы

  • Нет связанных вопросов^_^