Componentes.Terceros.DevExp.../internal/x.46/2/ExpressEditors Library 5/Sources/cxShellBrowserDialog.pas

169 lines
6.3 KiB
ObjectPascal
Raw Permalink Normal View History

{********************************************************************}
{ }
{ Developer Express Visual Component Library }
{ ExpressEditors }
{ }
{ Copyright (c) 1998-2009 Developer Express Inc. }
{ ALL RIGHTS RESERVED }
{ }
{ The entire contents of this file is protected by U.S. and }
{ International Copyright Laws. Unauthorized reproduction, }
{ reverse-engineering, and distribution of all or any portion of }
{ the code contained in this file is strictly prohibited and may }
{ result in severe civil and criminal penalties and will be }
{ prosecuted to the maximum extent possible under the law. }
{ }
{ RESTRICTIONS }
{ }
{ THIS SOURCE CODE AND ALL RESULTING INTERMEDIATE FILES }
{ (DCU, OBJ, DLL, ETC.) ARE CONFIDENTIAL AND PROPRIETARY TRADE }
{ SECRETS OF DEVELOPER EXPRESS INC. THE REGISTERED DEVELOPER IS }
{ LICENSED TO DISTRIBUTE THE EXPRESSEDITORS AND ALL }
{ ACCOMPANYING VCL CONTROLS AS PART OF AN EXECUTABLE PROGRAM ONLY. }
{ }
{ THE SOURCE CODE CONTAINED WITHIN THIS FILE AND ALL RELATED }
{ FILES OR ANY PORTION OF ITS CONTENTS SHALL AT NO TIME BE }
{ COPIED, TRANSFERRED, SOLD, DISTRIBUTED, OR OTHERWISE MADE }
{ AVAILABLE TO OTHER INDIVIDUALS WITHOUT EXPRESS WRITTEN CONSENT }
{ AND PERMISSION FROM DEVELOPER EXPRESS INC. }
{ }
{ CONSULT THE END USER LICENSE AGREEMENT FOR INFORMATION ON }
{ ADDITIONAL RESTRICTIONS. }
{ }
{********************************************************************}
unit cxShellBrowserDialog;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, Forms,
cxShellCommon, cxSHellControls,
cxShellDlgs, cxShellBrowser, cxLookAndFeels;
type
{ TcxCustomShellBrowserDialog }
TcxCustomShellBrowserDialog = class(TComponent, IdxSkinSupport)
private
FDlg: TcxShellBrowserDlg;
FFolderCaption: string;
FLookAndFeel: TcxLookAndFeel;
FPath: string;
FRoot: TcxDlgShellRoot;
FShButtons: Boolean;
FShellOptions: TcxDlgShellOptions;
FShInfoTips: Boolean;
FShShowLines: Boolean;
FShShowRoot: Boolean;
FTitle: string;
procedure SetLookAndFeel(Value: TcxLookAndFeel);
protected
function CreateForm: TcxShellBrowserDlg; dynamic;
property FolderLabelCaption: string read FFolderCaption write FFolderCaption;
property LookAndFeel: TcxLookAndFeel read FLookAndFeel write SetLookAndFeel;
property Options: TcxDlgShellOptions read fShellOptions write fShellOptions;
property Path: string read fPath write fPath;
property Root: TcxDlgShellRoot read fRoot write fRoot;
property ShowButtons: Boolean read FShButtons write FShButtons default True;
property ShowInfoTips: Boolean read FShInfoTips write FShInfoTips default False;
property ShowLines: Boolean read fShShowLines write fShShowLines default True;
property ShowRoot: Boolean read FShShowRoot write FShShowRoot default True;
property Title: string read FTitle write FTitle;
public
constructor Create(aOwner: TComponent); override;
destructor Destroy; override;
function Execute: Boolean;
end;
{ TcxShellBrowserDialog }
TcxShellBrowserDialog = class(TcxCustomShellBrowserDialog)
published
property FolderLabelCaption;
property LookAndFeel;
property Options;
property Path;
property Root;
property ShowButtons;
property ShowInfoTips;
property ShowLines;
property ShowRoot;
property Title;
end;
implementation
{ TcxCustomShellBrowser }
constructor TcxCustomShellBrowserDialog.Create(aOwner: TComponent);
begin
inherited;
fShellOptions := TcxDlgShellOptions.Create;
fRoot := TcxDlgShellRoot.Create;
Title := '';
FShShowRoot := True;
FShButtons := True;
fShShowLines := True;
FLookAndFeel := TcxLookAndFeel.Create(Self);
end;
destructor TcxCustomShellBrowserDialog.Destroy;
begin
FreeAndNil(FLookAndFeel);
fRoot.Free;
fShellOptions.Free;
inherited;
end;
function TcxCustomShellBrowserDialog.Execute: Boolean;
var
vOc: TCursor;
begin
vOc := Screen.Cursor;
Screen.Cursor := crHourglass;
try
FDlg := CreateForm;
with FDlg do
begin
if Length(Title) > 0 then
DlgCaption := Title;
if Length(FFolderCaption) > 0 then
DlgFolderLabelCaption := FFolderCaption;
DlgOptions.ShowFolders := fShellOptions.ShowFolders;
DlgOptions.ShowToolTip := fShellOptions.ShowToolTip;
DlgOptions.TrackShellChanges := fShellOptions.TrackShellChanges;
DlgOptions.ContextMenus := fShellOptions.ContextMenus;
DlgOptions.ShowNonFolders := fShellOptions.ShowNonFolders;
DlgOptions.ShowHidden := fShellOptions.ShowHidden;
DlgRoot.BrowseFolder := fRoot.BrowseFolder;
DlgRoot.CustomPath := fRoot.CustomPath;
DlgShowButtons := ShowButtons;
DlgShowInfoTips := ShowInfoTips;
DlgShowLines := ShowLines;
DlgShowRoot := ShowRoot;
DlgFolder := fPath;
FDlg.LookAndFeel.MasterLookAndFeel := Self.LookAndFeel;
Result := ShowModal = idOk;
if Result then
fPath := FDlg.DlgFolder;
end;
finally
FreeAndNil(FDlg);
Screen.Cursor := vOc;
end;
end;
function TcxCustomShellBrowserDialog.CreateForm: TcxShellBrowserDlg;
begin
Result := TcxShellBrowserDlg.Create(Application);
end;
procedure TcxCustomShellBrowserDialog.SetLookAndFeel(Value: TcxLookAndFeel);
begin
FLookAndFeel.Assign(Value);
end;
end.