Как да стартирам процедура след отваряне на модален прозорец
Здравейте, хора!
Нужда от помощ.
Няма конзолно приложение.
Необходимо е да го накарате да се стартира от командния ред и веднага да започне да изпълнява посочените действия, след като се отвори основната форма.
Как да направя?
Струва ми се, че не е хубаво да вися на манипулатори като 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 с проверка за веднъж
> стартиране
Ето чековете за еднократно изпълнение и ме объркват.
Това е още едно допълнително "Ако", искам кодът да е прост.
Ако можете да направите нещо без "ако" и по-ясно, тогава бих искал.
Просто се надявах, че има някакъв по-правилен, добре, не знам, стандартен начин или нещо подобно.
- Как да прехвърля информация от програмата IPM (Podatkova Vivacity) в един прозорец, ProKey
- Защо е необходима уретроскопия? Какви са предимствата на процедурата?
- Как да изберем плъзгащи се прозорци за тераса, видове дизайни
- Как да играя PSOne игри на PSP - 30 юни 2010 г. - Личен сайт
- Как да избегнем делириум тременс - как да избегнем делириум тременс - Лечение на заболявания