Delphi 2010 Как сделать что-то при запуске формы, не требуя от пользователя каких-либо действий (нажатие кнопки и т. Д.) - PullRequest
0 голосов
/ 21 декабря 2011

Как сделать что-то при запуске формы, например:

  RichEdit1.Lines.Add('sorry email@exemple.com is already in our database');

НЕ до тех пор, пока пользователь не предпримет какое-либо действие (нажатие кнопки и т. Д.)

Я пытался использовать приведенный ниже код, и он работает, но я вынужден нажать на кнопку один, чтобы добавить эту строку в компонент richEdit1.

Ответы [ 4 ]

3 голосов
/ 21 декабря 2011

Вы можете использовать событие OnActivate формы, чтобы установить свойства для визуальных элементов управления. Я обычно делаю это следующим образом:

procedure TForm1.FormActivate(Sender: TObject);
begin
  //Allow this code to run only once
  OnActivate := nil;

  //Set RichEdit Properties
  RichEdit1.Lines.Add('sorry email@exemple.com is already in our database');
end;
3 голосов
/ 21 декабря 2011

Если элемент управления TRichEdit был добавлен во время разработки к форме, то вы можете установить свойства элемента управления RichEdit в событии OnCreate формы.

Это позволяет вам установить свойстваэлементов управления до того, как пользователь даже увидит элементы управления или сможет взаимодействовать с ними.

OnCreate вызывается после создания формы (включая дочерние элементы управления) и перед ее отображением.

Чтобы открыть событие OnCreate для редактирования в IDE, вы можете просто дважды щелкнуть пустую часть формы.

2 голосов
/ 03 октября 2012

Используйте событие OnShow формы.

НО: используйте приватное поле FShown: boolean и проверьте его в обработчике OnShow - если оно TRUE, немедленно завершите работу.

если это ЛОЖЬ, установите для него значение ИСТИНА и продолжайте все, что вы хотите сделать.

Существует также событие OnCreate, но во многих случаях это слишком рано - многие визуальные компоненты еще не были должным образом инициализированы, когда выполняется код в обработчике OnCreate.

0 голосов
/ 21 декабря 2011

Иногда необходимо отложить действия до начала цикла обработки сообщений.В этих ситуациях я склонен использовать конструктор формы или событие OnCreate, чтобы отправить пользовательское асинхронное сообщение в окно формы через PostMessage() (некоторые люди используют вместо этого короткий интервал TTimer), а затем выполнить действие вметод WndProc() формы, когда сообщение было получено.

...