Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.02.2013, 20:21
lostbananan lostbananan вне форума
Начинающий
 
Регистрация: 05.01.2013
Сообщения: 119
Репутация: 10
По умолчанию Основное окно закрывается, появляется дополнительное

Добрый вечер!
Первое - пршу прощения у модераторов - я позавчера кажется ничего не нарушал - это либо у меня нет плохо фурычил - либо у вас чего-то на серваке...
Теперь вопрос:
В проекте естьдва окна главное и 2-е.
так вот для onClose главного окна написал такой код:
Код:
  Form2.Show;
Но главное окно закрывается а окна 2-го так и не вижу...
Что делать? Может не то событие я обрабатываю?
Собственно налдо чтобы главное окно (приложение) законрчило свою работу после того как отработает дополнительное окно

Неужели никто с такой проблемой не сталкивался??

Последний раз редактировалось M.A.D.M.A.N., 20.02.2013 в 08:37.
Ответить с цитированием
  #2  
Старый 20.02.2013, 00:01
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,024
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Сталкивался. Проблема в том, что главное окно и есть основная программа (т.е. главная WndProc), когда оно закрывается, то происходит завершение всей программы. Если тебе надо показать еще одно окно после, фактически, завершения программы, то тебе надо в .dpr файле после вызова Application.Run добавить код показа этого окна:
1. "Выкидываешь" Form2 из списка автосоздаваемых форм.
2. Открываешь файл проекта (Project -> View source)
3. Добавляешь примерно такой код:
Код:
begin
    Application.Initialize;
    Application.CreateForm(TMainForm, MainForm);
    Application.Run;

    // Показываем вторую форму
    With Form2.Create(Nil) Do
      Begin
        Show;
        Update;
        Sleep(5000); // Показваем форму в течении 5 сек.
        Free;
      End;
end.

Код выше только для примера, если тебе надо, что бы юзер что-то сделал в этом окне, то надо будет сделать отслеживание этого и закрывать окно по действию пользователя.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
lostbananan (20.02.2013)
  #3  
Старый 20.02.2013, 00:25
lostbananan lostbananan вне форума
Начинающий
 
Регистрация: 05.01.2013
Сообщения: 119
Репутация: 10
По умолчанию

Спасибо! Попробую завтра - сегодня я уже устал...

Уже пробывал - чего-то не получается - на Sleep(5000); ругается неопредделенный идентификатор, когда слип заремарир в ран-тайм режиме выдает система ошибку EAcsessViolation// чтение по адресу 00000..
Чьто не так:
вот весь код моего проекта:
Код:
program Loh1;

uses
  Forms,
  main in 'main.pas' {Form1},
  Unit2 in 'ini\Головна\1\Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;

  // Показуємо додаткову форму форму
    With Form2.Create(Nil) Do
      Begin
        Show;
        Update;
//        Sleep(5000);
        Free;
      End;
end.

Последний раз редактировалось M.A.D.M.A.N., 20.02.2013 в 09:17.
Ответить с цитированием
  #4  
Старый 20.02.2013, 09:17
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Дак оно не создано, вот и ругается EAccessViolation.

TForm2.Create
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #5  
Старый 20.02.2013, 10:29
lostbananan lostbananan вне форума
Начинающий
 
Регистрация: 05.01.2013
Сообщения: 119
Репутация: 10
По умолчанию

Моржет я чего-то недопонимаю но по поводу создания окна, вот код:
Код:
With Form2.Create(Nil) Do
      Begin
        Show;
        Update;
м написал я тако1й код:
Код:
 Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
    // Ïîêàçóºìî äîäàòêîâó ôîðìó ôîðìó
    TForm2.Create(Nil);
    With Form2.Create(Nil) Do
      Begin
        Show;
        Update;
//        Sleep(5000);
        Free;
      End;
Все-равно ругается Аксес виолатион.... Чего нетак??

Последний раз редактировалось lostbananan, 20.02.2013 в 10:39.
Ответить с цитированием
  #6  
Старый 20.02.2013, 10:54
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

TForm2.Create

я уже писал тебе.

Код:
With TForm2.Create(Nil) Do
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter