Использование сквозного кода для очереди

#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».