![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как запустить процедуру после открытия модального окна?
kull © (2002-06-17 15:00:00)Привет народ!
Нужна помощь.
Есть не консольное приложение.
Надо сделать чтоб оно запускалось из командной строки и сразу начинало выполнять указанные действия после того как откроется главная форма.
Как сделать?
На обработчики типа OnShow, OnActivate вешаться, мне кажется, не красиво. На таймер тоже...
Кто знает как это грамотно сделать?
kull (2002-06-17 18:04:00) [1]Спасибо, Народ!!!
kull (2002-06-17 17:09:00) [2]
> Напиши тогда на OnActivate или OnPaint с проверкой на однократность
> запуска
Вот проверки на однократность запуска меня и смущают.
Это еще один лишний "If", хочется простоты кода.
Если можно сделать что-то без "if" и нагляднее то хотелось бы так.
Просто я надеялся что есть какой-то более правильный, ну незнаю, стандартный способ что-ли...
Lord Warlock (2002-06-17 17:03:00) [3]
> Val © (17.06.02 17:00)
Они срабатывают и так...
> kull © (17.06.02 16:39)
Напиши тогда на OnActivate или OnPaint с проверкой на однократность запуска
Val (2002-06-17 17:00:00) [4]для выполнения действий внутри OnShow после срабатывания метода предка.
Lord Warlock (2002-06-17 16:57:00) [5]
> Val © (17.06.02 16:56)
Зачем?
Val (2002-06-17 16:56:00) [6]inherited;?
kull (2002-06-17 16:39:00) [7]
> Lord Warlock © (17.06.02 16:27)
На OnShow форма не прорисовывается, попробуй:
procedure TForm1.FormShow(Sender: TObject);
begin
Application.ProcessMessages;
Sleep(5000);
end;
Lord Warlock (2002-06-17 16:27:00) [8]
> kull © (17.06.02 16:20)
Ну и делай на OnShow, ничего предрассудительного в этом нет
kull (2002-06-17 16:20:00) [9]
> Lord Warlock © (17.06.02 16:11)
В зависимости от параметров форма может закрываться, а может и нет.
Lord Warlock (2002-06-17 16:11:00) [10]2 kull © (17.06.02 16:08)
> (4. После выполнения прога закрывается)
тогда можешь вообще без главной формы обойтись, показывай сплеш
kull (2002-06-17 16:08:00) [11]
> Игорь Шевченко © (17.06.02 15:49)
> Может, вопрос поподробнее задать стоило ?
Может я непонятно излагаю (...после того как откроется главная форма.), но картина должна быть такая:
1. запускается программа из командной строки.
2. Прорисовывается главная форма со всеми своими контролами.
3. Только после п.2 запускается на выполнение нужная задача.
(4. После выполнения прога закрывается)
> Anatoly Podgoretsky © (17.06.02 15:59)
> В OnShow/OnCreate послать самому себе сообщение,
Да я так пока и делаю, просто хотел узнать может есть еще какие способы получше.
Anatoly Podgoretsky (2002-06-17 15:59:00) [12]В OnShow/OnCreate послать самому себе сообщение, оно встанет в очередь и будет получено тогда, когда форма полностью будет отрисована и будут выполнены все начальные обработчики.
Второй вариант все таки таймер
Игорь Шевченко (2002-06-17 15:49:00) [13]kull © (17.06.02 15:44)
> На OnCreate еще не видно формы и результатов выполнения
> тоже.
Да. Результаты появятся после выполнения процедуры потому как в Application.Run начнется цикл обработки сообщений.
Может, вопрос поподробнее задать стоило ?
Lord Warlock (2002-06-17 15:45:00) [14]
> kull © (17.06.02 15:44)
ну сделай на OnShow
kull (2002-06-17 15:44:00) [15]
> Игорь Шевченко © (17.06.02 15:37)
На OnCreate еще не видно формы и результатов выполнения тоже.
> Lord Warlock © (17.06.02 15:32)
> в общем твоя прога, что хочешь то и делай
Прога-то моя, но сделать хочется хорошо.
Игорь Шевченко (2002-06-17 15:37:00) [16]procedure TfrmMain.FormCreate(Sender: TObject);
begin
{ некая инициализация }
.....
filename := "";
.....
if (ParamCount > 0) then begin
filename := ParamStr(1);
doOpen;
end;
end;
Lord Warlock (2002-06-17 15:32:00) [17]
> 2 kull © (17.06.02 15:30)
ну почему не красиво?
анализируй в OnCreate командную строку, и если не пустая, запускай то что хочешь, а если пустая... (в общем твоя прога, что хочешь то и делай :)
kull (2002-06-17 15:32:00) [18]Лично я сейчас посылаю главное форме свое событие с помощью Perform.
И в обработчике программно нажимаю нужные кнопки.
kull (2002-06-17 15:30:00) [19]А если без потока?
Прога просто выполняет экспорт и выводит результат в memo, а в зависимости от параметра в командной строке закрывается (или нет) после выполнения.
Програмка простая с парой кнопок и нехотелось бы заморачиватся с потоком.
Внук (2002-06-17 15:18:00) [20]Второй поток пустить, вероятно