[Delphi] OLE-container resizen naar het OLE-object

Pagina: 1
Acties:

  • D-Raven
  • Registratie: November 2001
  • Laatst online: 16-10-2025
Ik ben bezig met het TMediacomponent van delphi.
Hiermee speel ik filmpjes af. (duh) :P
Nu gebruik ik een Ole Container als display device voor het weergeven van de media.
Dit werkt allemaal wel dat is het punt niet.

Wat ik wil bereiken is dat de OleContainer gecentreerd wordt op het form en dat de OLE-Container geresized wordt naar de grootte van het OLE-object wat binnen de container wordt afgespeeld.

Nu dacht ik dat ik daarvoor de SizeMode property van een OLE-container kan gebruiken door de value daarvan op smAutoSize te zetten.

De beschrijving van smAutoSize is als volgt:

Displays the OLE object at its normal size and automatically resizes the container to fit the size of the OLE object.

Behoorlijk duidelijk lijkt me. Probleem is alleen dat dit dus niet werkt. De OLE-container wordt niet geresized naar de grootte van het OLE-object. Ik heb in de documentatie gezocht naar informatie hierover maar heb verders er niks meer over kunnen vinden.

Implementaties van google maakten ook allemaal gebruik van de SizeMode property. Ik snap dus niet waarom deze property schijnbaar zijn werk niet doet.

De code die ik gebruik is als volgt:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (Player.MediaPlayerPlaying = False) then
 with playerFrm do
  begin
   WindowState := wsMaximized;
   MediaPlayer.Hide;
   Show;
   Opendialog.execute;
   MediaPlayer.FileName:=Player.Opendialog.Filename;
   MediaPlayer.Open;
   MediaPlayer.Play;
   MediaPlayerPlaying:=True;
   //centreer OleContainer
   OleContainer.Left := (Width - OleContainer1.Width) div 2;
   OleContainer.Top := (Height - OleContainer1.Height) div 2;
  end;
end;

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Waarom gebruik je niet een panel om het filmpje in weer te geven? Een OLE Container is voor hele andere dingen.

We adore chaos because we like to restore order - M.C. Escher


  • D-Raven
  • Registratie: November 2001
  • Laatst online: 16-10-2025
Ik had op bepaalde delphi sites gekeken en daar werd verteld dat je het beste een OLE Container hiervoor kunt gebruiken. De preciese reden waarom is mij ontgaan.

Maar ik zal het ook eens met een normale panel proberen. Maar ik weet zo niet of ik dan het object wat wordt afgespeeld op de panel kan centreren, maar dat zoek ik dan wel even uit.

Ik zal t eens proberen en kijken of het verschil maakt

Edit: Met ene panel heb ik dus helemaal geen controle over het object wat wordt afgespeeld binnen de panel.

[ Voor 13% gewijzigd door D-Raven op 10-11-2005 16:24 ]