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

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

TListView; закрасить/затереть текст в колонке. [D7, XP]


Страницы:   1 2

JetAPI ©   (2007-07-18 00:45:00) 

Привет всем.
Сразу к сути.... Вот код:

unit Unit1;

interface

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

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

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
const a: array [0..2] of integer = (100,150,200);
var
i,j: Integer;
begin
ListView1.ViewStyle:=vsReport;
with ListView1 do begin
for i:=0 to 2 do begin
   Columns.Add.Width:=a[i];
   Column[i].Caption:='Column  #'+IntToStr(i+1);
   end;
for i:=0 to 3 do begin
   Items.Add.Caption:='Item  '+IntToStr(i+1);
   for j:=0 to 1 do
       Items.Item[i].SubItems.Add('Subitem  '+IntToStr(j+1))
   end;
end;
end;

procedure TForm1.ListView1CustomDrawSubItem(Sender: TCustomListView;
 Item: TListItem; SubItem: Integer; State: TCustomDrawState;
 var DefaultDraw: Boolean);
var r: TRect;
begin
r:=Item.DisplayRect(drBounds);
r.Left:=ListView1.Column[0].Width;
ListView1.Canvas.Brush.Color:=clWindow;
ListView1.Canvas.FillRect(r);
end;
end.


Этот код стирает целиком всю колонку...

r:=Item.DisplayRect(drBounds);
r.Left:=ListView1.Column[0].Width;

Но...  при этом... Текст в моем ListView делается жирным.
Что?.. Как?.. Почему? ничего не понимаю. Найдите в коде ошибку.. или помогите переписать.
За ранее спасибо.


{RASkov}   (2007-07-18 17:35:00) [21]

> [3] JetAPI ©   (18.07.07 16:21)
> procedure TForm1.ListView1AdvancedCustomDrawSubItem(
> Sender: TCustomListView; Item: TListItem; SubItem: Integer;
>
> State: TCustomDrawState; Stage: TCustomDrawStage;
> var DefaultDraw: Boolean);
> var r: TRect;
> begin
>   r:=ListView1.Items[1].DisplayRect(drBounds);
>   ListView1.Canvas.Brush.Color:=clWindow;
>   ListView1.Canvas.FillRect(r);
> end;

А так:
procedure TForm1.ListView1AdvancedCustomDrawSubItem(
Sender: TCustomListView; Item: TListItem; SubItem: Integer;
State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
var r: TRect;
begin
 r:=Item.DisplayRect(drBounds);
 r.Left:=ListView1.Column[0].Width;
 ListView1.Canvas.Brush.Color:=clWindow;
 ListView1.Canvas.FillRect(r);
end;
?? Я у себя попробывал и [0] и этот. В [0] имеет место быть описанная ситуация, а в адвансет такого эфекта нет....
Или я не верно понял суть вопроса в [0]... (


JetAPI   (2007-07-18 16:21:00) [22]

Ничего не получается... Результат тот же... Все сабитемы прорисовываютс
жирным. Где еще можно посмотреть ошибку?..

procedure TForm1.FormCreate(Sender: TObject);
const a: array [0..2] of integer = (100,150,200);
var
i,j: Integer;
begin
ListView1.ViewStyle:=vsReport;
with ListView1 do begin
for i:=0 to 2 do begin
   Columns.Add.Width:=a[i];
   Column[i].Caption:='Column  #'+IntToStr(i+1);
   end;
for i:=0 to 3 do begin
   Items.Add.Caption:='Item  '+IntToStr(i+1);
   for j:=0 to 1 do
       Items.Item[i].SubItems.Add('Subitem  '+IntToStr(j+1))
   end;
end;
end;

procedure TForm1.ListView1AdvancedCustomDrawSubItem(
 Sender: TCustomListView; Item: TListItem; SubItem: Integer;
 State: TCustomDrawState; Stage: TCustomDrawStage;
 var DefaultDraw: Boolean);
var r: TRect;
begin
   r:=ListView1.Items[1].DisplayRect(drBounds);
   ListView1.Canvas.Brush.Color:=clWindow;
   ListView1.Canvas.FillRect(r);
end;


JetAPI   (2007-07-18 16:12:00) [23]

Попробую... Спасибо!


{RASkov}   (2007-07-18 13:08:00) [24]

Перемести сей ( ListView1CustomDrawSubItem) код в OnAdvancedCustomDrawSubItem..


Страницы:   1 2

Наверх

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