unit FormExplore;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, forms, controls, stdctrls,Graphics, buttons, grids, fileutil;
function OnlyName(conpath:string):string;
procedure FGridFilesDblClick(Sender: TObject);
Procedure LoadDirectory(directory:string);
procedure FSBUpPathClick(Sender: TObject);
Procedure ShowExplorer(Directory:string);
var
FExplorer : TForm;
EditPath : Tedit;
FSBUpPath : TSpeedButton;
FGridFiles : TStringGrid;
FEditFilename : Tedit;
FSBOkFile : TSpeedButton;
FActiveDir : String = '';
FilesDir : TStringList;
FoldersDir : TStringList;
Result : String = '';
implementation
Procedure ShowExplorer(Directory:String);
Begin
LoadDirectory(Directory);
FExplorer.Visible:=true;
End;
function OnlyName(conpath:string):string;
var
cont : integer;
Begin
for cont := length(conpath) downto 1 do
if conpath[cont] = '\' then
begin
result := copy(conpath,cont+1,length(conpath));
break;
end;
end;
procedure FSBUpPathClick(Sender: TObject);
var
contador : integer;
begin
for contador := length(FActiveDir) downto 1 do
begin
if FActiveDir[contador] = '\' then
begin
FActiveDir := copy(FActiveDir,1,contador-1);
LoadDirectory(FActiveDir);
break
end;
end;
end;
procedure FGridFilesDblClick(Sender: TObject);
begin
if FGridFiles.Row>0 then
begin
if copy(FGridFiles.Cells[0,FGridFiles.Row],1,3) = ' ' then
begin
FActiveDir := FActiveDir+'\'+ copy(FGridFiles.Cells[0,FGridFiles.Row],4,length(FGridFiles.Cells[0,FGridFiles.Row]));
LoadDirectory(FActiveDir);
end;
end;
end;
procedure FGridFilesSelection(Sender: TObject; aCol, aRow: Integer);
begin
FEditFilename.Text:=FGridFiles.Cells[0,FGridFiles.Row];
if copy(FEditFilename.Text,1,3)=' ' then FEditFilename.Text:='';
end;
Procedure LoadDirectory(directory:string);
var
cont : integer;
Begin
FilesDir.Clear;
FoldersDir.clear;
FGridFiles.RowCount:=1;
FindAllFiles(FilesDir, directory, '*.*', false);
FoldersDir := FindAllDirectories(directory,false);
if FoldersDir.Count>0 then
Begin
for cont := 0 to FoldersDir.Count-1 do
begin
FGridFiles.RowCount:=FGridFiles.RowCount+1;
FGridFiles.Cells[0,cont+1]:=' '+OnlyName(FoldersDir[cont]);
end;
end;
if FilesDir.Count>0 then
begin
for cont := 0 to FilesDir.Count-1 do
begin
FGridFiles.RowCount:=FGridFiles.RowCount+1;
FGridFiles.Cells[0,FGridFiles.RowCount-1]:=OnlyName(FilesDir[cont]);
end;
end;
EditPath.Text:=directory;
End;
begin
FExplorer := TForm.Create(nil);
FExplorer.caption := 'File Explorer';
FExplorer.SetBounds(0, 0, 450, 350);
FExplorer.BorderStyle := bssingle;
FExplorer.Position:=poOwnerFormCenter;
FExplorer.BorderIcons:=FExplorer.BorderIcons-[biminimize];
EditPath := TEdit.Create(FExplorer);EditPath.Parent:=FExplorer;EditPath.AutoSize:=false;
EditPath.Left:=1;EditPath.Top:=1;EditPath.Height:=24;EditPath.Width:=424;
EditPath.Font.Name:='consolas'; EditPath.Font.Size:=12;
EditPath.Color:=clBlack;EditPath.Font.color:=clwhite;
EditPath.Alignment:=taLeftJustify;EditPath.Visible:=true;
EditPath.Enabled:=true;EditPath.ReadOnly:=true;
FSBUpPath := TSpeedButton.Create(FExplorer);FSBUpPath.Parent:=FExplorer;
FSBUpPath.Left:=426;FSBUpPath.Top:=2;FSBUpPath.Height:=22;FSBUpPath.Width:=22;
FSBUpPath.Visible:=true;
FSBUpPath.hint:='Go up';FSBUpPath.ShowHint:=true;
//FSBUpPath.OnClick:=SBUpPathClick;
FGridFiles := TStringGrid.Create(nil);FGridFiles.Parent:=FExplorer;
FGridFiles.Font.Name:='consolas'; FGridFiles.Font.Size:=12;
FGridFiles.Left:=2;FGridFiles.Top:=24;FGridFiles.Height:=298;FGridFiles.width:=446;
FGridFiles.FixedCols:=0;FGridFiles.FixedRows:=1;
FGridFiles.rowcount := 1;FGridFiles.ColCount:=4;
FGridFiles.ScrollBars:=ssAutoVertical;
FGridFiles.Options:= FGridFiles.Options-[goRangeSelect];
FGridFiles.ColWidths[0]:= 444;
FGridFiles.Cells[0,0]:= 'Name';
FGridFiles.FocusRectVisible:=false;
//FGridFiles.OnDblClick:=FGridFilesDblClick;
//FGridFiles.OnSelection:=FGridFilesSelection;
FEditFilename := TEdit.Create(FExplorer);FEditFilename.Parent:=FExplorer;FEditFilename.AutoSize:=false;
FEditFilename.Left:=1;FEditFilename.Top:=324;FEditFilename.Height:=24;FEditFilename.Width:=384;
FEditFilename.Font.Name:='consolas'; FEditFilename.Font.Size:=12;
FEditFilename.Color:=clBlack;FEditFilename.Font.color:=clwhite;
FEditFilename.Alignment:=taLeftJustify;FEditFilename.Visible:=true;
FEditFilename.Enabled:=true;FEditFilename.ReadOnly:=true;
FSBOkFile := TSpeedButton.Create(FExplorer);FSBOkFile.Parent:=FExplorer;
FSBOkFile.Left:=388;FSBOkFile.Top:=324;FSBOkFile.Height:=22;FSBOkFile.Width:=60;
FSBOkFile.Visible:=true;
FSBOkFile.hint:='Accept';FSBOkFile.ShowHint:=true;
//FSBOkFile.OnClick:=@form1.FSBOkFileOnClick;
FilesDir := TStringList.Create;
FoldersDir := TStringList.Create;
END.