Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 907

/ вопрос открыт /

Приветствую, уважаемые эксперты! нужно чтобы при запуске программы выходило 2 формы, форма1 и форма2! форма2 на первом плане! на форме2 воспроизводится ролик, после его окончания форма2 закрывается! на экране остается только форма1! в чем проблема: в том что при закрыти формы2 выходит ошибка!

Приложение:
  1.  
  2.  
  3. unit Unit1;
  4.  
  5. interface
  6.  
  7. uses
  8. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  9. Dialogs;
  10.  
  11. type
  12. TForm1 = class(TForm)
  13. procedure FormActivate(Sender: TObject);
  14. private
  15. { Private declarations }
  16. public
  17. { Public declarations }
  18. end;
  19.  
  20. var
  21. Form1: TForm1;
  22.  
  23. implementation
  24.  
  25. uses Unit2;
  26.  
  27. {$R *.dfm}
  28.  
  29. procedure TForm1.FormActivate(Sender: TObject);
  30. begin
  31. Form2.visible:=true;
  32.  
  33. end;
  34.  
  35. end.
  36.  
  37.  
  38. unit Unit2;
  39.  
  40. interface
  41.  
  42. uses
  43. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  44. Dialogs, ExtCtrls, MPlayer;
  45.  
  46. type
  47. TForm2 = class(TForm)
  48. MediaPlayer1: TMediaPlayer;
  49. Panel1: TPanel;
  50. procedure MediaPlayer1Notify(Sender: TObject);
  51. procedure FormActivate(Sender: TObject);
  52.  
  53. private
  54. { Private declarations }
  55. public
  56. { Public declarations }
  57. end;
  58.  
  59. var
  60. Form2: TForm2;
  61.  
  62. implementation
  63.  
  64. {$R *.dfm}
  65.  
  66. procedure TForm2.MediaPlayer1Notify(Sender: TObject);
  67. begin
  68. MediaPlayer1.Notify:=true;
  69. form2.close
  70. end;
  71.  
  72. procedure TForm2.FormActivate(Sender: TObject);
  73. begin
  74. MediaPlayer1.Play;
  75.  
  76. end;
  77.  
  78.  
  79.  
  80. 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!

Приложение:
  1. //========UNIT 1========
  2. unit Unit1;
  3.  
  4. interface
  5.  
  6. uses
  7. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  8. Dialogs, unit2;
  9.  
  10. type
  11. TForm1 = class(TForm)
  12. procedure FormShow(Sender: TObject);
  13. private
  14. { Private declarations }
  15. public
  16. { Public declarations }
  17. end;
  18.  
  19. var
  20. Form1: TForm1;
  21.  
  22. implementation
  23.  
  24. {$R *.dfm}
  25.  
  26. procedure TForm1.FormShow(Sender: TObject);
  27. begin
  28. Form2.ShowModal;
  29. end;
  30.  
  31. end.
  32.  
  33.  
  34. //========UNIT 2========
  35. unit Unit2;
  36.  
  37. interface
  38.  
  39. uses
  40. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  41. Dialogs, MPlayer, ExtCtrls, StdCtrls, ComCtrls;
  42.  
  43. type
  44. TForm2 = class(TForm)
  45. Panel1: TPanel;
  46. MediaPlayer1: TMediaPlayer;
  47. Timer1: TTimer;
  48. procedure FormShow(Sender: TObject);
  49. procedure Timer1Timer(Sender: TObject);
  50. private
  51. { Private declarations }
  52. public
  53. { Public declarations }
  54. end;
  55.  
  56. var
  57. Form2: TForm2;
  58.  
  59. implementation
  60.  
  61. {$R *.dfm}
  62.  
  63. procedure TForm2.FormShow(Sender: TObject);
  64. begin
  65. MediaPlayer1.Play;
  66. end;
  67.  
  68. procedure TForm2.Timer1Timer(Sender: TObject);
  69. begin
  70. if MediaPlayer1.Position >= MediaPlayer1.Length then
  71. begin
  72. Timer1.Enabled:=False;
  73. MediaPlayer1.Stop;
  74. Form2.Close;
  75. end;
  76. end;
  77.  
  78. end.
  79.  
  80.  


Ответ отправил: Николай Рубан (статус: 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]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 26 апреля 2026, 02:59
Выполнено за 0.03 сек.