|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Выделение строк в Listbox
Нужно изменить атрибут текст (подсветить желтым, например), если выполнимо условие.
Есть некая таблица tablegrid. Программа проверяет, если выполнимо условие, то текст копируется из таблицы в listbox и выделяется желтым, иначе текст копируется но не выделяется. Как проще сделать? Вот условие Код:
if (length(edit1.Text)>1) and (ansipos(edit1.Text,stringgrid1.Cells[2,d])>0) then ind:=1 else ind:=2; listbox2.Items.Add(stringgrid1.Cells[1,d]); Код:
procedure TForm1.ListBox2DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); var col: TColor; brush: TBrush; begin brush := TBrush.Create; with (Control as TListBox).Canvas do begin // проверим условие назначим цвет if ind=1 then Col:= clyellow else Col:= clred; // покрасим и обновим текст brush.Style:= bsSolid; brush.Color:= Col; Windows.FillRect(handle, Rect, brush.Handle); Brush.Style:= bsClear; TextOut(Rect.Left, Rect.Top, (Control as TListBox).Items[Index]); end; brush.Free; end; Может есть проще способ? Спасибо. |
#2
|
|||
|
|||
В коде вроде все нормально. Сделай вывод значения переменной ind и проверь. Например, брось куда-нить TMemo и выводи в него.
|
#3
|
|||
|
|||
В том то и дело, что в ListBox2DrawItem ind всегда равен 2, а вот в верхнем условии он меняется на 1 и 2.
Ничего не понимаю. |
#4
|
|||
|
|||
А был косяк со сменой цвета в StringGrid. Может и в ListBox так же?
|