unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, FileCtrl, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public end; var Form1: TForm1; implementation {$R *.dfm} uses ShlObj; function BrowseCallbackProc(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer stdcall; var R1, R2: TRect; L, T: integer; begin if uMsg = BFFM_INITIALIZED then begin GetWindowRect(GetDesktopWindow, R1); GetWindowRect(Wnd, R2); L := (R1.Right-R2.Right) div 2; T := (R1.Bottom-R2.Bottom) div 2; SetWindowPos(Wnd, 0, L, T, R2.Right-R2.Left, R2.Bottom-R2.Top, SWP_SHOWWINDOW ); end; Result := 1; end; procedure TForm1.Button1Click(Sender: TObject); var BrowseInfo: TBrowseInfo; begin FillChar(BrowseInfo, SizeOf(BrowseInfo), 0); BrowseInfo.lpfn := BrowseCallbackProc; ShBrowseForFolder(BrowseInfo); end; end.