|  | 
 
 | 
| 
			 
			#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 разных панелях), всё проигрывается, но вот заставить при поставленной галочке зацикливать видео никак не получается, а если и выходит, то ошибки при доступе к памяти... |