Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2008, 17:12   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,898
По умолчанию Unit1 -> Unit2

Как сделать чтобы после открытия Unit1 сразу же открылся Unit2?
Изображения
Тип файла: jpg unit1--unit2.jpg (16.0 Кб, 140 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 13.06.2008, 17:16   #2
igroman
Пользователь
 
Регистрация: 25.05.2008
Сообщений: 75
По умолчанию

Другая форма чтоли?
Form2.Show; или Form2.ShowModal;
igroman вне форума Ответить с цитированием
Старый 13.06.2008, 19:01   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,898
По умолчанию

Я так пробовал. Говорит Access violation at adress 004C30D6 in module 'Project.exe'. Read of address 00000000. Тоесть надо чтобы Unit2 сам окрылся, а не когда его вызовет юзер.
Shouldercannon вне форума Ответить с цитированием
Старый 13.06.2008, 19:30   #4
igroman
Пользователь
 
Регистрация: 25.05.2008
Сообщений: 75
По умолчанию

Попробуйте не на событии onCreate а на onActivate. У меня заработало.
igroman вне форума Ответить с цитированием
Старый 13.06.2008, 20:18   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,898
По умолчанию

Спасибо действительно так работает.
Shouldercannon вне форума Ответить с цитированием
Старый 13.06.2008, 20:46   #6
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Попробовать то можно, вот только неплохо бы знать почему не работало )

Формы в проекте создаются по очереди, если очередность не менять, то по мере добавления к проекту Form1 > Form2 > Form3 etc.
В тот момент когда создалась форма 1 (а код у вас был как раз в обработчике ее создания), формы 2 еще не существует, как же можно ее показать? Заметьте, из обработчика создания формы 2 к форме 1 уже можно обращаться.

Теперь про OnActivate. После того как все формы создались, происходит активация главной формы проекта, из процедуры Activate уже можно обращаться к другим формам. Но есть один нюанс, событие OnActivate происходит каждый раз когда форма получает фокус. Сверните окно а затем восстановите, или кликните где нибудь на рабочем столе, на другой программе, а затем на вашем окне и произойдет событие OnActivate.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 13.06.2008, 21:31   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,898
По умолчанию

<Теперь про OnActivate. После того как все формы создались, происходит активация главной формы проекта, из процедуры Activate уже можно обращаться к другим формам. Но есть один нюанс, событие OnActivate происходит каждый раз когда форма получает фокус. Сверните окно а затем восстановите, или кликните где нибудь на рабочем столе, на другой программе, а затем на вашем окне и произойдет событие OnActivate.>
используя такой код
procedure TForm1.FormActivate(Sender: TObject);
begin
Form2.ShowModal;
end;

я окно сворачивал, восстанавливал, прошёлся по другим окнам и снова активировал окно своего приложения и Unit2 больше не показывался, только после запуска один раз.
Shouldercannon вне форума Ответить с цитированием
Старый 14.06.2008, 00:43   #8
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Прошу прощения, немного перепутал. Это касается дочерних форм.
Проверьте такой код, вызывайте только просто Form2.Show, и поменяйте фокус с одной на другую.
Код:
procedure TForm1.FormActivate(Sender: TObject);
begin
ShowMessage('Form1 Activated');
end;

procedure TForm2.FormActivate(Sender: TObject);
begin
ShowMessage('Form2 Activated');
end;
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Error] Unit1.pas(40): Incompatible types: 'Integer' and 'Extended BETONOMESHALKA Общие вопросы Delphi 9 15.03.2014 17:26
ошибка - [Error] Unit1.pas(325): Operator not applicable to this operand type blackstersl Общие вопросы Delphi 6 27.08.2008 13:17
Как правильно удалить Unit2 Небесный Общие вопросы Delphi 3 07.06.2008 22:36
Ошибка: File not found Unit2.dfm Иринкаа Помощь студентам 5 21.11.2007 17:55