コントロールが完全に初期化されているかどうかを確認するにはどうすればよいですか?
次のコード(私はそれがこれを行うには非常に悪い習慣を知っている、例としてそれを取るしてください)コントロールが完全に初期化されたときをチェックする方法?
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'を通過します。 –
@David Heffernan:それを指摘していただきありがとうございます。 SOは実際には学ぶのに最適な場所です。 – menjaraz