Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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]

Приведите код прорисовки.


Наверх

Титульная страница Поиск, карта сайта Написать письмо