Цитата:
Сообщение от basilcat
Delphi 7 CLX.
1. В компоненте TFilleListView, как узнать атрибуты файловв, находящихся в текущей активной директории? Для изменения Canvas.Font.Color в отрисовщике в зависимости от этого атрибута файла.
Как отрисовать в зависимости от атрибута знаю.
2. В компоненте TFilleListView не видны файлы с атрибутом Hidden.
Как сделать чтобы были всё же видны?
|
Понимая, что вопрос малоинформативный даю как я это делаю и что не получается:
Код DoCustomDrawViewItem из TFilleListView немного доработанный мной:
Код:
function TFileListViewColor.DoCustomDrawViewItem(Item: TCustomViewItem;
Canvas: TCanvas; const Rect: TRect; State: TCustomDrawState;
Stage: TCustomDrawStage): Boolean;
var
R: TRect; IL: TCustomImageList; ListItem: TListItem; i:integer;
pFile:PSearchRec;
begin
Result := False;
if Stage = cdPostPaint then Result := inherited DoCustomDrawViewItem(Item, Canvas, Rect, State, cdPrePaint);
if Result then
begin
R := Rect; Canvas.FillRect(R);
if list.Count>0 then
begin
if DOWN_UP then i:=Selected.Index-1
else
i:=Selected.Index+1;
if (isSelect(i)) then
begin
Canvas.Brush.Color :=Color;
Canvas.Font.Color :=clRed;
end;
end
else
begin
Canvas.Brush.Color :=Color;
Canvas.Font.Color :=clBlack;
pFile:=PSearchRec(Item);
case pFile^.Attr of
faSysFile:Font.Color:=clRed;//ColorError;
faHidden: Font.Color:=clBlue;//ColorTransl;
end;
end;
ListItem := TListItem(Item);
with ListItem do
begin
if Assigned(Images) then
IL := Images
else
IL := FIconProvider;
Inc(R.Top, (R.Bottom - R.Top - IL.Height) div 2);
IL.Draw(Canvas, R.Left, R.Top, ImageIndex);
{$IFDEF LINUX}
if (Data <> nil) and (PFileInfo(Data).SR.Attr and faSymLink <> 0)
and (IL = FIconProvider) then
FIconProvider.DrawLinkOverlay(Canvas, R.Left, R.Top, PFileInfo(Data));
{$ENDIF}
Inc(R.Left, IL.Width + 2);
if (Data <> nil) and (EditingItem <> Item) then
DrawTruncatedText(Canvas, R, PFileInfo(Data).SR.Name)
else
Result := True;
end;
end;
if Stage = cdPostPaint then
begin
inherited DoCustomDrawViewItem(Item, Canvas, Rect, State, Stage);
Result := False;
end;
end;
В pFile:=PSearchRec(Item);case pFile^.Attr of
pFile^.Attr почему-то всегда равен 1, хотя файлы в директории 100% faSysFile