Einzelnen Beitrag anzeigen

sonny2007

Registriert seit: 27. Aug 2009
39 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

Re: TstringList // Form2 daten aus einer anderen Klasse lese

  Alt 28. Aug 2009, 08:50
@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:
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.
Playlist_Klasse

Delphi-Quellcode:
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.
Form2 Unit

Delphi-Quellcode:
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.
Ich hoffe das war jetzt nicht zu viel.Was muß ich in der Main Unit ändern damit ich dieses Chaos beseitigen kann.

mfg s0n
  Mit Zitat antworten Zitat