|
![]() |
|
Registriert seit: 27. Aug 2009 39 Beiträge Delphi 10.2 Tokyo Professional |
#1
@Blub. Ich habe jetzt extra nochmal geschaut. ICh finde in meiner MainForm keine weitere Variable mit der Bezeichnung Playlist .
Ich habe mal die Main Unit . Playlist_Klasse , und dir Form2 Unit hier aufgelstet Main Unit
Delphi-Quellcode:
Playlist_Klasse
unit Player_V0_2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Menus, playlist_s0n_Klasse, player_s0n_Klasse, ExtCtrls ; type TForm1 = class(TForm) Button_Play: TButton; Button_previous: TButton; Button_stop: TButton; Button_next: TButton; MainMenu1: TMainMenu; N1: TMenuItem; Open: TMenuItem; Open_Folder: TMenuItem; Save_Playlist: TMenuItem; Process: TMenuItem; Stop1: TMenuItem; Previous: TMenuItem; Next: TMenuItem; View1: TMenuItem; Playlist: TMenuItem; FileOpenDialog: TOpenDialog; Timer_Ablauf: TTimer; Namefield: TPanel; Timefield: TPanel; CpuField: TPanel; ScrollBar_Volume: TScrollBar; Label_Volume: TLabel; Id3TagInfo1: TMenuItem; ScrollBar_Position: TScrollBar; N2: TMenuItem; Info1: TMenuItem; procedure FormCreate(Sender: TObject); procedure OpenClick(Sender: TObject); procedure Timer_AblaufTimer(Sender: TObject); procedure ScrollBar_VolumeChange(Sender: TObject); procedure ScrollBar_PositionScroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); procedure PlaylistClick(Sender: TObject); procedure Button_nextClick(Sender: TObject); procedure Button_previousClick(Sender: TObject); procedure Info1Click(Sender: TObject); procedure Button_PlayClick(Sender: TObject); procedure Button_stopClick(Sender: TObject); procedure FormClick(Sender: TObject); private { Private-Deklarationen } public end; var Form1: TForm1; sPlayer: Ts0nPlayer; posScroll: longword; ScrollMAx: integer; Const BASS_ACTIVE_STOPPED = 0; BASS_ACTIVE_PLAYING = 1; BASS_ACTIVE_STALLED = 2; BASS_ACTIVE_PAUSED = 3; implementation uses window_playlist; {$R *.dfm} //************************************************************* //Beim Starten des Hauptfensters wird diese Procedur ausgeführt //************************************************************* procedure TForm1.FormCreate(Sender: TObject); var tempL: real; begin // Objekte erstellen sPlayer := ts0nplayer.Create; // Bass Engine initialisieren sPlayer.BassEngineInit(handle); // Anfangs Lautstärke auf 30 % setzen tempL:=30; sPlayer.Lauststaerke(tempL); // ScrollBar für Volume setzen scrollbar_Volume.Position := Round(tempL); end; //************************************************************* // Action nach Open Klick //************************************************************* procedure TForm1.OpenClick(Sender: TObject); var sadded: string; i : integer; begin // Eigenschaften des Open Dialog setzen FileOpenDialog.Title:='Open Files ...'; FileOpenDialog.Filter:='MP3 Dateien|*.mp3|Wave Dateien|*.wav'; if FileOpenDialog.Execute then for i := 0 to FileOpenDialog.Files.Count - 1 do begin sAdded:= FileOpenDialog.Files[i] ; // sPlaylist.AddTrack(sAdded); playlist_s0n_Klasse.Playlist.AddTrack(sadded); end; end; //************************************************************* // Tímer //************************************************************* procedure TForm1.Timer_AblaufTimer(Sender: TObject); var temp: integer; temp2: string; begin Timer_Ablauf.Interval:=100; CpuField.Caption:= 'CPU: ' + sPlayer.GetCpuStatus + '%'; // Wenn die interne Playlist keine Traxx enthält dann werden die Buttons gesperrt if playlist_s0n_Klasse.Playlist.Getcount > 0 then begin Button_Play.Enabled := true; Button_previous.Enabled := true; Button_Next.Enabled := true; Button_Stop.Enabled := true; end else begin Button_Play.Enabled := false; Button_previous.Enabled := false; Button_Next.Enabled := false; Button_Stop.Enabled := false; end; // Wenn Wiedergabe gestartet wird der Position Regler freigegeben und die Zeiten aktualisiert if splayer.GetBassStatus = BASS_ACTIVE_PLAYING then begin ScrollBar_Position.Enabled := true ; temp:= Round( sPlayer.GetTrackTimeRunSec / sPlayer.GetTrackTimeLoadSec * 1000); if ScrollBar_Position.Tag = 0 then ScrollBar_Position.Position:= temp; Namefield.Caption:=extractfilename(playlist_s0n_Klasse.Playlist.ActTrackName); TimeField.Caption:= sPlayer.GetActualTime + '/' + splayer.GetTrackTimeRun; end; if Scrollbar_Position.Position = 1000 then begin temp2:= playlist_s0n_Klasse.Playlist.GetNextTrackName; sPlayer.Abspielen(temp2); end; end; //************************************************************* // Volume Scroller //************************************************************* procedure TForm1.ScrollBar_VolumeChange(Sender: TObject); var tempScroll: real; begin tempScroll:=ScrollBar_Volume.Position / 100; sPlayer.Lauststaerke(tempScroll); Label_Volume.Caption:=(FloatToStr(tempScroll*100)) + ' %'; end; //Button Play procedure TForm1.Button_PlayClick(Sender: TObject); begin playlist_s0n_Klasse.Playlist.PlayActTrack; end; //Button Next Track procedure TForm1.Button_nextClick(Sender: TObject); begin playlist_s0n_Klasse.Playlist.PlayNextTrack; end; //Button Previous Track procedure TForm1.Button_previousClick(Sender: TObject); begin playlist_s0n_Klasse.Playlist.PlayPreviousTrack; end; //Button Stop procedure TForm1.Button_stopClick(Sender: TObject); begin playlist_s0n_Klasse.Playlist.StopActTrack; ScrollBar_Position.Position:=0; end; //ScrollBar Action nach beenden des Scrollens procedure TForm1.ScrollBar_PositionScroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); begin if Scrollcode = scEndScroll then begin ScrollMax:=ScrollBar_Position.Max; posScroll:= ScrollBar_Position.Position; sPlayer.SetPosition(posScroll,ScrollMax); ScrollBar_Position.Tag:=0; end else ScrollBar_Position.Tag:=1; end; // Menu Einträge die angelkickt werden //Menu View - Show - Anzeigen des Playlist Fensters procedure TForm1.PlaylistClick(Sender: TObject); begin Form2.Show; end; // Menu ? - Info procedure TForm1.Info1Click(Sender: TObject); begin ShowMessage('programmed by s0n: Version 0.2'); end; procedure TForm1.FormClick(Sender: TObject); begin showMessage(inttostr(playlist_s0n_Klasse.Playlist.Getcount)); end; end.
Delphi-Quellcode:
Form2 Unit
unit playlist_s0n_Klasse;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Bass, StdCtrls, ComCtrls, IniFiles, player_s0n_klasse; type Ts0nplaylist = class scPlayList: THashedStringList ; // In dieser Liste werden die Namen der Traxx gespeichert scActTrackIndex: Integer; // Variable für den aktuellen TrackIndex sPlayer: Ts0nPlayer; // Player Klassenverknüpfung setzen constructor Create; destructor Destroy; override; private public procedure AddTrack(var scFile: String); // Fügt einen Track zu der String List function GetNextTrackIndex: Integer; // Ermittelt die nächste Track Indexnummer function GetNextTrackName: String; // Ermittel den nächsten Tracknamen ( benötigt die nächste Indexnummer ) function GetPreviousTrackIndex: Integer; // Ermittelt die vorherige Track Indexnummer function GetPreviousTrackName: String; // Ermittelt den vorherigen Tracknamen function Getcount: integer; // Gesamtanzahl der Einträge in der StringList function ActTrackName: String; // Gibt den Eintrag aus der per Index augerufen wurde procedure PlayActTrack; // aktuellen Track abspielen procedure PlayNextTrack; // nächsten Track abspielen procedure PlayPreviousTrack; // vorherigen Track abspielen procedure StopActTrack; // stoppt den aktuell laufen Track end; var Playlist: Ts0nPlaylist; implementation constructor Ts0nplaylist.Create; begin inherited create; Playlist := Ts0nPlaylist.Create; scPlayList := THashedStringList.Create; scActTrackIndex:= 0; end; destructor Ts0nplaylist.Destroy; begin scPlaylist.Free; FreeAndNil (Playlist); inherited destroy; end; //*********************************************************** // Adden //*********************************************************** procedure ts0nplaylist.AddTrack(var scFile: String); begin scPlayList.Add(SCFile); end; //*********************************************************** // Den aktuellen Tracknamen auslesen //*********************************************************** function Ts0nPlaylist.ActTrackName: String; begin result:=scPlaylist.Strings[scActTrackIndex]; end; //*********************************************************** // Die nächste List Indexnummer auslesen //*********************************************************** function ts0nplaylist.GetNextTrackIndex: Integer; begin if scActTrackIndex = scPlaylist.Count-1 then begin scActTrackIndex := 0; end else begin scActTrackIndex := scActTrackIndex + 1; end; result:=scActTrackIndex; end; //*********************************************************** // Die vorherige List Indexnummer auslesen //*********************************************************** function ts0nplaylist.GetPreviousTrackIndex: Integer; begin if scActTrackIndex = 0 then begin scActTrackIndex := scPlaylist.Count-1; end else begin scActTrackIndex := scActTrackIndex -1 ; end; result:=scActTrackIndex; end; //*********************************************************** // Den nächsten Track Name auslesen //*********************************************************** function ts0nplaylist.GetNextTrackName: String; begin result:= scPlaylist.Strings[GetNextTrackIndex]; end; //*********************************************************** // Den vorherigen Track Name auslesen //*********************************************************** function ts0nplaylist.GetPreviousTrackName: String; begin result:= scPlaylist.Strings[GetPreviousTrackIndex]; end; //*********************************************************** // Count ausgeben //*********************************************************** function ts0nplaylist.getcount: integer; begin result:=scPlaylist.Count; end; //*********************************************************** // Den aktuellen Track abspielen //*********************************************************** procedure Ts0nPlaylist.PlayActTrack; var sct: string; begin case sPlayer.BassStatus of BASS_ACTIVE_STOPPED: begin sct:=ActTrackName; sPlayer.Abspielen(sct); end; BASS_ACTIVE_PLAYING: sPlayer.Pausieren; BASS_ACTIVE_PAUSED: sPlayer.Fortsetzen; end; end; //*********************************************************** // Den nächsten Track abspielen //*********************************************************** procedure Ts0nPlaylist.PlayNextTrack; var sct: string; begin sct:= GetNextTrackName; sPlayer.Abspielen(sct); end; //*********************************************************** // Den vorherigen Track abspielen //*********************************************************** procedure Ts0nPlaylist.PlayPreviousTrack; var sct: string; begin sct:= GetPreviousTrackName; sPlayer.Abspielen(sct); end; //*********************************************************** // Den aktuellen Track stoppen //*********************************************************** procedure Ts0nPlaylist.StopActTrack; begin sPlayer.Stoppen; end; end.
Delphi-Quellcode:
Ich hoffe das war jetzt nicht zu viel.Was muß ich in der Main Unit ändern damit ich dieses Chaos beseitigen kann.
unit window_playlist;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,playlist_s0n_Klasse, player_s0n_Klasse, ComCtrls; type TForm2 = class(TForm) MainPlayList: TListView; procedure FormActivate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.FormActivate(Sender: TObject); var myList : TListItem; begin myList := MainPlayList.Items.Add; myList.Caption:=Playlist.ActTrackName; end; end. mfg s0n |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |