|
#1
|
|||
|
|||
WMP в Delphi
Не могу разобраться с программой! Вроде бы все компиляцию проходит, НО видеофайл не проигрывается. Хочу чтобы проигрывание зависело от текста вводимого в edit! Вот мой код!
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, WMPLib_TLB, ExtCtrls, ComCtrls, ACTIVELISTENPROJECTLib_TLB; type TForm1 = class(TForm) WindowsMediaPlayer1: TWindowsMediaPlayer; Button1: TButton; Timer1: TTimer; Edit1: TEdit; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Edit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Edit1Change(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin WindowsMediaPlayer1.URL:='E:\777.avi'; WindowsMediaPlayer1.Controls.currentPosition:=0; WindowsMediaPlayer1.Controls.play; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if (WindowsMediaPlayer1.Controls.currentPosition = 7) then WindowsMediaPlayer1.Controls.currentPosition := 0; WindowsMediaPlayer1.Controls.play; end; procedure TForm1.Button4Click(Sender: TObject); begin if Edit1.Text='Цель' then begin WindowsMediaPlayer1.Controls.currentPosition:=0; WindowsMediaPlayer1.Controls.play; WindowsMediaPlayer1.URL:='E:\777' end else WindowsMediaPlayer1.URL:='E:\999.avi' end; procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Edit1.Clear(); end; procedure TForm1.Edit1Change(Sender: TObject); begin if Edit1.text<>' ' then Button4.Enabled:=true else Button1.Enabled:=false; end; end. Последний раз редактировалось Admin, 17.01.2014 в 19:59. |
#2
|
||||
|
||||
Открывать файл с диска в WindowsMediaPlayer1 нужно так:
WindowsMediaPlayer1.DefaultInterface.URL:='E:\777. avi'; WindowsMediaPlayer1.controls.play; |
#3
|
|||
|
|||
Не помогло! Результат такой же!
|
#4
|
||||
|
||||
Проверь свой код, у меня все работает.
Где именно не работает, если на кнопке Button4, то у тебя там ошибки: пропущено расширение файла в строке 'E:\777' (должно быть 'E:\777.avi') и в else добавь WindowsMediaPlayer1.Controls.play; и все должно работать. |
#5
|
|||
|
|||
Убрал вообще все что связано с edit и точно - проблема в button4. До этого все работало. Что здесь может быть не так(((( не пойму
Код:
procedure TForm1.Timer1Timer(Sender: TObject); begin if (WindowsMediaPlayer1.Controls.currentPosition = 7) then WindowsMediaPlayer1.Controls.currentPosition := 0; WindowsMediaPlayer1.Controls.play; end; procedure TForm1.Button4Click(Sender: TObject); begin WindowsMediaPlayer1.Controls.play; WindowsMediaPlayer1.URL:='E:\777.avi' end; end. Последний раз редактировалось M.A.D.M.A.N., 19.01.2014 в 17:54. |
#6
|
||||
|
||||
Убери Timer и отслеживай изменение позиции плеера, через событие OnPositionChange (WindowsMediaPlayer1)
Вот код: Код:
procedure TForm1.WindowsMediaPlayer1PositionChange(ASender: TObject; oldPosition, newPosition: Double); begin if (newPosition = 7) then begin WindowsMediaPlayer1.controls.currentPosition := 0; WindowsMediaPlayer1.Controls.play; end; end; |
#7
|
||||
|
||||
Cобытие OnPositionChange наступает только если пользователь сам (кликом по контролам управления) меняет позицию.
Скорее всего это тебе неподойдет, вообще currentPosition у WindowsMediaPlayer1 типа Double(Тип с плавающей запятой, поддерживающий приблизительно 15 цифр точности) а это значит что ты никогда не получишь currentPosition = 7 от этого у тебя и все проблемы, мой вариант (рабочий проверял) в Timer'е прописать следующий код (Timer1.Interval:=10): Код:
Label1.Caption:=FormatFloat('#',WindowsMediaPlayer1.controls.currentPosition);//выводим Double без цифр после запятой и переводим в string if Label1.Caption = '7' then //проверяем значение(теперь string'овое) WindowsMediaPlayer1.controls.currentPosition:=0;//установливаем в начало |
#8
|
|||
|
|||
Проект вышел, но переход от файла к файлу долгий! Нужно чтобы не заметно было! Объединил 2 видео и написал код. Не выходит(
|
#9
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#10
|
|||
|
|||
А можешь посоветовать чем воспользоваться? Просто я уже зе*ался с этой библиотекой , в проекте есть 4 плей листа куда добавляются видео записи с опр разрешением(воспроизводиться на 4 разных панелях), всё проигрывается, но вот заставить при поставленной галочке зацикливать видео никак не получается, а если и выходит, то ошибки при доступе к памяти...
|
#11
|
||||
|
||||
Посмотрите вот такой "сырой" пример, правда он на обычном МР завязан, но может поможет
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |