Как запустить Form2.ShowModal при старте программы?
Модератор: Модераторы
Как запустить Form2.ShowModal при старте программы?
Еще глупый вопрос.
Мне надо, чтобы при запуске программы появлялось модальное окно Form2, и по закрытию его пользователем выполнялась определенная процедура в Form1.
Логично вызвать его в процедуре из Form1 с помощью Form2.ShowModal. Но если это делать внутри Form1.Create, то на этот момент Form2.Create еще не создано.
Вопрос, как в Form1 отловить момент после старта программы, когда все остальные Form__.Create отработаны, и запустить процедуру, которая выполнит Form2.ShowModal и отработает результат?
Мне надо, чтобы при запуске программы появлялось модальное окно Form2, и по закрытию его пользователем выполнялась определенная процедура в Form1.
Логично вызвать его в процедуре из Form1 с помощью Form2.ShowModal. Но если это делать внутри Form1.Create, то на этот момент Form2.Create еще не создано.
Вопрос, как в Form1 отловить момент после старта программы, когда все остальные Form__.Create отработаны, и запустить процедуру, которая выполнит Form2.ShowModal и отработает результат?
DropSoft писал(а):Вопрос, как в Form1 отловить момент после старта программы, когда все остальные Form__.Create отработаны, и запустить процедуру, которая выполнит Form2.ShowModal и отработает результат?
Можно убрать инициализацию из главного модуля и переместить её в Create перед вызовом ShowModal.
Вообще по умолчанию посмотрите код самого проекта (меню проект - просмотреть исходный код проекта), увидите, что на момент открытия главной формы, все остальные уже созданы (если, конечно, сами динамически не создаете формы по ходу выполнения). Так что в тексте самого проекта можно вызвать showmodal любой формы (перед application.run), так, собственно и делают для показа заставок.
vitaly_l, спасибо
java73, сделал так. Перед application.run вставил вызов процедуры из Form1, которая назначена на кнопочку для показа Form2.ShowModal.
Form1.Button1Click(Sender);
Единственно, вопрос. Эта процедура заявлена как TForm1.Button1Click(Sender: TObject);
Что в качестве "Sender" надо указать, если вызывать ее перед application.run? Просто само слово "Sender" дает ошибку.
java73, сделал так. Перед application.run вставил вызов процедуры из Form1, которая назначена на кнопочку для показа Form2.ShowModal.
Form1.Button1Click(Sender);
Единственно, вопрос. Эта процедура заявлена как TForm1.Button1Click(Sender: TObject);
Что в качестве "Sender" надо указать, если вызывать ее перед application.run? Просто само слово "Sender" дает ошибку.
или nil если неважно кто вызывает метод
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
предлагаю третий вариант application.
Кстати, можно воспользоваться обходным способом. Form1.Button1.Click; В этом случае Sender заполнит сама программа.
Кстати, можно воспользоваться обходным способом. Form1.Button1.Click; В этом случае Sender заполнит сама программа.
Если sender внутри метода не используется, зачем лишнюю ссылку передавать
Спасибо!
На self ругается.
nil и Form1.Button1.Click работает.
Проблема решена.
На self ругается.
nil и Form1.Button1.Click работает.
Проблема решена.
Потому что application.self, но я все равно за nil
Добавлено спустя 46 секунд:
Есть ли у application вообще self? Из маршрутки и не узнаешь)
Добавлено спустя 46 секунд:
Есть ли у application вообще self? Из маршрутки и не узнаешь)
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
java73 писал(а):но я все равно за nil
Представляешь, по этим ссылкам иногда переходят... и даже без проверки на ее существование.
java73 писал(а):Есть ли у application вообще self? Из маршрутки и не узнаешь)
Подозреваю, что self это не более чес сахар... директива компрессору, что используется объект вызвавший метод.
А вообще, Self для любого объекта существует. По крайней мере, если он описан через Class.
Self is a keyword which can be used in instance methods to refer to the object on which the currently executing method has been invoked.
Так что внутри кода самого проекта не прокатит.
Добавлено спустя 2 минуты 3 секунды:
прокатит передача в качестве параметра самого объекта application видимо. Но это, как я говорил, лишнее скорее всего в данном конкретном случае.
