Je voulais coder un WindowsMediaplayer (ActiveX) redimensionnable sans les contrôles de lecture. il devrait convenir aux TPanels.Redimensionner MediaPlayer sans contrôles de bouton de lecture
1
A
Répondre
3
je devais travailler ceci il y a un certain temps, et après beaucoup de googler je trouve que cela fonctionne
Mettez un objet WindowsMedaiPlayer sur le panneau, et en réglant son alignement à alClient,
la zone de contrôle du lecteur peut être masquée avec uiMode := 'none'
, situé dans le ide ou un code
attribuant ensuite les panneaux redimensionner événement avec
uses Ole2;
procedure TForm1.Panel1Resize(Sender: TObject);
const
IID_IOleInPlaceObject: SYSTEM.TGUID = '{00000113-0000-0000-C000-000000000046}';
var
IOIPObj: IOleInPlaceObject;
begin
SYSTEM.IDispatch(WindowsMediaPlayer1.OleObject).QueryInterface(IID_IOleInPlaceObject, IOIPObj);
IOIPObj.SetObjectRects(Panel1.ClientRect, Panel1.ClientRect);
end;
procedure TForm1.Play;
begin
WindowsMediaPlayer1.uiMode := 'none'; //show no interface, this can be set from the ide
WindowsMediaPlayer1.URL := 'movie.mpg';
WindowsMediaPlayer1.stretchToFit := True;
WindowsMediaPlayer1.Controls.play;
end;
Adapté de http://our.obor.us/node/1999
Ole2 est pour IOleInPlaceObject, j'ai dû ajouter $(Delphi)\source\rtl\Win
au chemin de la bibliothèque pour Delphi pour le trouver.
(delphi 7, wmp 11)
supplémentaire: Quelque chose un peu plus facile à utiliser
uses Ole2;
procedure SmoothResizeMediaPlayer(aMediaPlayer: TWindowsMediaPlayer; PosRect,ClipRect:Trect);
const
IID_IOleInPlaceObject: SYSTEM.TGUID = '{00000113-0000-0000-C000-000000000046}';
var
IOIPObj: IOleInPlaceObject;
begin
SYSTEM.IDispatch(aMediaPlayer.OleObject).QueryInterface(IID_IOleInPlaceObject, IOIPObj);
IOIPObj.SetObjectRects(PosRect, ClipRect);
end;
et appelé avec
SmoothResizeMediaPlayer(WindowsMediaPlayer1, panel1.ClientRect, panel1.ClientRect);