|
#1
|
|||
|
|||
Работа с ListBox
У меня такой вопрос: есть компонент TListBox. В него из переменной пишутся строки разной длины. Иногда эти строки могут вылезать за край компонента и стают не видны. Мне нужно сделать так, чтоб если строка не помещается целиком в компонент, то она переносится в другую строку, но при клике эти две строки работали как одна.
Например: Есть строка: "Я хочу поехать на море". На экран влазит только "Я хочу поехать ", а "на море" переносится в следующую строку. НО: ListBox.Items должно иметь 1 строчку, а не 2, потому что в проге есть обработчик ListBoxClick и ДВЕ строчки "Я хочу поехать " и "на море" должны срабатывать одновременно, как если бы они были ОДНОЙ строкой. Пробовал так: Код:
procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer; var Height: Integer); begin Height := 30; end; procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin DrawText(ListBox1.Canvas.Handle, PChar(ListBox1.Items[Index]), Length(ListBox1.Items[Index]), Rect, DT_WORDBREAK); end; но во все строки ListBox пишется последнее значение ListBox1.Items Помогите кто-нибудь, а то я уже отчаялся найти решение... Заранее благодарю. |
#2
|
||||
|
||||
Ну заведи отдельный динамический массив, в котором укажи принадлежность перенесенных строк к списку из листбокса! И при клике на строке в листбоксе искать в этом массиве - если есть такой номер, то найти, какой пункт в листбоксе выбран.
|