| Class TFolderDialog (unit FoldrDlg) |
TCommonDialog
TFolderDialog is a shell supplied task modal dialog with active events and customizable buttoncontrol
| Constructors |
constructor Create(AOwner: TComponent);| Functions |
destructor Destroy;
procedure EnableOK(const Value: Boolean);--------------------------------------------------------------------------------------------------------// {Use this function to enable/disable the OK button of the browse dialog from within one of the TFolderDialog event handlers
function Execute: Boolean;
function Perform(Msg: Cardinal; WParam, LParam: Longint): Longint;
procedure BFFMInitialized(Param: integer);
procedure BFFMSelChanged(Param: integer);
procedure CreateCustomButton;
procedure DefaultHandler(var Message);
procedure Notification(AComponent: TComponent; Operation: TOperation);
procedure PositionWindow;
function BffScaledX(dlgpixX: integer): integer;
function BffScaledY(dlgpixY: integer): integer;
procedure CenterOnParent;
procedure DefineProperties(Filer: TFiler);pass on to our Owner if any
procedure DoChange;
class function GetDlgCtlPixelRect(duX, duY, duCX, duCY: word): TRect;
function GPVCaption: string;
function GPVCustomButton: TButtonControl;
function GPVDesignedLeft: integer;
function GPVDesignedTop: integer;
function GPVDirectory: string;
function GPVHandle: HWND;
function GPVParent: TWinControl;
function GPVParentHandle: HWND;
class procedure InitializeClass;
procedure ReplaceSelection(PIDL: PItemIDList);
procedure SPVCaption(const Value: string);
procedure SPVCustomButton(Value: TButtonControl);
procedure SPVDesignedLeft(Value: integer);
procedure SPVDesignedTop(Value: integer);
procedure SPVDirectory(const Value: string);
procedure SPVOptions(const Value: TFolderDialogOptions);
procedure SPVParent(const Value: TWinControl);
procedure SPVRootFolder(Value: TShellFolder);
procedure SPVSelectionPath(const Value: String);
procedure SPVSelectionPIDL(const Value: PItemIDList);
procedure SPVStatusText(const Value: string);
procedure WMCommand(var Message: TWMCommand);
procedure WMDestroy(var Message: TWMDestroy);
procedure WMNCDestroy(var Message: TWMNCDestroy);
procedure WMShowWindow(var Message: TWMShowWindow);does Dispatch(Message)
| Properties |
property CustomButton : TButtonControl
property Directory : String
property Left : integer
property Options : TFolderDialogOptions
property RootFolder : TShellFolder
property Text : String
property Title : string
property Top : integer
property ClientHeight : integer
property ClientWidth : integer
property DisplayName : String
property Handle : HWND
property ImageIndex : Integer
property Parent : TWinControl
property RootPIDL : PItemIDList
property SelectionPath : string
property SelectionPIDL : PItemIDList
property StatusText : string
property ParentHandle : HWnd| Events |
event OnChange : TNotifyEvent
event OnClose :
event OnShow : | Variables |
FBrowseInfo : TBrowseInfo;
FCaption : String;
FClientHeight : integer;
FClientWidth : integer;
FCustomButton : TButtonControl;
FDirectory : String;
FDisplayName : string;
FFirstShowDone : boolean;
FHandle : HWnd;
FImageIndex : Integer;
FOkBtnHandle : HWND;
FOnChange : TNotifyEvent;
FOptions : TFolderDialogOptions;
FParent : TWinControl;
FRootFolder : TShellFolder;
FRootIDList : PItemIDList;
FSelectionIDList : PItemIDList;
FSelectionPath : String;
FStatusText : String;
FTemplateButton : TButtonControl;
FTitleText : String;
FXDefWndProc : Pointer;
FXObjectInstance : Pointer;| Constructors |
constructor Create(AOwner: TComponent);compensate for Mapping Mode of dialog's canvas
| Functions |
destructor Destroy;set default prop. values Ctl3d:= true; // inherited Ctl3d should be hidden (does nothing for TFolderDialog
procedure EnableOK(const Value: Boolean);procedure Refresh; // SHChangeNotify
--------------------------------------------------------------------------------------------------------// {Use this function to enable/disable the OK button of the browse dialog from within one of the TFolderDialog event handlers
function Execute: Boolean;If we should, disable/enable the custom button in sync with the OK button
function Perform(Msg: Cardinal; WParam, LParam: Longint): Longint;Pass on to original dialog procedure
procedure BFFMInitialized(Param: integer);clear statustext
procedure BFFMSelChanged(Param: integer);do not free PIDLS here
procedure CreateCustomButton;inherited TCommonDialog's FHandle is not same as ours, so:
procedure DefaultHandler(var Message);Free the ID lists with the system task allocator
procedure Notification(AComponent: TComponent; Operation: TOperation);make sure we get a notification when the CustomButton is destroyed
procedure PositionWindow;
function BffScaledX(dlgpixX: integer): integer;next values are from Shell32.dll DIALOG resource #1079
function BffScaledY(dlgpixY: integer): integer;compensate for Mapping Mode of dialog's canvas
procedure CenterOnParent;Center the given window on the Foreground window - Added by Manuel Duarte} {Modifed by Todd Fast to place the top of the dialog at visual center of main window} {Changed CenterWindow to method CenterOnParent: fdj
procedure DefineProperties(Filer: TFiler);dlg result; relative to FRootIDList { GPV* = GetPropertyValue, SPV* = SetPropertyValue
pass on to our Owner if any
procedure DoChange;
class function GetDlgCtlPixelRect(duX, duY, duCX, duCY: word): TRect;e.g.: small fonts = (8,16), large fonts = (10,20)
function GPVCaption: string;include implicit combinations
function GPVCustomButton: TButtonControl;Fire the user event (WM_InitDialog is not sent by shell dlgs
function GPVDesignedLeft: integer;
function GPVDesignedTop: integer;
function GPVDirectory: string;
function GPVHandle: HWND;
function GPVParent: TWinControl;
function GPVParentHandle: HWND;
class procedure InitializeClass;pixelX = (dialogunitX * baseunitX) / 4 pixelY = (dialogunitY * baseunitY) / 8
procedure ReplaceSelection(PIDL: PItemIDList);unscaled, canvas Mapping Mode is used
procedure SPVCaption(const Value: string);
procedure SPVCustomButton(Value: TButtonControl);procedure TFolderDialog.Refresh; { This has no effect: Looks like the dlg's TreeView is not sensitive to shell's systemwide change notifications (also no F5-key): the dlg doesn't have a or can't refresh his IShellBrowser explorer interface ? } const SHCNE_FOLDEREVENTS = SHCNE_MKDIR or SHCNE_RMDIR or SHCNE_MEDIAINSERTED or SHCNE_MEDIAREMOVED or SHCNE_DRIVEREMOVED or SHCNE_DRIVEADD or SHCNE_UPDATEDIR or SHCNE_DRIVEADDGUI or SHCNE_RENAMEFOLDER; var P1, p2: pointer; dw1, dw2: dword; begin dw1:= 0; dw2:= 0; p1:= @dw1; p2:= @dw2; if Assigned(FRootIDList) then p1:= FRootIDList; if Assigned(FSelectionIDList) then p2:= FSelectionIDList; SHChangeNotify(SHCNE_FOLDEREVENTS{SHCNE_RENAMEFOLDER}, SHCNF_IDLIST or SHCNF_FLUSH{NOWAIT}, p1, p2); end;
procedure SPVDesignedLeft(Value: integer);
procedure SPVDesignedTop(Value: integer);
procedure SPVDirectory(const Value: string);desktop
procedure SPVOptions(const Value: TFolderDialogOptions);
procedure SPVParent(const Value: TWinControl);
procedure SPVRootFolder(Value: TShellFolder);TFolderDialog
procedure SPVSelectionPath(const Value: String);
procedure SPVSelectionPIDL(const Value: PItemIDList);designed position
procedure SPVStatusText(const Value: string);TFolderDialog.CreateCustomButton
procedure WMCommand(var Message: TWMCommand);
procedure WMDestroy(var Message: TWMDestroy);Otherwise, execute the user's code
procedure WMNCDestroy(var Message: TWMNCDestroy);D3: triggers OnClose
procedure WMShowWindow(var Message: TWMShowWindow);triggers OnChange
does Dispatch(Message)
| Properties |
property CustomButton : TButtonControl
property Directory : String
property Left : integer
property Options : TFolderDialogOptions
property RootFolder : TShellFolder
property Text : String
property Title : string
property Top : integer
property ClientHeight : integer
property ClientWidth : integer
property DisplayName : StringDisplayName is dlg result when browsing non-filesystemfolders (e.g. bfBrowseForComputer)
property Handle : HWNDnext are valid while Executing
property ImageIndex : Integer
property Parent : TWinControla defined Parent makes Top, Left position relative to it's client
property RootPIDL : PItemIDList
property SelectionPath : string
property SelectionPIDL : PItemIDList
property StatusText : string
property ParentHandle : HWnd| Events |
event OnChange : TNotifyEvent
event OnClose :
event OnShow : | Variables |
FBrowseInfo : TBrowseInfo;
FCaption : String;
FClientHeight : integer;
FClientWidth : integer;
FCustomButton : TButtonControl;
FDirectory : String;
FDisplayName : string;
FFirstShowDone : boolean;
FHandle : HWnd;
FImageIndex : Integer;
FOkBtnHandle : HWND;
FOnChange : TNotifyEvent;
FOptions : TFolderDialogOptions;
FParent : TWinControl;
FRootFolder : TShellFolder;
FRootIDList : PItemIDList;pointers to Shell ID list (PIDL
FSelectionIDList : PItemIDList;corresponds with RootFolder
FSelectionPath : String;
FStatusText : String;
FTemplateButton : TButtonControl;
FTitleText : String;
FXDefWndProc : Pointer;
FXObjectInstance : Pointer;