Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
 Аватар для Сергей Игнатьев
222 / 57 / 18
Регистрация: 13.03.2017
Сообщений: 295

Как закрыть форму и работу программы после отработки видео ?

31.08.2020, 12:23. Показов 648. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Для использования видео в основной своей программе использовал разработанную volvo программу. Программа отлично работает, главное, что можно заранее устанавливать требуемые размеры окна.
Но не получается закрыть форму и грамотно остановить работу видео плейера и всей программы после завершения ролика.
Помогите сделать выход.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
{$reference 'System.Windows.Forms.dll'}
{$reference 'PresentationCore.dll'}
{$reference 'PresentationFramework.dll'}
{$reference 'WindowsFormsIntegration.dll'}
{$reference 'System.Drawing.dll'}
{$reference WindowsBase.dll}
 
uses
  System.Threading, 
  System.Windows, 
  System.Drawing, 
  System.Windows.Media,
  System.Windows.Forms,
  System.Windows.Forms.Integration,
  System.Windows.Controls;
 
procedure main;
begin
  var myForm := new Form;  
  var myGrid := new Grid;    
  var mp := new MediaPlayer;
  mp.Open(new System.Uri('C:\Video\Фильм.mp4'));
  var vd := new VideoDrawing;
  vd.Player := mp;
  vd.Rect := new Rect(0, 0, myForm.Width, myForm.Height);
  var db := new DrawingBrush(vd);
  var host := new ElementHost;
  host.Child := myGrid;
  host.Dock := DockStyle.Fill;
  myGrid.Background := db;
  myForm.Controls.Add(host);
  myForm.Width:=1920; //Задаем размеры окна
  myForm.Height:=1080;
  mp.play;
  Application.Run(myForm);
end;
 
begin
  var Thread1 := new Thread(main);
  Thread1.SetApartmentState(ApartmentState.STA);
  Thread1.Start(); 
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.08.2020, 12:23
Ответы с готовыми решениями:

Закрыть форму после выполнения программы
Здравствуйте. В моем решении(solution) учавствуют несколько проектов(projects). 2 формы.То есть 2 исполняемых файла. Через 1 форму...

Как закрыть форму после исполнения
Всем добрый вечер. ситуация такая: есть объект, нажимаеш выплывает форма. вводиш данные. жмеш отправить. выводится отчет о том, что...

Как закрыть форму после открытия другой?
Добрый день. После проверки условия и если оно верно - закрыть форму и открыть вторую. Почему мой код скрывают всю программу? ...

6
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
31.08.2020, 19:12
Сейчас бы использовать wf и wpf в одной программе. Хотя это не основная проблема этого кода...

Вот как делают нормальные люди:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{$reference PresentationCore.dll}
{$reference PresentationFramework.dll}
 
// И никаких запусков ещё 1 потока из основного, с STA
// Эта строчка делает основной STA. Ну и убирает консоль при запуске из вне IDE
{$apptype windows}
 
uses System.Windows;
uses System.Windows.Controls;
 
begin
  var MainWindow := new Window;
  
  var me := new MediaElement;
  me.Source := new System.Uri('C:\0.mp4');
  MainWindow.Content := me;
  
  Halt(Application.Create.Run(MainWindow));
end.
Насчёт темы поста - учитесь пользоваться ивентами. То что вы хотите делается 1 строчкой:
Pascal
1
  me.MediaEnded += (o,e)->MainWindow.Close();
1
 Аватар для Сергей Игнатьев
222 / 57 / 18
Регистрация: 13.03.2017
Сообщений: 295
01.09.2020, 08:37  [ТС]
Sun Serega,
Спасибо, все отлично работает, форма после окончания ролика закрывается.
Но теперь у меня не получается отцентрировать MainWindow и сделать размеры
максимальными. Видимо я совсем перестал соображать, помогите пенсионеру.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
01.09.2020, 09:38
Я могу дать готовый ответ, но будет лучше если вы нажмёте точку после MainWindow и прочитаете описания в выпадающем списке. Это может занять 10-20 минут, но зато вы узнаете кучу нового и интересного, кроме того что вам собственно надо.

Главное - пройдитесь именно по всему, а не до первого что выглядит как то что надо. Там несколько вариантов. Большинство костыли, один нормальный.
1
 Аватар для Сергей Игнатьев
222 / 57 / 18
Регистрация: 13.03.2017
Сообщений: 295
01.09.2020, 10:56  [ТС]
Sun Serega,
Именно этим я и занимаюсь последние 3 часа. Ставлю точку после MainWindow.
Установил требуемый размер окна, но в идеале мне нужен максимальный.
Центровку окна тоже не вижу, наверное зрение ослабло или соображаю плохо.
Всю осень и весну решал внуку-студенту задачки по С++. Потерял навыки.
Хотя Паскаль мне больше нравится. Особенно моделирование в 3D.
Я не так часто задаю вопросы, а тут зашел в тупик. Помогите еще раз.
0
 Аватар для Sun Serega
2355 / 1458 / 526
Регистрация: 07.04.2017
Сообщений: 4,798
01.09.2020, 12:06
Pascal
1
  MainWindow.WindowState := WindowState.Maximized;
1
 Аватар для Сергей Игнатьев
222 / 57 / 18
Регистрация: 13.03.2017
Сообщений: 295
01.09.2020, 13:55  [ТС]
Sun Serega,
Огромное спасибо, а то я уже отчаялся найти решение.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.09.2020, 13:55
Помогаю со студенческими работами здесь

Как закрыть форму после отправки формы
Добрый день. Вот есть рабочая форма обратной связи. Помогите пожалуйста сделать так, что бы она после отправки формы скрывалась, ну так что...

после отработки программы не закрывается консолька
не закрывается консолька после отработки проги, и ошибку какую-то выкиывает типо не обработано исключение, и отладчиком тут никак, бо не...

Как закрыть форму сразу после выполнения процедуры
Видимо я что-то не правильно понимаю. Есть у меня 2 формы, Form1 и Form2, на From1 1 кнопка, которая открывает форму2 командой...

Как закрыть форму после нажатия на кнопку отправить?
Всем привет. Есть обычная форма, в ней есть <div class="popup_thanks_close">X</div> это крестик, на который после нажатия пропадает форма. ...

Окно программы закрывается сразу же после отработки
После запуска проекта окно с результатом открывается на секунду и сразу же закрывается. Как быть? Вот код: implement main ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru