Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2009, 09:56   #1
flug
Пользователь
 
Регистрация: 23.07.2009
Сообщений: 48
По умолчанию Как поменять цвет курсора в ListView

Здравствуйте!
Может кто знает как можно поменять цвет курсора в ListView.
Кроме как сделать так как приведено ниже в коде, мыслей пока больше нет.
Код:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
    if Item.Focused=true then
     begin
      item.Selected:=false;
      Sender.Canvas.Brush.Color := clTeal;
     end;
end;
но при таком раскладе item.Selected всегда будет false, а это совсем плохо, и плюс наверно из-за этого не срабатывает редактирование item'а по клику.
Подскажите может есть другой способ.

Последний раз редактировалось flug; 23.09.2009 в 10:56.
flug вне форума Ответить с цитированием
Старый 23.09.2009, 16:54   #2
3D Hunter
Сумрачная тень
Форумчанин
 
Аватар для 3D Hunter
 
Регистрация: 05.03.2009
Сообщений: 689
По умолчанию

Копай свойство TCustomDrawState. В нем есть параметр odSelected или типа того. Код примерно такой:
Код:
if odSelected in State then Sender.Canvas.Brush.Color := clTeal;
"ковыряю изнутри" (с)
3D Hunter вне форума Ответить с цитированием
Старый 23.09.2009, 22:12   #3
flug
Пользователь
 
Регистрация: 23.07.2009
Сообщений: 48
По умолчанию

3D Hunter
Спасибо за наводку это то, что надо.
Только я обрадовался как начались проблемы, если в событии OnDrawItem всё прекрасно работает,
Код:
procedure TForm1.ListView1DrawItem(Sender: TCustomListView;
  Item: TListItem; Rect: TRect; State: TOwnerDrawState);
begin
if odSelected in State then
  begin
    ListView1.Canvas.Brush.Color := clTeal;
    ListView1.Canvas.FillRect(Rect);
  end;
  Sender.Canvas.Font.Color := clwhite;
  Sender.Canvas.TextOut( Rect.Left + 3, Rect.Top, ListView1.Items
end;
то в событии OnCustomDrawItem например вот так работать не хочет
Код:
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);

begin
 if odSelected in State then Sender.Canvas.Brush.Color := clTeal;
end;
ругается и пишет Incompatible types, не понимаю в чём проблема.

Ещё не могу понять как OnDrawItem отрисовать subitems, так как они сливаются с фоном.

p.s.
Народ, выручайте ведь и другим пригодится, ведь про ручную отрисовку ListView так мало информации.

Последний раз редактировалось flug; 23.09.2009 в 22:15.
flug вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перетащить элемент ListView в другой ListView? Paul Hindenburg Компоненты Delphi 5 26.01.2013 11:35
Поменять цвет шрифта в CheckBox RIO Общие вопросы Delphi 7 10.08.2009 23:02
Как с помощью JavaScript изменить цвет фона ячеек в таблице,так что бы можно было выбрать цвет из списка Gotessa JavaScript, Ajax 1 09.05.2009 16:05
Как плавно поменять цвет формы гера Помощь студентам 1 20.04.2007 15:35