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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2009, 20:01   #1
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию Клетки в listView разным цветом

Как мне с моим listView сделать вот так-же

(Это download master, на самом деле там нет такой функции просто я для демонстрации сделал)
Мне нужно что-бы определённые клетки были нужного мне цвета...
Altera вне форума Ответить с цитированием
Старый 23.09.2009, 20:43   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Может StringGrid, а не List View? \\\ Пардон, уже понял. Может юзать smallicons?
Мож попробовать DrawGrid? Хотя даже не знаю, есть ли у него смена цветов...
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 23.09.2009, 20:45   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

события OnCustomDrawItem, OnCustomDraw
OnCustomDrawSubItem юзали?

подтверждаю!
OnCustomDrawItem OnCustomDrawSubItem
отлично работают(режим vsReport)

через дополнительные данные(указатели у итемов/субитемов) храним все что нужно для верной прорисовки одного и того же итема, и все
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 23.09.2009 в 21:05.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.09.2009, 21:08   #4
Denager
Москоу
Форумчанин
 
Регистрация: 29.01.2008
Сообщений: 138
По умолчанию

Altera, если использовать OwnerDraw?
Ссылки по теме
1, 2, 3
Denager вне форума Ответить с цитированием
Старый 24.09.2009, 08:09   #5
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

2Denager, там у них почему-то описание процедуры другое.
У меня
Код:
procedure Tmain_form.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);

procedure Tmain_form.ListView1CustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);

procedure Tmain_form.ListView1CustomDraw(Sender: TCustomListView;
  const ARect: TRect; var DefaultDraw: Boolean);
Altera вне форума Ответить с цитированием
Старый 24.09.2009, 08:26   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Дружище, вот примерчик окраски :
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    procedure FormCreate(Sender: TObject);
    procedure ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 with ListView1.Items.Add do begin
  Caption:='111';
  SubItems.Add('45345');
 end;
end;

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
  var r:TRect;
begin
 if Item.Caption='111' then begin
   DefaultDraw:=false;
    r:=Item.DisplayRect(drBounds);
   with TListView(sender).Canvas do begin
    Brush.Color:=clRed;
    FillRect(r);
    TextOut(r.Left,R.Top,item.Caption);
   end;
 end else begin
   DefaultDraw:=true;
 end;
end;

end.
P.S. слегка некошерно конечно придумано, но работает нормательно
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.09.2009, 14:25   #7
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

2Stilet, ты не понял. мне не всю полоску надо закрашивать а тольно нужную ячейку субАйтема
Altera вне форума Ответить с цитированием
Старый 24.09.2009, 14:55   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вот держи.
если еще будут вопросы задавай
Вложения
Тип файла: rar цветной ListView.rar (189.5 Кб, 194 просмотров)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 24.09.2009, 15:55   #9
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вот держи.
если еще будут вопросы задавай
Не то что надо. Меня жутко бесит одна вещь!
Код:
procedure Twnd.lstCustomDrawSubItem(Sender: TCustomListView;
  Item: TListItem; SubItem: Integer; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
   if SubItem = 4 then
      sender.Canvas.Brush.Color := clRed
   else
      sender.Canvas.Brush.Color := clWindow;
end;
Эта сцука мне остальные субайтемы тоже красными делает. Надо не clWindow а clWhite писать. А мне это не нравится. Тем более что есть собычии onCustomDrawItem где устанавливается цвет и шрифт всего айтема.

//У меня Delphi 2009. Там много "нововведений"

Последний раз редактировалось Altera; 24.09.2009 в 16:01.
Altera вне форума Ответить с цитированием
Старый 24.09.2009, 16:08   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Altera, в моем коде у каждого итема/субитема свои данные
поэтому можно сделать чтоб именно один был красным.

ваш код красит все 4-ые субитемы красным(фон)

я скоро уезжаю поэтому написать код(с нуля) не смогу, но обывки какие нить могу.

вот последнее что смог.
Вложения
Тип файла: rar цветной ListView2.rar (191.2 Кб, 214 просмотров)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 24.09.2009 в 17:17.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перетащить элемент ListView в другой ListView? Paul Hindenburg Компоненты Delphi 5 26.01.2013 11:35
Вывод слов параграфа разным шрифтом и цветом miatu Microsoft Office Word 1 04.09.2009 13:26
Выделение цветом ratgunter Общие вопросы C/C++ 0 05.12.2008 23:22
Реализация модели эволюции клетки. Параллельное программирование на языке с. Заноза Помощь студентам 4 03.04.2008 22:13
Нужно разбить те числа которые в одной ячейке по разным ячейчам в столбец Alexander_Gr Microsoft Office Excel 8 20.11.2007 08:02