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. |