Показать сообщение отдельно
  #2  
Старый 10.02.2020, 20:18
basilcat basilcat вне форума
Прохожий
 
Регистрация: 27.04.2017
Сообщения: 16
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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
Ответить с цитированием