-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathConfig.pas
138 lines (121 loc) · 3.91 KB
/
Config.pas
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
unit Config;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls,
ActnList, StdActns, ShlObj;
type
TConfigForm = class(TForm)
btnAbbrechen: TButton;
btnSpeichern: TButton;
grpMusikOrdner: TGroupBox;
lstMusikOrdner: TListBox;
btnOrdnerErstellen: TButton;
btnOrdnerEntfernen: TButton;
procedure btnAbbrechenClick(Sender: TObject);
procedure btnSpeichernClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnOrdnerEntfernenClick(Sender: TObject);
procedure btnOrdnerErstellenClick(Sender: TObject);
private
lg_StartFolder: String;
end;
var
ConfigForm: TConfigForm;
implementation
uses
Main;
{$R *.dfm}
procedure TConfigForm.btnAbbrechenClick(Sender: TObject);
begin
close;
end;
procedure TConfigForm.btnSpeichernClick(Sender: TObject);
var
i: integer;
begin
setlength(MainForm.MusikArray, 0);
for i := 0 to lstMusikOrdner.Items.Count-1 do
begin
setlength(MainForm.MusikArray, length(MainForm.MusikArray)+1);
MainForm.MusikArray[length(MainForm.MusikArray)-1] := lstMusikOrdner.Items.Strings[i];
end;
MainForm.InitDirectories();
MainForm.SchreibeEinstellung();
close;
end;
procedure TConfigForm.FormShow(Sender: TObject);
var
i: integer;
begin
lstMusikOrdner.Items.Clear;
for i := 0 to length(MainForm.MusikArray)-1 do
lstMusikOrdner.Items.Add(MainForm.MusikArray[i]);
end;
procedure TConfigForm.btnOrdnerEntfernenClick(Sender: TObject);
begin
if lstMusikOrdner.ItemIndex <> -1 then
lstMusikOrdner.Items.Delete(lstMusikOrdner.ItemIndex);
end;
///////////////////////////////////////////////////////////////////
// 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(@configform.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.
// NewFolder : Allow to create a new folder
// initialFolder : Optional argument. Use to specify the folder
// initially selected when the dialog opens.
//
// Returns: The empty string if no folder was selected (i.e. if the
// user clicked cancel), otherwise the full folder path.
///////////////////////////////////////////////////////////////////
function BrowseForFolder(const browseTitle: String; const NewFolder: boolean = false;
const initialFolder: String =''): String;
var
browse_info: TBrowseInfo;
folder: array[0..MAX_PATH] of char;
find_context: PItemIDList;
const
BIF_NEWDIALOGSTYLE=$40;
begin
FillChar(browse_info,SizeOf(browse_info),#0);
configform.lg_StartFolder := initialFolder;
browse_info.pszDisplayName := @folder[0];
browse_info.lpszTitle := PChar(browseTitle);
if NewFolder then
browse_info.ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE
else
browse_info.ulFlags := BIF_RETURNONLYFSDIRS;
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;
procedure TConfigForm.btnOrdnerErstellenClick(Sender: TObject);
var
fol: string;
begin
fol := BrowseForFolder('Neuen Ordner hinzufügen', true, 'C:\');
if fol <> '' then
lstMusikOrdner.Items.Add(fol);
end;
end.