![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цвет колоны в ListView [D7, WinXP]
.ruslan © (2006-06-06 11:42:00)Как изменить цвет определённой колоны в ListView?
ЮЮ (2006-06-08 04:44:00) [1]код из ListView1 AdvancedCustomDrawSubItem следует поместитить ListView1 CustomDrawSubItem - и этого обработчика вполне хватит
ЮЮ (2006-06-08 04:40:00) [2]Брось на форму ListView и назначь обработчики:
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 ListView1AdvancedCustomDrawSubItem(Sender: TCustomListView;
Item: TListItem; SubItem: Integer; State: TCustomDrawState;
Stage: TCustomDrawStage; var DefaultDraw: Boolean);
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);
var
i, j, n, m: integer;
lc: TListColumn;
li: TListItem;
begin
m := 4;
ListView1.ViewStyle := vsReport;
for i := 0 to m - 1 do begin
lc := ListView1.Columns.Add;
lc.Alignment := TAlignment(i);
lc.Caption := 'Column ' + IntToStr(i);
lc.Width := ListView1.ClientWidth div m;
end;
n := 5;
for i := 0 to n - 1 do begin
li := ListView1.Items.Add;
li.Caption := IntToStr(i) + ', 0';
for j := 1 to m - 1 do
li.SubItems.Add(IntToStr(i) + ',' + IntToStr(j));
end;
end;
procedure TForm1.ListView1AdvancedCustomDrawSubItem(
Sender: TCustomListView; Item: TListItem; SubItem: Integer;
State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
begin
if SubItem = 1 then
TListView(Sender).Canvas.Font.Color := clRed
else
TListView(Sender).Canvas.Font.Color := clBlack;
if SubItem = 2 then
TListView(Sender).Canvas.Brush.Color := clYellow
else begin
if cdsSelected in State then
TListView(Sender).Canvas.Brush.Color := clSilver
else
TListView(Sender).Canvas.Brush.Color := clWhite;
end;
end;
procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
if cdsSelected in State then
TListView(Sender).Canvas.Brush.Color := clSilver
else
TListView(Sender).Canvas.Brush.Color := clWhite;
end;
end.
.ruslan (2006-06-07 18:56:00) [3]а просто увет текста одной колоны как сметить*
.ruslan (2006-06-06 15:26:00) [4]не разобрался...
можно кодом?
ЮЮ (2006-06-06 11:51:00) [5]См. справку по TCustomListView.OnCustomDrawXXX