TQuickFileList v1.4
an Explorer-like file ListView component for Delphi 2 and 3

Copyright 1997-98 by Andrew Anoshkin

This component can be freely used in freeware and non-commercial software.

If you use TQuickFileList on a regular basis you are encouraged to register it. 
Registration entitles you to all future versions of TQuickFileList, including 
full source code. The cost of a single user license is US$10.
License allows distribution of TQuickFileList (in compiled form) in any type of 
application - be it commericial, shareware, or freeware.

If you want to register, simple register one of my shareware products 
(HTML-View or BiCat) from my web site with the string 'for QuickFileList' in 
the Comment field or/and send me an information letter.

Also feel free to contact me if you have any questions, comments or suggestions 
at vlan@dataforce.net
The latest version will always be available on the web at:
http://www.strongsoftware.com/dronix/eng.html

See example of usage that is included in the package.

Andrew Anoshkin
vlan@dataforce.net


My other software:

Programs:

BiCat - 
A utility for viewing, storing and cataloging small image files (glyphs). 
Bitmaps from BiCat may be used for program development (speedbuttons, toolbars) 
and WWW pages design (background, bullets, marks). It supports BMP, ICO, EMF 
and WMF formats. Saves disk space by storing all your glyph files in BiCat 
database. It helps to avoid cluster losses for small files. More than 
2000 glyphs (bitmaps and icons) are available for registered users.
Very convenience for programers. I'm using it with RxLib PicEdit 
(which has Copy/Paste buttons) and Delphi Image Editor in everyday 
programing practice.

HTML-View - 
Easy to use viewer for WWW file formats. Features: browse by file, file name 
as command line parameter, file and folder bookmarks, supports animated GIFs, 
search in files, file operations, and more. 
Requires installed MS Internet Explorer v3.01 or later

PicViewer - 
Image viewer for most common file formats. PicViewer displays images in 
the following formats: BMP, ICO, WMF, EMF, GIF, JPEG, PNG, PCX, TIFF, PCD. 
Features: slide show, browse by image file, image file name as 
command line parameter, supports animated GIFs, bookmarks, file operations, 
image converter, and more.

Delphi:

TQuickFileList -
an Explorer-like file ListView component which replaces
old Win3.1-style TFileListBox (for Delphi 2 and Delphi 3).

MessDlgs -
International Message Dialogs for Delphi 2 and Delphi 3
9 languages version: English, Russian, Portuguese, Turkish, German, Dutch, French,
Greek and Spanish (now maybe more!)

Progress is a sample unit for creating an indicator window during long-time 
program processing (for Delphi 2 and Delphi 3).

TnfPanel v1.2 -
TPanel's descendant that allows to remove flicker of inserted 
controls during panel resizing. Also removes Delphi 3 repaint bug and adds 
FullRepaint property for Delphi 2 (for Delphi 2 and Delphi 3).

TaSplitter -
a component for splitting panels in form. Has LeftTop and BottomRight 
propreties to limit a split line (for Delphi 2 and Delphi 3).



//
//**********************************************************************
//


Part of the declaration of TQuickFileList and  looks like this:

  //
  //
  //


type
  TqColumn = (clName, clSize, clType, clDate);
  TqSortEvent = procedure(Sender: TObject; Column: TqColumn) of object;
  TDirWatchBeforeUpdateEvent = procedure(Sender: TObject; var Allow: Boolean) of object;
  TDirWatchAfterUpdateEvent = procedure(Sender: TObject) of object;

  //File attributes
  TqFileType =({ftDirectory,} ftArchive, ftReadonly, ftSystem, ftHidden,
               {ftCompressed,} ftTemporary, ftAll);
  TqFileTypes = set of TqFileType;


  TqFileData = class
  public
    dwFileAttributes: DWORD;
    sFileName: string;
    nFileSizeHigh: DWORD;
    nFileSizeLow: DWORD;
    sType: string;
    dDate: TFileTime;
  end;


  TQuickFileList = class(TCustomQuickListView)
  protected
    
    .........
 
  public
    InvertSort:  Boolean;

    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;
    procedure   Loaded; override;

    procedure LoadFromRegistry(Ini: TRegIniFile; const Section: string);
    procedure SaveToRegistry(Ini: TRegIniFile; const Section: string);

    procedure LoadFromIni(Ini: TIniFile; const Section: string);
    procedure SaveToIni(Ini: TIniFile; const Section: string);

    procedure UpdateFileList;
    function  IsDirectory(Idx: Integer): Boolean;

    property  ColumnText[Col: TqColumn]: string read GetColumnText write SetColumnText;
    property  ColumnWidth[Col: TqColumn]: Integer read GetColumnWidth write SetColumnWidth;
    property  ColumnAlignment[Col: TqColumn]: TAlignment read GetColumnAlignment write SetColumnAlignment;
    property  Directory: string read FDirectory write SetDirectory;
    property  IndexOfFileName[aFileName: string]: Integer read GetIndexOfFileName;
    property  FileItem[Idx: Integer]: TqFileData read GetFileItem;
    property  FileName: string read GetFileName write SetFileName;
    property  FileNameOfIndex[Idx: Integer]: string read GetFileNameOfIndex write SetFileNameOfIndex;
    property  FileCount: Integer read GetFileCount;
  published
    property  DirWatchEnable: Boolean read FDirWatchEnable write SetDirWatchEnable;
    property  DisplayDirectory: Boolean read FDisplayDir write SetDisplayDir;
    property  DisplayParentDir: Boolean read FDisplayParentDir write SetDisplayParentDir;
    property  DrawSortSign: Boolean read FDrawSortSign write SetDrawSortSign;
    property  FileTypes: TqFileTypes read FFileTypes write FFileTypes;
    property  Mask: string read GetMask write SetMask;
    property  SortColumn: TqColumn read FSortColumn write SetSortColumn;


    property OnSort: TqSortEvent read FOnSort write FOnSort;
    property OnDirWatchBeforeUpdate: TDirWatchBeforeUpdateEvent read FDirWatchBeforeUpdate write FDirWatchBeforeUpdate;
    property OnDirWatchAfterUpdate: TDirWatchAfterUpdateEvent read FDirWatchAfterUpdate write FDirWatchAfterUpdate;

    { Published inherited declarations }
    property Align;
    property BorderStyle;
    property Color;
    property ColumnClick;
    property Ctl3D;
    property DragMode;
    property ReadOnly;
    property Font;
    property IconOptions;
{$IFDEF A_D3}
    property ImeMode;
    property ImeName;
{$ENDIF}    
    property HideSelection;
    property MultiSelect;
    property OnEnter;
    property OnExit;
    property OnDragDrop;
    property OnDragOver;
    property DragCursor;
    property OnStartDrag;
    property OnEndDrag;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property ParentShowHint;
    property ShowHint;
    property PopupMenu;
    property ShowColumnHeaders;
    property SortType;
    property TabOrder;
    property TabStop default True;
    property ViewStyle;
    property Visible;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnChanging;
    property OnChange;
    property OnItemIndexChange;
    property OnClick;
    property OnDblClick;
  end;


function  GetLocalTime(FileTime: TFileTime): string;
function  NormPath(Path: string): string;




//
//And part of the declaration of TCustomQuickListView looks like this:
//

 TCustomQuickListView = class(TWinControl)
 protected 
    ...
 public
    PressedRMouseButton: Boolean;

    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;
    function    AlphaSort: Boolean;
    procedure   Arrange(Code: TListArrangement);
    function    IsEditing: Boolean;
    procedure   EnsureVisible(Index: Integer; PartialOK: Boolean);
    procedure   CancelEdit;
    procedure   Clear;
    property    ItemIndex: integer read GetItemIndex write SetItemIndex;
    property    FocusedItem: Integer read GetFocusedItem write SetFocusedItem;
    property    SelectedItem: Integer read GetSelectedItem write SetSelectedItem;
    property    ItemText[Index: Integer]: string read GetItemText write SetItemText;
    property    Count: Integer read GetCount;
    property    Selected[Index: Integer]: Boolean read GetSelected;
  published
    { Published declarations }
  end;

