Subversion Repositories musikbox

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 daniel-mar 1
unit Config;
2
 
3
interface
4
 
5
uses
6
  Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls,
7
  ActnList, StdActns, ShlObj;
8
 
9
type
10
  TConfigForm = class(TForm)
11
    btnAbbrechen: TButton;
12
    btnSpeichern: TButton;
13
    grpMusikOrdner: TGroupBox;
14
    lstMusikOrdner: TListBox;
15
    btnOrdnerErstellen: TButton;
16
    btnOrdnerEntfernen: TButton;
17
    procedure btnAbbrechenClick(Sender: TObject);
18
    procedure btnSpeichernClick(Sender: TObject);
19
    procedure FormShow(Sender: TObject);
20
    procedure btnOrdnerEntfernenClick(Sender: TObject);
21
    procedure btnOrdnerErstellenClick(Sender: TObject);
22
  private
23
    lg_StartFolder: String;
24
  end;
25
 
26
var
27
  ConfigForm: TConfigForm;
28
 
29
implementation
30
 
31
uses
32
  Main;
33
 
34
{$R *.dfm}
35
 
36
procedure TConfigForm.btnAbbrechenClick(Sender: TObject);
37
begin
38
  close;
39
end;
40
 
41
procedure TConfigForm.btnSpeichernClick(Sender: TObject);
42
var
43
  i: integer;
44
begin
45
  setlength(MainForm.MusikArray, 0);
46
  for i := 0 to lstMusikOrdner.Items.Count-1 do
47
  begin
48
    setlength(MainForm.MusikArray, length(MainForm.MusikArray)+1);
49
    MainForm.MusikArray[length(MainForm.MusikArray)-1] := lstMusikOrdner.Items.Strings[i];
50
  end;
51
 
52
  MainForm.InitDirectories();
53
  MainForm.SchreibeEinstellung();
54
 
55
  close;
56
end;
57
 
58
procedure TConfigForm.FormShow(Sender: TObject);
59
var
60
  i: integer;
61
begin
62
  lstMusikOrdner.Items.Clear;
63
  for i := 0 to length(MainForm.MusikArray)-1 do
64
    lstMusikOrdner.Items.Add(MainForm.MusikArray[i]);
65
end;
66
 
67
procedure TConfigForm.btnOrdnerEntfernenClick(Sender: TObject);
68
begin
69
  if lstMusikOrdner.ItemIndex <> -1 then
70
    lstMusikOrdner.Items.Delete(lstMusikOrdner.ItemIndex);
71
end;
72
 
73
///////////////////////////////////////////////////////////////////
74
// Call back function used to set the initial browse directory.
75
///////////////////////////////////////////////////////////////////
76
function BrowseForFolderCallBack(Wnd: HWND; uMsg: UINT;
77
        lParam, lpData: LPARAM): Integer stdcall;
78
begin
79
  if uMsg = BFFM_INITIALIZED then
80
    SendMessage(Wnd,BFFM_SETSELECTION,1,Integer(@configform.lg_StartFolder[1]));
81
  result := 0;
82
end;
83
 
84
///////////////////////////////////////////////////////////////////
85
// This function allows the user to browse for a folder
86
//
87
// Arguments:-
88
//    browseTitle : The title to display on the browse dialog.
89
//  NewFolder : Allow to create a new folder
90
//  initialFolder : Optional argument. Use to specify the folder
91
//                  initially selected when the dialog opens.
92
//
93
// Returns: The empty string if no folder was selected (i.e. if the
94
//          user clicked cancel), otherwise the full folder path.
95
///////////////////////////////////////////////////////////////////
96
function BrowseForFolder(const browseTitle: String; const NewFolder: boolean = false;
97
        const initialFolder: String =''): String;
98
var
99
  browse_info: TBrowseInfo;
100
  folder: array[0..MAX_PATH] of char;
101
  find_context: PItemIDList;
102
const
103
  BIF_NEWDIALOGSTYLE=$40;
104
begin
105
  FillChar(browse_info,SizeOf(browse_info),#0);
106
  configform.lg_StartFolder := initialFolder;
107
  browse_info.pszDisplayName := @folder[0];
108
  browse_info.lpszTitle := PChar(browseTitle);
109
  if NewFolder then
110
    browse_info.ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE
111
  else
112
    browse_info.ulFlags := BIF_RETURNONLYFSDIRS;
113
  browse_info.hwndOwner := Application.Handle;
114
  if initialFolder <> '' then
115
    browse_info.lpfn := BrowseForFolderCallBack;
116
  find_context := SHBrowseForFolder(browse_info);
117
  if Assigned(find_context) then
118
  begin
119
    if SHGetPathFromIDList(find_context,folder) then
120
      result := folder
121
    else
122
      result := '';
123
    GlobalFreePtr(find_context);
124
  end
125
  else
126
    result := '';
127
end;
128
 
129
procedure TConfigForm.btnOrdnerErstellenClick(Sender: TObject);
130
var
131
  fol: string;
132
begin
133
  fol := BrowseForFolder('Neuen Ordner hinzufügen', true, 'C:\');
134
  if fol <> '' then
135
    lstMusikOrdner.Items.Add(fol);
136
end;
137
 
138
end.