Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   StringList mit Checklist verlinken (https://www.delphipraxis.net/144523-stringlist-mit-checklist-verlinken.html)

jonsen2.0.0.9 9. Dez 2009 18:19


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:
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.
Habs schon versucht mit Indexof funktioniert aber nicht, weiss auch nicht genau wie das gehen soll.

Hoffe ihr habt da was für mich.

MFG
Jonas

shmia 9. Dez 2009 18:27

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 04:28 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz