Как да стартирам процедура след отваряне на модален прозорец

Здравейте, хора!
Нужда от помощ.

Няма конзолно приложение.

Необходимо е да го накарате да се стартира от командния ред и веднага да започне да изпълнява посочените действия, след като се отвори основната форма.

Как да направя?
Струва ми се, че не е хубаво да вися на манипулатори като OnShow, OnActivate. На таймера също.

Кой знае как да го прави правилно?

Уф, съжалявам, модалът няма нищо общо с това.
Това се отнася до основната форма на заявлението.

Стартирайте втория поток, вероятно

И ако без поток?
Програмата просто експортира и извежда резултата в бележка и в зависимост от параметъра в командния ред се затваря (или не) след изпълнение.
Програмата е проста с няколко бутона и не би искала да се занимава с потока.

Лично аз сега изпращам събитието си до основния формуляр с помощта на Perform.
И в манипулатора програмно натискам необходимите бутони.

защо не и красива?

анализирайте командния ред в OnCreate и ако не е празен, изпълнете това, което искате, и ако е празно. (като цяло вашата програма, правете каквото искате:)

процедура TfrmMain.FormCreate (Изпращач: TObject);
започнете
< некая инициализация >
.
име на файл: = ";
.
ако (ParamCount> 0) тогава започнете
име на файл: = ParamStr (1);
doOpen;
край;
край;


> OnCreate все още не се вижда форма и резултати от изпълнението
> също.

Да. Резултатите ще се появят след изпълнението на процедурата, защото цикълът на обработка на съобщенията ще започне в Application.Run.

Може би си заслужаваше да задам въпрос по-подробно ?

В OnShow/OnCreate изпратете съобщение до себе си, то ще бъде поставено на опашка и ще бъде получено, когато формулярът бъде напълно изобразен и всички първоначални манипулатори бъдат изпълнени.
Вторият вариант все още е таймер


> (4. След изпълнение програмата се затваря)

тогава можете да се справите изобщо без основната форма, покажете изпръскване

В зависимост от параметрите формулярът може или не може да бъде затворен.

Е, направете го в OnShow, няма нищо накърняващо в това

OnShow, формулярът не е изтеглен, опитайте:

процедура TForm1.FormShow (Изпращач: TObject);
започнете
Application.ProcessMessages;
Сън (5000);
край;

за извършване на действия в OnShow след задействане на метода на предшественика.

Те работят така.

След това пишете в OnActivate или OnPaint с проверка за веднъж изпълнено


> След това пишете на OnActivate или OnPaint с проверка за веднъж
> стартиране

Ето чековете за еднократно изпълнение и ме объркват.
Това е още едно допълнително "Ако", искам кодът да е прост.
Ако можете да направите нещо без "ако" и по-ясно, тогава бих искал.

Просто се надявах, че има някакъв по-правилен, добре, не знам, стандартен начин или нещо подобно.