|
Вопрос # 1 907/ вопрос открыт / |
|
Приветствую, уважаемые эксперты! нужно чтобы при запуске программы выходило 2 формы, форма1 и форма2! форма2 на первом плане! на форме2 воспроизводится ролик, после его окончания форма2 закрывается! на экране остается только форма1! в чем проблема: в том что при закрыти формы2 выходит ошибка!
Приложение: Переключить в обычный режим-
-
- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs;
-
- type
- TForm1 = class(TForm)
- procedure FormActivate(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- uses Unit2;
-
- {$R *.dfm}
-
- procedure TForm1.FormActivate(Sender: TObject);
- begin
- Form2.visible:=true;
-
- end;
-
- end.
-
-
- unit Unit2;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, ExtCtrls, MPlayer;
-
- type
- TForm2 = class(TForm)
- MediaPlayer1: TMediaPlayer;
- Panel1: TPanel;
- procedure MediaPlayer1Notify(Sender: TObject);
- procedure FormActivate(Sender: TObject);
-
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form2: TForm2;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm2.MediaPlayer1Notify(Sender: TObject);
- begin
- MediaPlayer1.Notify:=true;
- form2.close
- end;
-
- procedure TForm2.FormActivate(Sender: TObject);
- begin
- MediaPlayer1.Play;
-
- end;
-
-
-
- end.
 |
Вопрос задал: Ученый (статус: 8-ой класс)
Вопрос отправлен: 16 сентября 2008, 18:18
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Николай Рубан
Здравствуйте, Ученый!
В первой форме нужно создать обработчик FormShow:
procedure TForm1.FormShow(Sender: TObject);
begin
Form2.ShowModal;
end;
Также не забудьте описать второй модуль в первом:
uses
..., unit2;
Что касается второй формы, то необходимо на ней также расположить и таймер, его свойство Timer1.Enabled установить равное True.
И создать такие обработчики:
procedure TForm2.FormShow(Sender: TObject);
begin
MediaPlayer1.Play; //начинаем проигрывать файл
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
if MediaPlayer1.Position >= MediaPlayer1.Length then //если видео файл закончился, то закрываем форму
begin
Timer1.Enabled:=False; //выключаем таймер
MediaPlayer1.Stop;
Form2.Close;
end;
end;
Полные тексты модулей в приложении
Good Luck!
Приложение: Переключить в обычный режим- //========UNIT 1========
- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, unit2;
-
- type
- TForm1 = class(TForm)
- procedure FormShow(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm1.FormShow(Sender: TObject);
- begin
- Form2.ShowModal;
- end;
-
- end.
-
-
- //========UNIT 2========
- unit Unit2;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, MPlayer, ExtCtrls, StdCtrls, ComCtrls;
-
- type
- TForm2 = class(TForm)
- Panel1: TPanel;
- MediaPlayer1: TMediaPlayer;
- Timer1: TTimer;
- procedure FormShow(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form2: TForm2;
-
- implementation
-
- {$R *.dfm}
-
- procedure TForm2.FormShow(Sender: TObject);
- begin
- MediaPlayer1.Play;
- end;
-
- procedure TForm2.Timer1Timer(Sender: TObject);
- begin
- if MediaPlayer1.Position >= MediaPlayer1.Length then
- begin
- Timer1.Enabled:=False;
- MediaPlayer1.Stop;
- Form2.Close;
- end;
- end;
-
- end.
-
-
 |
Ответ отправил: Николай Рубан (статус: 10-ый класс)
Время отправки: 16 сентября 2008, 19:43
Оценка за ответ: 5
Комментарий к оценке: спасибо
|
Мини-форум вопроса
Всего сообщений: 26; последнее сообщение — 16 сентября 2008, 19:55; участников в обсуждении: 4.
Страницы: [« Предыдущая] [1] [2]
|
Мережников Андрей (статус: Абитуриент), 16 сентября 2008, 19:30 [#21]:
Последний вопрос про то, что где писать кому?
|
|
Ученый (статус: 8-ой класс), 16 сентября 2008, 19:32 [#22]:
я про form2.show
|
|
Мережников Андрей (статус: Абитуриент), 16 сентября 2008, 19:39 [#23]:
Напишите так: в обработчике события OnShow первой формы пишите:
form2.showmodal тогда первая форма станент видна только после закрытия второй
|
|
Ученый (статус: 8-ой класс), 16 сентября 2008, 19:42 [#24]:
Спасибо!
|
|
Мережников Андрей (статус: Абитуриент), 16 сентября 2008, 19:48 [#25]:
to Николай Рубан
Зачем сложности с таймером на второй форме, если у компонента MediaPlayer предусмотрен обработчик событий, в том числе и окончания проигрывания?
|
|
Николай Рубан (статус: 10-ый класс), 16 сентября 2008, 19:55 [#26]:
Первое что придумал...
|
Страницы: [« Предыдущая] [1] [2]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|