AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datei öffnen mit TOpenDialog

Ein Thema von Andy-h · begonnen am 6. Okt 2007 · letzter Beitrag vom 6. Okt 2007
Antwort Antwort
Andy-h

Registriert seit: 3. Okt 2007
23 Beiträge
 
#1

Re: Datei öffnen mit TOpenDialog

  Alt 6. Okt 2007, 11:40
Ja Item ist markiert.

hier mal der ganze code:

Delphi-Quellcode:
unit Unit4;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, MPlayer, ShellApi, mmsystem, Math, ExtCtrls;

type
  TForm4 = class(TForm)
    MediaPlayer1: TMediaPlayer;
    Button1: TButton;
    ListBox1: TListBox;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    OpenDialog1: TOpenDialog;
    Timer1: TTimer;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
    procedure MediaPlayer1Notify(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    Procedure AddToPlayList(s:string);
    procedure PlayFile(songNumber: integer);
    Procedure WMDropFiles (Var aMsg: tMessage); message WM_DROPFILES; //Drag und drop
  end;

var
  Form4: TForm4;
  var PlayList: TStringList;
  CurrentSong: integer = -1; // neue globale variable um uns das aktuelle lied zu merken
  Lautstaerke: integer = -1;

implementation

{$R *.dfm}
//Sound
procedure GetVolume(var volL, volR: Word);
var
  hWO: HWAVEOUT;
  waveF: TWAVEFORMATEX;
  vol: DWORD;
begin
  volL:= 0;
  volR:= 0;
  // init TWAVEFORMATEX
  FillChar(waveF, SizeOf(waveF), 0);
  // open WaveMapper = std output of playsound
  waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
  // get volume
  waveOutGetVolume(hWO, @vol);
  volL:= vol and $FFFF;
  volR:= vol shr 16;
  waveOutClose(hWO);
end;


procedure SetVolume(const volL, volR: Word);
var
  hWO: HWAVEOUT;
  waveF: TWAVEFORMATEX;
  vol: DWORD;
begin
  // init TWAVEFORMATEX
  FillChar(waveF, SizeOf(waveF), 0);
  // open WaveMapper = std output of playsound
  waveOutOpen(@hWO, WAVE_MAPPER, @waveF, 0, 0, 0);
  vol:= volL + volR shl 16;
  // set volume
  waveOutSetVolume(hWO, vol);
  waveOutClose(hWO);
end;

//Sound

Procedure TForm4.WMDropFiles (Var aMsg: tMessage);
Var
  Idx, Size, FileCount: Integer;
  Filename: pChar;
Begin
  Inherited;
  FileCount := DragQueryFile (aMsg.WParam, $FFFFFFFF, nil, 255);
  For Idx := 0 To FileCount -1 Do Begin
    Size := DragQueryFile (aMsg.WParam, Idx, nil, 0) + 1;
    Filename := StrAlloc (Size);
    If DragQueryFile (aMsg.WParam, Idx, Filename, Size) = 1 Then { nothing }
    else AddToPlayList (pChar (Filename)); // hier wird das jeweilige file unserer Prozedur AddToPlaylist überwiesen.
    StrDispose (Filename);
  End;
  DragFinish (aMsg.WParam);
End;

Procedure TForm4.AddToPlayList(s:string);
begin
   playList.Add(s);
   ListBox1.Items.Add(extractfilename(s));
end;

procedure TForm4.Button1Click(Sender: TObject);
begin
  PlayFile(ListBox1.ItemIndex);
end;

//sound auslesen

procedure TForm4.Button2Click(Sender: TObject);
var
X,TonLi, TonRe, VolLi, VolRe: Word;
begin
  GetVolume(VolLi,VolRe);
  TonLi:= Floor(VolLi / 65535 * 100);
  TonRe:= Floor(VolRe / 65535 * 100);
  Label1.Caption:=IntToStr(TonLi);
  Label2.Caption:=IntToStr(TonRe);
end;

procedure TForm4.Button3Click(Sender: TObject);
begin
 mediaplayer1.next;
end;

procedure TForm4.Button4Click(Sender: TObject);
begin
 mediaplayer1.back;
end;

procedure TForm4.Button5Click(Sender: TObject);
var SAlterPfad,SNeuerPfad :string;
begin
if OpenDialog1.Execute then
begin
SAlterPfad := Opendialog1.files[0];
   SNeuerPfad := ExtractFilePath(ParamStr(0))+('Musik\'+ ExtractFileName(OpenDialog1.FileName));

if not FileExists(SNeuerPfad) then
  begin
   CopyFile(PChar(SAlterPfad), PChar(SNeuerPfad), true);
   ListBox1.Items.Add(ExtractFileName(OpenDialog1.FileName));
  end
else
  MessageDlgPos('Datei ist bereits in der Liste',mtInformation,[mbOk],0,280,170);
end;
end;

//Sound auslesen

procedure TForm4.FormCreate(Sender: TObject);
begin
   DragAcceptFiles (Handle, True); // drag und drop akzeptieren
   playList := TStringList.Create;
end;

procedure TForm4.FormDestroy(Sender: TObject);
begin
   playList.Free;
end;

procedure TForm4.PlayFile(songNumber: integer); // deklaration von playfile ändern, hier das 2. mal
begin
   if fileexists(Playlist.Strings[songNumber]) then begin
     CurrentSong := songNumber;
     mediaplayer1.Close;
     mediaplayer1.FileName := Playlist.Strings[songNumber];
     mediaplayer1.Open;
     mediaplayer1.play;
   end;
end;

procedure TForm4.Timer1Timer(Sender: TObject);
var
  hilf, hilfbuchstabe: string;
begin
  hilf := Label3.Caption; //einlesen der gesamten caption
  hilfbuchstabe := hilf[1]; //merken des ersten zeichens der caption
  delete(hilf, 1, 1); //erstes zeichen löschen
  hilf := hilf + hilfbuchstabe;//caption + gemerktes zeichen
  Label3.Caption := hilf; //das ganze ausgeben
  application.ProcessMessages; //um sicher zu gehen, dass das ganze angezeigt wird
  //timer intervall auf ca. 200ms stellen
end;

procedure TForm4.ListBox1DblClick(Sender: TObject);
var i : integer;
begin
  for i := 0 to listbox1.Count - 1 do
    if listbox1.Selected[i] then break;
  { nun haben wir in i die nummer der selektierten Zeile
    da Listbox und Playlist eine identische Reihe der Einträge und gleiche Sortierung
    vorweisen, können wir mit dem erhaltenen index den richtigen Eintrag der Playlist
    auslesen. }

    PlayFile(i);
end;

procedure TForm4.MediaPlayer1Notify(Sender: TObject);
begin
   if mediaplayer1.Position = mediaplayer1.Length then begin
   // position = gesamtlänge, bedeutet dass das lied beendet wurde
     Listbox1.Selected[currentSong] := false; // das gerade gespielte lied de-selektieren
     inc(currentSong); // aktuellen song um eines erhöhen
     if currentSong < Playlist.Count then { alles passt, songindex im rahmen}
     else currentsong := 0; {ende der liste erreicht, setze aktuelles lied auf anfang}
     PlayFile(CurrentSong);
     Listbox1.Selected[currentSong] := true; // das aktuelle lied selektieren
   end;
end;

end.
Ist zum größten teil zusammengesucht und sieht deswegen unordentlich aus.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 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