![]() |
Ungültige Typumwandlung!!
Delphi-Quellcode:
procedure popupmenu_language(DVD: TMSWebDVD; PopUpMenu: TPopupMenu; Owner: TForm);
//fügt alle verfügbaren AudioStreams in ein PopUpMenu ein und ruft dieses auf var I: Integer; Items: Array[0..50] Of TMenuItem; CurPoint: Tpoint; begin PopUpMenu.Items.Clear; for I:=0 to DVD.AudioStreamsAvailable-1 do begin if DVD.IsAudioStreamEnabled(I) then begin Items[I] := TMenuItem.Create(Owner); Items[I].Caption := DVD.GetAudioLanguage(I,true); if DVD.CurrentAudioStream = I then Items[I].Checked := True; Items[I].OnClick := TNotifyEvent(DVD.CurrentAudioStream := I); PopUpMenu.Items.Add(Items[I]); end; end; GetCursorPos(CurPoint); PopUpMenu.Popup(CurPoint.x,CurPoint.y); end; Schreibe gerade eine Unit die auf MSWEBDVD.dll aufsetzt und nun will ich alle AudioStreams dynamisch in ein PopUpMenu einfügen das funktioniert auch schon nur habe ich das Problem nun wie ich den einzelnen Einträge vermittle was Sie OnClick zu tun haben! Bekommen die Fehlermedlung "Ungültige Typumwandlung" bei TNotifyEvent(DVD.CurrentAudioStream := I)! Bitte um Hilfe Danke! |
Re: Ungültige Typumwandlung!!
Guck doch einfach mal in der Hilfe, wie
![]() |
Re: Ungültige Typumwandlung!!
Hab in der Hilfe nachgesehen werd aber daraus nicht schlau!
Is mein Lösungsansatz prizipiell richitg oder eher nicht??? WEnn nicht wie sollte man es sonst machen |
Re: Ungültige Typumwandlung!!
für das OnClick event musst du ne methode definieren...
Delphi-Quellcode:
procedure TDeineKlasse.DoClickStream(Sender: TObject);
begin case TMenuItem(Sender).Tag of 0: ; 1: ; end; end; ... Items[I].Tag := I; Items[I].OnClick := DoClickStream; ... |
Re: Ungültige Typumwandlung!!
Ahh wie kann man nur so einen Knopf im HIrn haben??
Delphi-Quellcode:
Wo muss ich was am besten einbauen damits funzt!
unit uMSWEBDVD;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, MSWEBDVDLib_TLB, Menus; procedure play_pause(DVD: TMSWebDVD; Path: String); procedure play_next(DVD: TMSWebDVD); procedure play_prev(DVD: TMSWebDVD); procedure fastforward(DVD: TMSWebDVD); procedure rewind(DVD: TMSWebDVD); procedure stop_eject(DVD: TMSWebDVD); procedure file_stop_eject(DVD: TMSWebDVD; ODLG: TOpenDialog); function current_position(DVD: TMSWebDVD): String; function current_chapter(DVD: TMSWebDVD): String; function current_title(DVD: TMSWebDVD): String; procedure popupmenu_language(DVD: TMSWebDVD; PopUpMenu: TPopupMenu; Owner: TForm); procedure popupmenu_subtitle(DVD: TMSWebDVD; PopUpMenu: TPopupMenu; Owner: TForm); var FastPlay :Boolean; implementation procedure play_pause(DVD: TMSWebDVD; Path: String); begin //bei Status "Stop" zuerst aktuellen DVD-Pfad checken und einlesen if DVD.PlayState <= 0 then DVD.DVDDirectory := Path; //DVD abspielen bzw. pausieren if (DVD.PlayState = 2) and (FastPlay = false) then DVD.Pause else DVD.Play; //DVD Abspielgeschwindigkeit zurücksetzten if (DVD.PlayState = 2) and (FastPlay = true) then DVD.Play; FastPlay := False; end; procedure play_next(DVD: TMSWebDVD); begin //nur möglich bei ungleich Status "Stop" if DVD.PlayState > 0 then try DVD.PlayNextChapter; except end; end; procedure play_prev(DVD: TMSWebDVD); begin //nur möglich bei ungleich Status "Stop" if DVD.PlayState > 0 then try DVD.PlayPrevChapter; except end; end; procedure fastforward(DVD: TMSWebDVD); begin //nur möglich bei ungleich Status "Stop" if DVD.PlayState > 0 then try FastPlay := true; DVD.PlayForwards(3.00,false); except end; end; procedure rewind(DVD: TMSWebDVD); begin //nur möglich bei ungleich Status "Stop" if DVD.PlayState > 0 then try FastPlay := true; DVD.PlayBackwards(3.00,false); except end; end; procedure stop_eject(DVD: TMSWebDVD); begin //wenn Satus "Play" oder "Pause" dann stop ansonsten eject if DVD.PlayState <= 0 then DVD.Eject else DVD.Stop; end; procedure file_stop_eject(DVD: TMSWebDVD; ODLG: TOpenDialog); begin //wenn Satus "Play" oder "Pause" dann stop ansonsten eject if DVD.PlayState <= 0 then ODLG.Execute else begin DVD.Stop; end; end; function current_position(DVD: TMSWebDVD): String; //gibt aktuelle Playback-Position im Format 00:00:00 zurück var Position: String; begin Position := DVD.CurrentTime; SetLength(Position,8); result := Position; end; function current_chapter(DVD: TMSWebDVD): String; //gibt aktuelles Kapitel im Format 00 zurück var Chapter: String; begin if DVD.CurrentChapter < 10 then Chapter := '0' + IntToStr(DVD.CurrentChapter) else Chapter := IntToStr(DVD.CurrentChapter); result := Chapter; end; function current_title(DVD: TMSWebDVD): String; //gibt aktuelles Titel im Format 00 zurück var Title: String; begin if DVD.CurrentTitle < 10 then Title := '0' + IntToStr(DVD.CurrentTitle) else Title := IntToStr(DVD.CurrentTitle); result := Title; end; procedure popupmenu_language(DVD: TMSWebDVD; PopUpMenu: TPopupMenu; Owner: TForm); //fügt alle verfügbaren AudioStreams in ein PopUpMenu ein und ruft dieses auf var I: Integer; Items: Array[0..50] Of TMenuItem; CurPoint: Tpoint; begin PopUpMenu.Items.Clear; for I:=0 to DVD.AudioStreamsAvailable-1 do begin if DVD.IsAudioStreamEnabled(I) then begin Items[I] := TMenuItem.Create(Owner); Items[I].Caption := DVD.GetAudioLanguage(I,true); if DVD.CurrentAudioStream = I then Items[I].Checked := True; //Items[I].OnClick := ; PopUpMenu.Items.Add(Items[I]); end; end; GetCursorPos(CurPoint); PopUpMenu.Popup(CurPoint.x,CurPoint.y); end; procedure popupmenu_subtitle(DVD: TMSWebDVD; PopUpMenu: TPopupMenu; Owner: TForm); //fügt alle verfügbaren Subtitles in ein PopUpMenu ein und ruft dieses auf var I: Integer; Items: Array[0..50] Of TMenuItem; CurPoint: Tpoint; begin PopUpMenu.Items.Clear; if DVD.SubpictureStreamsAvailable > 0 then begin Items[50] := TMenuItem.Create(Owner); Items[50].Caption := 'Show Subtitles'; if DVD.SubpictureOn = True then Items[50].Checked := True; PopUpMenu.Items.Add(Items[50]); PopUpMenu.Items.InsertNewLineAfter(Items[50]); end; for I:=0 to DVD.SubpictureStreamsAvailable-1 do begin if DVD.IsSubpictureStreamEnabled(I) then begin Items[I] := TMenuItem.Create(Owner); Items[I].Caption := DVD.GetSubpictureLanguage(I); if DVD.CurrentSubpictureStream = I then Items[I].Checked := True; //Items[I].OnClick := ; PopUpMenu.Items.Add(Items[I]); end; end; GetCursorPos(CurPoint); PopUpMenu.Popup(CurPoint.x,CurPoint.y); end; end. Theoretisch brauch ich eine Subtitle_Click und eine Langauge_Click funktion aber wo einbauen?? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 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