www.pudn.com > TMS.Component.Pack.v5.0.rar > advfilenameedit.pas, change:2009-01-24,size:6185b
{*********************************************************************}
{ TAdvFilenameEdit }
{ for Delphi & C++Builder }
{ }
{ written by }
{ TMS Software }
{ copyright © 2002 - 2008 }
{ Email : info@tmssoftware.com }
{ Web : http://www.tmssoftware.com }
{ }
{ The source code is given as is. The author is not responsible }
{ for any possible damage done due to the use of this code. }
{ The component can be freely used in any application. The source }
{ code remains property of the author and may not be distributed }
{ freely as such. }
{*********************************************************************}
unit AdvFileNameEdit;
{$I TMSDEFS.INC}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, AdvEdit, AdvEdBtn
{$IFDEF TMSDOTNET}
, WinUtils
{$ENDIF}
;
// version history
// v1.0.0.0 : first release
// v1.1.0.0 : support for ShowURL added
// v1.1.0.1 : Fixed issue with F4 hotkey handling
type
TFileDialogKind = (fdOpen, fdSave, fdOpenPicture, fdSavePicture);
TDialogExitEvent = procedure(Sender: TObject; ExitOK: Boolean) of object;
TAdvFileNameEdit = class(TAdvEditBtn)
private
{ Private declarations }
FDummy: Byte;
FDefaultExt: string;
FFilter: string;
FFilterIndex: Integer;
FInitialDir: string;
FDialogOptions: TOpenOptions;
FDialogTitle: string;
FDialogKind: TFileDialogKind;
FOnDialogExit: TDialogExitEvent;
function GetFileName: TFileName;
procedure SetFileName (const Value: TFileName);
protected
{ Protected declarations }
procedure BtnClick (Sender: TObject); override;
//procedure ValueValidate(Sender: TObject; Value: String; Var IsValid: Boolean); Virtual;
procedure ValidateEvent(Value:string; var IsValid: Boolean); override;
procedure DialogExit(ExitOk: Boolean);
procedure KeyDown(var Key: Word; Shift: TShiftState); override;
procedure KeyUp(var Key: Word; Shift: TShiftState); override;
function TestURL: Boolean; override;
public
{ Public declarations }
procedure ClickButton;
constructor Create(AOwner: TComponent); override;
published
{$IFNDEF TMSDOTNET}
property AutoThousandSeparator: Byte read FDummy;
property EditAlign: Byte read FDummy;
property EditType: Byte read FDummy;
property ExcelStyleDecimalSeparator: Byte read FDummy;
property PasswordChar: Byte read FDummy;
property Precision: Byte read FDummy;
property Signed: Byte read FDummy;
//property ShowURL: Byte read FDummy;
//property URLColor: Byte read FDummy;
{$ENDIF}
property DefaultExt: string read FDefaultExt write FDefaultExt;
property FileName: TFileName read GetFileName write SetFileName Stored False;
property Filter: string read FFilter write FFilter;
property FilterIndex: Integer read FFilterIndex write FFilterIndex default 1;
property InitialDir: string read FInitialDir write FInitialDir;
property DialogOptions: TOpenOptions read FDialogOptions write FDialogOptions default [ofHideReadOnly, ofEnableSizing];
property DialogTitle: string read FDialogTitle write FDialogTitle;
property DialogKind: TFileDialogKind read FDialogKind write FDialogKind;
property OnDialogExit: TDialogExitEvent read FOnDialogExit write FOnDialogExit;
end;
implementation
uses ExtDlgs;
{$R *.RES}
constructor TAdvFileNameEdit.Create(AOwner: TComponent);
Begin
Inherited;
Glyph.LoadFromResourceName (HInstance, 'AdvFileNameEdit');
Button.OnClick := BtnClick;
ButtonWidth := 18;
End;
procedure TAdvFileNameEdit.BtnClick (Sender: TObject);
var
Dialog: TOpenDialog;
begin
Dialog := nil;
case FDialogKind Of
fdOpen: Dialog := TOpenDialog.Create (nil);
fdOpenPicture: Dialog := TOpenPictureDialog.Create (nil);
fdSave: Dialog := TSaveDialog.Create (nil);
fdSavePicture: Dialog := TSavePictureDialog.Create (nil);
end;
with Dialog do
begin
{$IFDEF DELPHI6_LVL}
FileName := ExcludeTrailingPathDelimiter(Self.FileName);
{$ELSE}
FileName := Self.FileName;
{$ENDIF}
DefaultExt := FDefaultExt;
Filter := FFilter;
FilterIndex := FFilterIndex;
InitialDir := FInitialDir;
Options := FDialogOptions;
Title := FDialogTitle;
end;
if Assigned(OnClickBtn) then
OnClickBtn(Self);
try
if Dialog.Execute then
begin
Text := Dialog.FileName;
FFilterIndex := Dialog.FilterIndex;
DialogExit(true);
Modified := True;
end
else
DialogExit(false);
finally
Dialog.Free;
end;
end;
procedure TAdvFileNameEdit.ValidateEvent(Value: String; Var IsValid: Boolean);
begin
IsValid := FileExists (Value);
inherited;
end;
function TAdvFileNameEdit.GetFileName: TFileName;
Begin
Result := Text;
End;
procedure TAdvFileNameEdit.SetFileName (const Value: TFileName);
Begin
Text := Value;
End;
function TAdvFileNameEdit.TestURL: Boolean;
begin
Result := ShowUrl and FileExists(text);
end;
procedure TAdvFileNameEdit.DialogExit(ExitOk: Boolean);
begin
if Assigned(OnDialogExit) then
OnDialogExit(Self,ExitOk);
end;
procedure TAdvFileNameEdit.ClickButton;
begin
BtnClick(Self);
end;
procedure TAdvFileNameEdit.KeyDown(var Key: Word; Shift: TShiftState);
begin
inherited;
end;
procedure TAdvFileNameEdit.KeyUp(var Key: Word; Shift: TShiftState);
begin
inherited;
if (Key = VK_F4) then
BtnClick(Self);
SetFocus;
end;
End.