#delphi #frames
#delphi #фреймы
Вопрос:
Итак, у меня есть программа, которая запускает симуляцию
Когда вы выбираете модель, открывается экран, который позволяет вам выбрать «Запустить модель», который открывает другой экран, в котором вы можете нажать кнопку «Пуск»
Я хочу создать очередь, чтобы пользователь мог выбирать несколько моделей, и программа запускалась через эти экраны без ввода пользователем
Итак, я вызываю фрейм, подобный этому:
ProgForm := TProgressForm.Create(Self, FModItem);
Self.Visible := False;
try
ProgForm.ShowModal;
Теперь я могу запустить программу, добавив строку в конце Create для запуска симуляции, но проблема в том, что она не показывает фрейм до конца симуляции (поскольку конструктор Create не завершен, пока не будет завершена функция run, которую я вызвал)
Я не уверен, что делать, поскольку, если я ничего не добавляю в вызываемую мной функцию Create, похоже, нет другого способа вызвать любую функцию автоматически, но если я что-то делаю в Create, фрейм не отображается до завершения Create
Спасибо
Ответ №1:
Я предлагаю прочитать:
http://delphi.about.com/od/formsdialogs/a/delphiformlife.htm
Вы можете использовать OnShow
событие формы для выполнения каких-либо действий до того, как форма будет полностью выведена на экран.
OnActivate
обычно это лучшее место для выполнения работы при отрисовке формы.
КСТАТИ
вы говорите Frame, но в вашем коде написано, TProgressForm
поэтому я предполагаю, что вы имеете в виду Form
с Frame
внутри.
Комментарии:
1. Большое спасибо, это именно то, что я искал, OnActivate работает отлично
2. OnActivate также вызывается, если на одном уровне «модального стека» есть две или более формы и пользователь переключается между этими формами. Поэтому будьте осторожны при использовании OnActivate как «OnAfterShow».