Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi AddObjekt problem (https://www.delphipraxis.net/39711-addobjekt-problem.html)

Red_Dragon 6. Feb 2005 20:46


AddObjekt problem
 
ich versuche grad eine playerlist zu erstellen aber kriege es einfach net hin dasdie datei geladen wird ist auch schwer wenn ich kein string nutzten darf :(

Wiedergabeliste.Items.AddObject('test.lied', Opendialog1);

hat jemand ne idee wie ich das anstellen soll?

Sprint 6. Feb 2005 20:56

Re: AddObjekt problem
 
Zitat:

Zitat von Red_Dragon
ist auch schwer wenn ich kein string nutzten darf

Irgendwo in deinem Programm muss schon der Dateiname als String vorliegen. Sonst geht es nicht.

Red_Dragon 6. Feb 2005 21:00

Re: AddObjekt problem
 
Zitat:

Zitat von Sprint
Zitat:

Zitat von Red_Dragon
ist auch schwer wenn ich kein string nutzten darf

Irgendwo in deinem Programm muss schon der Dateiname als String vorliegen. Sonst geht es nicht.

opendialog1.filename

aber das nützt mir ja nix ich kann ja keine strings nutzen bei addobjekt...

Sprint 6. Feb 2005 21:08

Re: AddObjekt problem
 
Dann nimmst du eine TStringList und speicherst dort den Dateinamen. Wenn du synchron in deine Wiedergabeliste und in die FileList addest, dann kannst du ja über ItemIndex zu greifen. Ansonsten merkst du dir die Postion von FileList.Add und trägst den bei Wiedergabeliste.AddObject('Mein Song', TObject(Position)) ein.

Muetze1 6. Feb 2005 21:46

Re: AddObjekt problem
 
Moin!

Oder du pfeifst auf ein wenig Speicheroverhead und legst dir ein kleines Objekt an, welches dann den Dateinamen enthält und z.B. ob es schon abgespielt wurde (z.B: für Shuffle), etc. Dann einfach dieses Objekt zu dem Eintrag hinzufügen.

MfG
Muetze1

Red_Dragon 16. Feb 2005 19:13

Re: AddObjekt problem
 
puh irgendwie krieg ich nix hin und verstehen tu ich das was ihr meint irgendwie nicht ganz *g*
ich versuche das jetzt schon seit 10 tagen aber irgendwie krieg ich einfach auf keine weise hin das das halbwegs so aussieht wie bei winamp...:(

Muetze1 16. Feb 2005 23:17

Re: AddObjekt problem
 
Moin!

Was ist deine Frage? Das Aussehen oder die Programmierung der ListBox o.ä. für die Playlist?

MfG
Muetze1

Red_Dragon 17. Feb 2005 06:12

Re: AddObjekt problem
 
Zitat:

Zitat von Muetze1
Was ist deine Frage? Das Aussehen oder die Programmierung der ListBox o.ä. für die Playlist?

die programmierung ...
mir ist einfach nicht begreifbar wie ich das mit den objekten regeln soll

Sprint 17. Feb 2005 07:02

Re: AddObjekt problem
 
Zitat:

Zitat von Red_Dragon
mir ist einfach nicht begreifbar wie ich das mit den objekten regeln soll

Der einfachste Weg ist wohl eine Dateiliste (TStringList) anzulegen. Dort fügst du dann den Dateinamen hinzu. In deiner visuellen Anzeige (z.B. TListBox) benutzt du AddObject und missbrauchst diese Funktion. Anstatt ein Objekt zu übergeben, gibt du die Position von deinem Dateinamen in der Dateiliste an. In der Praxis könnte das z.B. so aussehen:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
  private
    { Private-Deklarationen }
    FileList: TStringList;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  FileList := TStringList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FileList.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Position: Integer;
begin
  if OpenDialog1.Execute then
  begin
    Position := FileList.Add(OpenDialog1.FileName);
    ListBox1.Items.AddObject(ExtractFileName(OpenDialog1.FileName), TObject(Position));
  end;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  ShowMessage(FileList.Strings[ListBox1.ItemIndex]);
end;

end.
In der ListBox steht nur der Dateiname, ohne den Pfad. Bei einem doppelklick auf die ListBox wird der vollständige Dateiname aus der Dateiliste ausgelesen und in einer MessageBox angezeigt.

Die andere Möglichkeit wäre die, die Muetze1 schon angesprochen hat.

phXql 17. Feb 2005 07:03

Re: AddObjekt problem
 
Delphi-Quellcode:
Wiedergabeliste.Items.add(OpenDialog1.Filename);

Sprint 17. Feb 2005 07:25

Re: AddObjekt problem
 
@phXql: Glaubst du wirklich, das in der Wiedergabeliste der vollständige Dateiname stehen soll? Ich nicht. Ich denke da sollen später Interpret, Titel und Spielzeit drin stehen.

phXql 17. Feb 2005 07:46

Re: AddObjekt problem
 
Zitat:

Zitat von Sprint
@phXql: Glaubst du wirklich, das in der Wiedergabeliste der vollständige Dateiname stehen soll? Ich nicht. Ich denke da sollen später Interpret, Titel und Spielzeit drin stehen.

So wie es Red_Dragon im ersten Post angegangen hat, würde (hätte es funktioniert) auch nur der Filename drin stehen. Meins is nur die einfachste Möglichkeit. Wollte man es mit Interpret usw. machen, wäre es wohl am besten, eine eigene Klasse für jedes geladene MP3 zu erstellen, und dann eine Instanz dieser klasse als Object bei AddObject() angeben.

Sprint 17. Feb 2005 08:34

Re: AddObjekt problem
 
Zitat:

Zitat von phXql
Wollte man es mit Interpret usw. machen, wäre es wohl am besten, eine eigene Klasse für jedes geladene MP3 zu erstellen, und dann eine Instanz dieser klasse als Object bei AddObject() angeben.

Richtig. Und diese Antwort hat Muetze1 ja schon geschrieben.

Red_Dragon 17. Feb 2005 15:02

Re: AddObjekt problem
 
super Sprint jetzt hab ich verstanden wies geht bist ein genie echt vielen dank :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 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