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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2015, 10:33   #1
Dee63
Пользователь
 
Аватар для Dee63
 
Регистрация: 09.03.2010
Сообщений: 48
По умолчанию проблема с TListView

Всем привет!
Вообщем в ListView у меня выводятся результаты запроса SQL. Выводит все правильно.
Мне надо сделать так, чтобы при определенном значении в ячейке вся строка меняла цвет.
Задача не новая. Сделал.
Код:
procedure TForm.CListCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
with CList.Canvas.Brush do
   begin
     if item.SubItems.ValueFromIndex[8]='1' then
       Color := clMoneyGreen
     else
       Color := clGray;
     end;
end;
Все просто и все яснопонятно.
НО!
в 8 ячейке у меня значение выводится 2, а строка не закрашивается.
Полез выяснять.
в итоге сделал в этой процедуре вывод
Код:
showmessage(item.SubItems.ValueFromIndex[8]);
и получил пустоту 0_о

Полез дальше. Сделал так, чтоб вывод был не 2, а 22. В самом листе выводится 22 (все норм), а выводе месседжа я получаю 2. т.е. эта зараза теряет первый символ, если таким образом получать доступ.

Ну и соответственно следом вопрос.
ок, он получает 2, должен попадает в условие, по которому если не 1, то закрасить серым.
Что я получаю в итоге? ничего! Не закрашивается, хотя в дебаге смотрю- туда попадает и цвет присваивает.
А вот если оставить вывод showmessage, то цвет пририсовывает.

Что за хрень и как исправить кто скажет?
Dee63 вне форума Ответить с цитированием
Старый 03.02.2015, 10:57   #2
Dee63
Пользователь
 
Аватар для Dee63
 
Регистрация: 09.03.2010
Сообщений: 48
По умолчанию

Сам отвечу на свой вопрос.
1. я использовал TListView из AlphaTools. Видимо оно бажное.
2. обрабатывать надо иначе.

Как правильно у меня заработало:
1. Использовал стандартный TListView в режиме vsReport
2. обрабатывал вот так:
Код:
procedure TClientListForm.ClientListCustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  with ClientList.Canvas.Brush do
    begin
     if item.SubItems.Strings[8]='1' then
      Color := clMoneyGreen
     else
      Color := clGray;
     end;
end;
И естественно никаких косяков с потерявшимся первым символом нет.
Dee63 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запара с TListView The SCS Компоненты Delphi 3 29.03.2012 21:05
TListView сортировка The SCS Компоненты Delphi 1 31.01.2012 18:16
Tlistview NEoMASTERR Общие вопросы Delphi 1 01.12.2011 04:04
TListView delphi kefir4ik Помощь студентам 3 16.09.2010 23:17
TListView и TPanel goblinyara Компоненты Delphi 3 09.01.2009 23:53