AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi MediaPlayer, NoNotify anfangen
Thema durchsuchen
Ansicht
Themen-Optionen

MediaPlayer, NoNotify anfangen

Offene Frage von "marc.beeh"
Ein Thema von marc.beeh · begonnen am 15. Jul 2005 · letzter Beitrag vom 15. Jul 2005
Antwort Antwort
Benutzerbild von marc.beeh
marc.beeh

Registriert seit: 16. Dez 2003
Ort: Rodgau
47 Beiträge
 
Delphi 7 Enterprise
 
#1

MediaPlayer, NoNotify anfangen

  Alt 15. Jul 2005, 09:50
Hi,
bin gerade dabei einen Mediaplayer (mithilfe der Kompo TMediaPlayer) zu schrieben. Nun habe ich folgendes Problem:
Das Programm besitzt eine Playlist-Funktion (aufbauend auf ListBox). Mit OnNotify vom TMediaPlayer wird da nun der Index um eins erhöht und so eben die Playlist realisiert.
Mein Problem ist hierbei nun die Tatsache, dass auch die MediaPlayer-Button btNext und btPrev OnNotify auslösen. Wenn der User nun als auf diese Button klickt, um manuell in der Playlist weiterzuschalten (was beabsichtigt ist) wird NoNotify nun also auch aufgerufen. Das hat dann aber zur Folge, dass OnNotify immer wieder hintereinander aufgerufen wird, bis das Ende der Playlist erreicht ist.

Wie kann ich verhinern, dass dieses Event beim Klick auf die Button ausgelöst wird?
If there isn´t what you need, develop it...
(Und dazu brauche ich jetzt eure Hilfe! )
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#2

Re: MediaPlayer, NoNotify anfangen

  Alt 15. Jul 2005, 10:34
hi,

du könntest eine globale variable definieren. etwa so:
var NoNotify: boolean; den klick auf die buttons btNext und btPrev kannst du bestimmt abfangen, und darin schreiben:
NoNotify := true; und im notify-event kannst du folgendes schreiben:
Delphi-Quellcode:
if NoNotify = true then
begin
  NoNotify := false;
  exit;
end;
// nächster Track aus der Abspielliste abspielen
//...
gruss
urbanbruhin
  Mit Zitat antworten Zitat
Benutzerbild von marc.beeh
marc.beeh

Registriert seit: 16. Dez 2003
Ort: Rodgau
47 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: MediaPlayer, NoNotify anfangen

  Alt 15. Jul 2005, 11:07
Hi,
ich habs gerade mal ausprobiert. Wenn man auf den Button klickt wird jetzt zwar zuerst die Prozedur wie gewünscht abgebrochen; aus unerfindlichen Gründen wird dannach aber gleich wieder OnNotify ausgelöst (und dann ist die Variable natürlich wieder false)
If there isn´t what you need, develop it...
(Und dazu brauche ich jetzt eure Hilfe! )
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#4

Re: MediaPlayer, NoNotify anfangen

  Alt 15. Jul 2005, 11:29
poste mal ein bisschen code, damit ich mal nach dem fehler suchen kann. einfach so die wichtigsten proceduren.
  Mit Zitat antworten Zitat
Benutzerbild von marc.beeh
marc.beeh

Registriert seit: 16. Dez 2003
Ort: Rodgau
47 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: MediaPlayer, NoNotify anfangen

  Alt 15. Jul 2005, 12:35
Ok, ist leider im Moment alle nocht nicht so elegant umgesetzt...

Delphi-Quellcode:
procedure TForm1.Spiel(dname: string); //Spielt Datei "dname" ab
begin
with MediaPlayer1 do
  begin
  If Mode = mpOpen then close;
  FileName := dname;
  if CheckBox1.Checked then Display:=Panel1
   else Display := nil;
  DisplayRect:=Panel1.ClientRect;
  Open;
  Play;
  playing := true;
end;
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject); //Dateiauswahl
begin
if opendialog1.Execute then
 if (ExtractFileExt(Opendialog1.FileName) = '.m3u') then
 begin
 ListBox1.Items.LoadFromFile(Opendialog1.FileName);
 ListBox1.Visible := true;
 ShellTreeView1.Visible := false;
 ListBox1.ItemIndex := 0;
 spiel(listbox1.Items.Strings[listbox1.ItemIndex]);
 MediaPlayer1.Notify := true;
 playlist := true;
 end
 else Spiel(Opendialog1.FileName);
end;
Delphi-Quellcode:
Procedure TForm1.MediaPlayer1Notify(Sender: TObject);
var
a: integer;
begin
if NoNotify then
  begin
  NoNotify := false;
  exit;
  end
  else
  with listbox1 do
  if (ItemIndex <= Count) and playlist then
    begin
    a := ItemIndex;
    itemindex := a + 1;
    Spiel(Items.Strings[ItemIndex]);
    MediaPlayer1.Notify := true;
    end;
end;

Delphi-Quellcode:
procedure TForm1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
  var DoDefault: Boolean); //Abfrage der Button
var
a: integer;
begin
if (button = MPlayer.btNext) and playlist then
  with listbox1 do
    begin
    NoNotify := true;
    a := ItemIndex;
    itemindex := a + 1;
    Spiel(Items.Strings[ItemIndex]);
    NoNotify := true;
    end;

if (button = MPlayer.btPrev) and playlist then
  with listbox1 do
    begin
    NoNotify := true;
    a := ItemIndex;
    itemindex := a - 1;
    Spiel(Items.Strings[ItemIndex]);
    NoNotify := true;
    end;
end;
If there isn´t what you need, develop it...
(Und dazu brauche ich jetzt eure Hilfe! )
  Mit Zitat antworten Zitat
100nF

Registriert seit: 7. Nov 2004
639 Beiträge
 
#6

Re: MediaPlayer, NoNotify anfangen

  Alt 15. Jul 2005, 13:14
ich hab den fehler leider noch nicht gefunde, aber ich hab da noch eine kleine frage:
was bedeutet MediaPlayer1.Notify := true; ??

überprüf doch mal, wie viel mal die procedure MediaPlayer1Notify aufgerufen wird, nach dem klicken auf btnext oder btprev. aber schau dabei, dass die listbox mindestens etwa 5 einträge hat.

ach ja, hab noch einen anderen fehler gefunden.
bei itemindex := a + 1; und itemindex := a - 1; solltest du zuerst prüfen, ob nicht schon der erste oder letzte track läuft, sonst gibts einen fehler...
  Mit Zitat antworten Zitat
Benutzerbild von marc.beeh
marc.beeh

Registriert seit: 16. Dez 2003
Ort: Rodgau
47 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: MediaPlayer, NoNotify anfangen

  Alt 15. Jul 2005, 13:45
Zitat:
ich hab den fehler leider noch nicht gefunde, aber ich hab da noch eine kleine frage:
was bedeutet
Code:
MediaPlayer1.Notify := true;
IMHO wird nur ein Notify-Event ausgelöst, wenn Notify auf true steht.

Zitat:
überprüf doch mal, wie viel mal die procedure MediaPlayer1Notify aufgerufen wird, nach dem klicken auf btnext oder btprev. aber schau dabei, dass die listbox mindestens etwa 5 einträge hat.
Sie wird ständig wieder aufgerufen; Irgendwann hängt sich das Programm dann auf.

Zitat:
ach ja, hab noch einen anderen fehler gefunden.
Stimmt, danke. Ist noch eine sehr frühe Version....
If there isn´t what you need, develop it...
(Und dazu brauche ich jetzt eure Hilfe! )
  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 01:48 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