![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TListBox [D6, Win2k]
Alibaba © (2004-10-25 12:47:00)Уважаемые господа,
Такая ситуация:
Есть lbListSQL: TListBox, в нем три елемента.
Если Style поставить lbStandard,
то, если выбрать второй елемент lbListSQL
а потом lbListSQL потеряет фокус, второй елемент останется выбранным.
Если Style поставить lbOwnerDrawFixed,
то, если выбрать второй елемент lbListSQL
а потом lbListSQL потеряет фокус -
не будет выбранных елементов.
------------------------------------------------
Некоторые елементы lbListSQL я закрашиваю в определенный цвет.
Для закраски необходимо Style:=lbOwnerDrawFixed.
Но при этом, когда lbListSQL теряет фокус я не вижу какой елемент был выбран.
------------------------------------------------
Вопрос:
Как сделать что-бы можно было некоторые елементы lbListSQL закрашивать в определенный цвет и при этом, когда lbListSQL теряет фокус я хочу видеть какой елемент был выбран?
Мирон (2004-10-28 00:56:00) [1]Alibaba © (26.10.04 11:37) [6]
Ну или рисовать фон активного айтем'а третьим цветом, если рамочкой не получается. Типа:
if lbListSQL.ItemIndex = Index
then lbListSQL.Canvas.Color := clHighLight
else ...
Alibaba (2004-10-26 11:37:00) [2]Народ, подсобите, плиз.
Очень важный момент.
lbListSQL: TListBox содержит список SQL-запросов,
memSQL: TMemo содержит текст запросов.
Кликаю на елемент lbListSQL - в memSQL появляется запрос.
Я иду в memSQL если необходимо редактировать.
При этом в списке запросов (lbListSQL)
видно какой запрос сейчас обрабатывается.
Некоторые запросы особенные.
Я хочу их выделить в списке.
Если выделять строку с определенным запросом
в lbListSQL необходимо Style:=lbOwnerDrawFixed
при этом, когда lbListSQL теряет фокус
(я иду в memSQL редактировать)
НЕ ВИДНО какой запрос сейчас обрабатывается.
Как решить проблему?.
Подскажите, очень надо.
Alibaba (2004-10-25 14:34:00) [3]Мирон © (25.10.04 14:23) [4]
Стало работать, но не всегда.
Когда фокус получает TMemo - не работает.
Мирон (2004-10-25 14:23:00) [4]Alibaba © (25.10.04 14:00) [2]
дико извиняюсь
if ( ActiveControl<> Control) and (TListBox(Control).ItemIndex = Index)
then TListBox(Control).Canvas.DrawFocusRect(Rect)
Мирон (2004-10-25 14:20:00) [5]Alibaba © (25.10.04 14:00) [2]
а если добавить в конце:
if (FocusControl <> Control) and (TListBox(Control).ItemIndex = Index)
then TListBox(Control).Canvas.DrawFocusRect(Rect)
Alibaba (2004-10-25 14:00:00) [6]//Рисуем список SQL-запросов.
//Те, которые выгружают в Excel - зеленым цветом
procedure TfrmMain.lbListSQLDrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState);
var s: string;
begin
with TListBox(Control).Canvas do
begin
s:=TListBox(Control).Items[Index];
if stExcel.IndexOf(s) > -1 then Brush.Color:=clMoneyGreen
else Brush.Color:=clWhite;
Font.Color:=clBlack;
FillRect(Rect);
TextOut(Rect.Left + 2, Rect.Top, (Control as TListBox).Items[Index]);
end;
end;
Rem (2004-10-25 13:27:00) [7]Приведите код прорисовки.