![]() |
StringList mit Checklist verlinken
Hallo,
hab folgendes Problem. Ich schreibe gerade ein Programm, bei dem man einen Pfad wählt. In diesem Pfad wird dan Rekursiv nach .mp3 dateien gesucht. Die gefundenen Dateien werden ohne Pfad in einer Checklistbox angezeigt, aber mit Pfad in einer Stringlist (sl2) gespeichert. Nun möchte ich diese miteinander Kombinieren. Das heist => wenn ich in der checklistbox ein Eintrag auf checked=true setze und dann auf den Button Play drücke soll dieser geöffnet werden. Nur ich weiss nicht wie man das Kombiniert. Habs bis jetzt so:
Delphi-Quellcode:
Habs schon versucht mit Indexof funktioniert aber nicht, weiss auch nicht genau wie das gehen soll.
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, CheckLst, MPlayer, ShellAPI, FileCtrl; type TForm3 = class(TForm) MediaPlayer1: TMediaPlayer; Button1: TButton; CheckListBox1: TCheckListBox; MainMenu1: TMainMenu; MainProgramm1: TMenuItem; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } sDir: String; sl2: TStringList; // sl2 global verfügbar machen public { Public-Deklarationen } end; var Form3: TForm3; idxOfCheckListBox:integer; implementation {$R *.dfm} Procedure FindFiles (aPath, aFindMask: String; aWithSub: Boolean; aResult: tStrings; removePath:Boolean); Var FindRec: tSearchRec; Begin If (aPath = '') or (aFindMask = '') or Not Assigned (aResult) Then Exit; If aPath[Length (aPath)] <> '\' Then aPath := aPath + '\'; If FindFirst (aPath + aFindMask, faAnyFile, FindRec) = 0 Then Repeat If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then begin if removePath then aResult.Add(ExtractFileName(aPath + FindRec.Name)) else aResult.Add(FindRec.Name); end; Until FindNext (FindRec) <> 0; FindClose (FindRec); If Not aWithSub Then Exit; If FindFirst (aPath + '*.*', faAnyFile, FindRec) = 0 Then Repeat If (FindRec.Name <> '.') and (FindRec.Name <> '..') Then If Boolean (FindRec.Attr and faDirectory) Then FindFiles (aPath + FindRec.Name, aFindMask, aWithSub, aResult, false); Until FindNext (FindRec) <> 0; FindClose (FindRec); End; procedure TForm3.Button1Click(Sender: TObject); begin if SelectDirectory('Verzeichnis wählen', '*:\', sDir) then begin if DirectoryExists(sDir) then begin FindFiles(sDir, '*.mp3', True, CheckListBox1.Items, true); FindFiles(sDir, '*.mp3', True, sl2, false); end; end; end; procedure TForm3.FormCreate(Sender: TObject); begin sl2 := TStringList.Create; end; procedure TForm3.FormDestroy(Sender: TObject); begin sl2.Free; end; procedure TForm3.Button2Click(Sender: TObject); Var i:integer; begin for i:=0 to checklistbox1.Items.Count do begin idxOfCheckListBox := CheckListBox1.ItemIndex; MediaPlayer1.FileName:=sl2.Strings[idxOfCheckListBox]; MediaPlayer1.Open; MediaPlayer1.Play; end; end; end. Hoffe ihr habt da was für mich. MFG Jonas |
Re: StringList mit Checklist verlinken
Liste der Anhänge anzeigen (Anzahl: 1)
Mit dem Opendialog kann man auch viele Dateien auf einen Rutsch öffnen.
Man muss nur ofAllowMultiSelect in den Options aktivieren. Der Benutzer kann eine, mehrere oder alle Dateien (wenn er Strg-A drückt) markieren und öffnen. Über OpenDialog1.Files kann man alle Dateien mit Pfad auslesen. Der OpenDialog dürfte viel leistungsfähiger und variabler sein, als das was du bisher hast. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz