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