よろしくお願いします。
WindowsXP(Delphi 6 Personal)です。
TWindowsMediaPlayer のコンポーネントの取り込みを
ActiveX コントロールの「Windows Media Player (Version 1.0)」
で取り込みました。
formに貼り付けて
WindowsMediaPlayer1.Align:=alClient;でformいっぱいにしました。
再生は
WindowsMediaPlayer1.URL:=OpenDialog1.FileName;
で即再生が始まるのですが
動画部分がたぶん原画のサイズみたいで小さいのです。
WindowsMediaPlayer1の画面いっぱいのサイズで再生表示するには
プロパティを見てもそれらしき物がないので
教えて頂けませんか。お願いします。
WindowsMediaPlayer1.StretchToFit := True;
でよかったと思います。
DEKOさんありがとうございます。
早速
WindowsMediaPlayer1.StretchToFit := True;
を表示命令の前に記述するのですがStretchToFitが「未定義の識別子」になります。
なにか、uses節かに定義しなくてはいけませんか?
それとも記述場所が悪いのでしょうか。
よろしくお願いします。
あれ?TWindowsMediaPlayerのプロパティにStretchToFitがありませんか?
オブジェクトインスペクタでも設定できるプロパティなのですが?
uses節にはWMPLib_TLBがあればいいと思いますが...?
設計時にWindowsMediaPlayer1をダブルクリック。
出てきた設定ダイアログの「ウィンドウに合わせる(S)」をチェックすればOKと思います。
ドランさんの方法が確実なようですね。
念の為にDelphi6で新規にwmp.dllをからWMPLib_TLBを作ってみました。
これには確かにStretchToFitプロパティがありませんでした(Vista/WMP11)。
私の環境で過去に取り込んだタイプライブラリ(XP/WMP9)でインストールされた
TWindowsMediaPlayer(D5/D7)にはstretchToFitプロパティがあります。
# Web上にもstretchToFitを使ったソースコードが見受けられます。
ドランさん、DEKOさん設定ダイアログで設定出来ました。
本当にありがとうございました。
もちろんWebで探してStretchToFitの例は出てくるのですが私の場合は
うまくいきませんでした。(StretchToFitが未定義になる原因がわかりませんでした)
「ウィンドウに合わせる(S)」を
コードから実現できないでしょうか。
というのは、次のステップで、動的にTWindowsMediaPlayerを貼り付けて
再生したいのですが、まだ私のレベルでは無理でしょうか?
欲張りですがよろしかったらお願いします。
ありがとうございました。
自己レスで。
よく考えてみたら、マイクロソフトのコンポーネントですから
コードで変更できないですね。
やはりStretchToFitを解決しないとコードでコントロールするのは
無理かもしれません。これは今後の課題として勉強します。
あと、ツールボタンで「ウィンドウに合わせる(S)」にチェックできないか
挑戦してみたいと思います。
とにかく「出来るので」解決チェックを忘れました。
ありがとうございました。
真琴:「ねぇ、ハルコさん、プログラムで StretchToFitプロパティの設定できないの?」
春子:「設計時にダイアログで設定できるンだから、それでイイじゃない」
真琴:「でもぉ、それじゃ再生中に変更も出来ないし、動的にコンポ生成した場合もダメでしょ?」
春子:「どうしてもプログラムで設定したい? じゃぁ、問い合わせしなくちゃネ」
真琴:「えっ、問い合わせ? あっ、そういえば…さっき予約の問い合わせの電話があって…」
春子:「ホント? いつの予約?」
真琴:「クリスマスの予約…、でもウチの民宿、クリスマスでも何もしないでしょ?そう言ったら…」
春子:「ん?キャンセルされちゃた? う〜ん…、今年は盛大にやろうって思ってたのに」
真琴:「そうなの? 去年まで おじいちゃんは何もしなかったから、アタシ…、ハルコさん、ごめん」
春子:「あやまるコトないよ、マコトに言っておかなかったアタシの方が悪いンだから …で、さっきの続きだけど…」
真琴:「ハルコさん、"問い合わせ"するって言ったよね、ドコへ?」
春子:「インターフェースさんに"問い合わせ"をするの」
真琴:「そんなこと言われても、なにがなんだか分からないョ、ハルコさん」
春子:「これよ、マコト」
uses WMPLib_TLB;
var
ParentObj: TWinControl;
//WindowsMediaPlayer1: TWindowsMediaPlayer;
procedure TForm1.FormCreate(Sender: TObject);
var
iCore: IWMPCore;
iWmpD: IWMPPlayer4Disp;
begin
ParentObj := Self; // Panel1;
if not Assigned(WindowsMediaPlayer1) then begin
WindowsMediaPlayer1 := TWindowsMediaPlayer.Create(Self);
WindowsMediaPlayer1.Align := alClient;
WindowsMediaPlayer1.Parent := ParentObj;
end else begin
WindowsMediaPlayer1.Align := alClient;
end;
iCore := WindowsMediaPlayer1.ControlInterface;
if iCore <> nil then begin
iCore.QueryInterface(IWMPPlayer4Disp, iWmpD); // 問い合わせ
if iWmpD <> nil then begin
iWmpD.StretchToFit := True;
iWmpD.URL := 'http://hoge.hoge.com/ほにゃ.wmv';
// iWmpD.Controls.Play;
end;
end;
end;
真琴:「ふ〜ん、こういう問い合わせなのぉ…」
春子:「そうよ、マコト、ほかに何かご注文は?」
真琴:「音量の設定も出来る?、ハルコさん」
春子:「それもカンタン。パーセントで指定するの」
iWmpD.Settings.Volume := 100;
真琴:「じゃぁ、モードの選択は?」
春子:「'Full'とか'None'の選択なら…」
iWmpD.uiMode := 'None';
真琴:「すごいね、ハルコさん」
春子:「そう、営業のウデもスゴイのよぉ、マコト、今日もまた予約とっちゃった」
真琴:「やったね、ハルコさん、去年までは、この時期ぜんぜんお客さん来なかったのに」
春子:「マコト、これからは、アタシのこと ハルコ社長と呼んでくれる?」
真琴:「ハルコさん、あと、フォームのサイズ変更に合わせて再生画面のサイズも変えられたらいいね」
春子:「ん?…モチロン、それも出来るけど…」
真琴:「それも一行で出来ちゃうの?」
春子:「一行じゃムリよ、でも、そんなにムズカシクはないから、また今度教えてあげるョ」
真琴:「いまはダメ?」
春子:「忙しいの、今日は予約のお客様があるから買い出し行かなくちゃ。マコトは掃除お願いネ」
問い合わせさん、ご親切に、かつ詳細に教えて頂き誠にありがとうございました。
これでは、私がWebでたどり着けるはずもないですね。
D6 PersonalではWindowsのヘルプも表示しなくて途方に暮れていました。
C言語やJavaの例ではちんぷんかんぷんでした。
本当に助かりました。
お礼を申し上げます。
では。
ツイート | ![]() |