lazarus/components/lazcontrols/shortpathedit.pas
mattias 19a4058156 lazcontrols: shortpathedit: fixed visibility
git-svn-id: trunk@56633 -
2017-12-05 12:37:56 +00:00

78 lines
1.4 KiB
ObjectPascal

unit ShortPathEdit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils,
// LCL
EditBtn, Dialogs,
// LazUtils
LazFileUtils;
type
{ TShortPathEdit }
TShortPathEdit = class(TDirectoryEdit)
private
FDirectory : String;
FOnAcceptDir: TAcceptFileNameEvent;
protected
function CreateDialog: TCommonDialog; override;
published
procedure RunDialog; override;
property Directory: String read FDirectory write FDirectory;
property OnAcceptDirectory: TAcceptFileNameEvent read FOnAcceptDir write FonAcceptDir;
end;
implementation
function TShortPathEdit.CreateDialog: TCommonDialog;
begin
Result:=TSelectDirectoryDialog.Create(Self);
if DirPathExists(Directory) then
begin
TSelectDirectoryDialog(Result).InitialDir:=Directory;
TSelectDirectoryDialog(Result).FileName:='';
end
else
begin
TSelectDirectoryDialog(Result).InitialDir:=RootDir;
TSelectDirectoryDialog(Result).FileName:=Directory;
end;
// Set some common things.
Result.Title := DialogTitle;
end;
procedure TShortPathEdit.RunDialog;
var
D: String;
Dlg: TCommonDialog;
B: Boolean;
begin
Dlg:=CreateDialog;
try
B:=Dlg.Execute;
if B then
D:=GetDialogResult(Dlg);
finally
Dlg.Free;
end;
if B then
begin
if Assigned(FOnAcceptDir) then
begin
FOnAcceptdir(Self,D);
if (D<>'') then
Directory:=D;
end
else
Directory:=D;
end;
end;
end.