AGB  ·  Datenschutz  ·  Impressum  







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

Eigene Komponente die TMediaplayer beinhaltet

Ein Thema von Ironarrow · begonnen am 1. Sep 2007 · letzter Beitrag vom 1. Sep 2007
Antwort Antwort
Ironarrow

Registriert seit: 23. Mär 2004
Ort: Kerpen
16 Beiträge
 
Delphi 7 Professional
 
#1

Eigene Komponente die TMediaplayer beinhaltet

  Alt 1. Sep 2007, 10:51
Hallo zusammen,

ich habe ein Problem. Ich will mir eine eigene nichtsichtbare Komponente erstellen.

Delphi-Quellcode:
unit Jukebox;

interface

uses
  SysUtils, Classes, MPlayer;

type
  TJukebox = class(TComponent)
  private
   { Private-Deklarationen }
   FMediaPlayer   : TMediaPlayer;
   FFilename      : String;
   FVolume         : byte;
   procedure SetVolume   ( iValue : integer );
   function GetVolume   : integer;

  protected
   { Protected-Deklarationen }
  public
   { Public-Deklarationen }
   Constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
   procedure Play;
   procedure Stop;
  published
   { Published-Deklarationen }
   property Filename : String read FFilename write FFilename;
   property Volume : integer read GetVolume write SetVolume;
  end;

procedure Register;

implementation

procedure Register;
  begin
   RegisterComponents('Beispiele', [TJukebox]);
  end;

constructor TJukebox.Create (AOwner: TComponent);
  begin
   inherited;
   FMediaPlayer := TMediaplayer.Create(self);
  end;

destructor TJukebox.Destroy;
  begin
   fMediaPlayer.Destroy;
   inherited Destroy;
  end;

procedure TJukebox.SetVolume(iValue : integer);
  begin
   if iValue < 0 then                           { Lautstärke kleiner 0 }
      iValue := 0                              { Lautstärke auf 0 korrigieren }
   else if iValue > 100 then                     { Lautstärke größer 100 }
      iValue := 100;                           { Lautstärke auf 100 korrigieren }

   FVolume := iValue;                           { Lautstärke abspeichern }
  end;

function TJukebox.GetVolume : integer;
  begin
   Result := FVolume;
  end;

procedure TJukebox.Play;
  begin
   FMediaPlayer.FileName := FFileName;
   FMediaPlayer.Open;
   FMediaPlayer.Play;
  end;

procedure TJukebox.Stop;
  begin
   FMediaPlayer.Stop;
   FMediaPlayer.Close;
  end;

end.
Füge ich diese Komponente nun in ein Formular ein, weise Filename einen Dateinamen zu und rufe die Procedure Play auf erhalte ich folgende Fehlermeldung:

Zitat:
Im Projekt Project1.exe ist eine Exception der Klasse EIvalidOperation aufgetreten. Meldung: 'Element '' hat kein übergeordnetes Fenster'. Prozess wurde angehalten. Mit Einzelanweisung oder Start fortsetzen.
Die Komponente soll später nur WAVs und MP3s abspielen und bei MP3-Dateien noch die Tags auslesen (ist aber noch nicht im Code oben enthalten). Der Fehler liegt meiner Meinung nach im Constructor beim Create des Mediaplayers. Füge ich nach

Delphi-Quellcode:
   inherited;
   FMediaPlayer := TMediaplayer.Create(self);
noch ein
   FMediaPlayer.Parent := Self; ein, so bekomme ich beim Compilieren die Fehlermeldung:

Inkompatible Typen: 'TWinControl' und 'TJukeBox'

Hat jemand eine Idee wie man es schafft eine TMediaplayer-Komponente in eine Nicht-Sichtbare Komponente einbinden kann ??

Gruß,

Rainer
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Eigene Komponente die TMediaplayer beinhaltet

  Alt 1. Sep 2007, 11:01
Versuche Sie mal self.parent zuzuordnen.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Eigene Komponente die TMediaplayer beinhaltet

  Alt 1. Sep 2007, 13:32
TJukeBox von TWinControl ableiten oder eine Hilfsfenster als Parent des Mediaplayers erzeugen. Irgendwohin will der Mediaplayer seine ausgaben ja bringen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Ironarrow

Registriert seit: 23. Mär 2004
Ort: Kerpen
16 Beiträge
 
Delphi 7 Professional
 
#4

Re: Eigene Komponente die TMediaplayer beinhaltet

  Alt 1. Sep 2007, 13:49
Danke für die Infos. Werde es mal ausprobieren.

Sollte es nicht klappen werde ich wohl den Mediaplayer außen vor lassen und es selbst über mciSendCommand machen.

Wegen mir kann hier geschlossen werden.
  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 00:41 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