Bonjour,
pour sélectionner un dossier, j'ai trouvé ceci sur le net.
Cela fonctionne bien, mais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 implementation uses Windows, Forms, shlobj; var lg_StartFolder: String; // With later versions of Delphi you may not need these constants. const BIF_NEWDIALOGSTYLE=$40; BIF_NONEWFOLDERBUTTON=$200; { ============================================================================================= } //////////////////////////////////////////////////////////////////////// // Call back function used to set the initial browse directory. //////////////////////////////////////////////////////////////////////// function BrowseForFolderCallBack(Wnd: HWND; uMsg: UINT; lParam, lpData: LPARAM): Integer stdcall; begin if uMsg = BFFM_INITIALIZED then SendMessage(Wnd,BFFM_SETSELECTION, 1, Integer(@lg_StartFolder[1])); result := 0; end; { ============================================================================================= } //////////////////////////////////////////////////////////////////////// // This function allows the user to browse for a folder // // Arguments:- // browseTitle : The title to display on the browse dialog. // initialFolder : Optional argument. Use to specify the folder // initially selected when the dialog opens. // mayCreateNewFolder : Flag indicating whether the user can create a // new folder. // // Returns: The empty string if no folder was selected (i.e. if the user // clicked cancel), otherwise the full folder path. //////////////////////////////////////////////////////////////////////// function BrowseForFolder2( const initialFolder: String =''; const browseTitle: String = 'Choose a Directory' ; mayCreateNewFolder: Boolean = False): String; var browse_info: TBrowseInfo; folder: array[0..MAX_PATH] of char; find_context: PItemIDList; begin //-------------------------- // Initialise the structure. //-------------------------- FillChar(browse_info,SizeOf(browse_info),#0); lg_StartFolder := initialFolder; browse_info.pszDisplayName := @folder[0]; browse_info.lpszTitle := PChar(browseTitle); browse_info.ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE; if not mayCreateNewFolder then browse_info.ulFlags := browse_info.ulFlags or BIF_NONEWFOLDERBUTTON; browse_info.hwndOwner := Application.Handle; if initialFolder <> '' then browse_info.lpfn := BrowseForFolderCallBack; find_context := SHBrowseForFolder(browse_info); if Assigned(find_context) then begin if SHGetPathFromIDList(find_context,folder) then result := folder else result := ''; GlobalFreePtr(find_context); end else result := ''; end; { ============================================================================================= }
1 - le dossier initial est bien sélectionné, mais il n'apparait pas forcement dans le Treeview. J'aimerais bien le voir affiché . Ext ce possible ?
2 - le titre du dialogue est "Rechercher un dossier" est il possible dans le TBrowseInfo (ou ailleurs ?) de le modifier ? (sachant que ce n'est pas BrowseTitle !)
Merci
A+
Charly
Partager