Как проверить, полностью ли инициализирован элемент управления?
Рассмотрим следующий код (я знаю, что это очень плохая практика, чтобы сделать это, пожалуйста, это как пример)Как проверить, когда элемент управления полностью инициализирован?
type
TForm1 = class(TForm)
Memo1: TMemo;
private
procedure WndProc(var Message: TMessage); override;
public
{ Public declarations }
end;
procedure TForm1.WndProc(var Message: TMessage);
begin
{
I'd like to log the messages to the memo as soon
as it's possible so I need to find out how to
check if the memo box is ready to use; the following
code stuck the application, so that the form is not
even displayed. How would you fix this code except
"avoid using of component access in window proc" ?
}
if Assigned(Memo1) then
if Memo1.HandleAllocated then
Memo1.Lines.Add('Message: ' + IntToStr(Message.Msg));
inherited WndProc(Message);
end;
P.S. Я знаю OutputDebugString :-)
Спасибо!
Я смущен. Что вы хотите точно? 1) Записывать каждое сообщение «Message.Msg» в цикле сообщений в Memo1 или регистрировать завершение инициализации «Form1 и/или Memo1»? Можете ли вы это прояснить? – menjaraz
@menjaraz Будьте осторожны, когда говорят «цикл сообщений». Это всего лишь сообщения в очереди. Сообщения без очереди также проходят через «WndProc». –
@ Давид Хеффернан: Спасибо, что указали это. Это действительно отличное место для изучения. – menjaraz