[Delphi] フォームの表示完了時

フォームを表示しているときに起こるイベントには「OnCreate」「OnShow」「OnActivate」などがありますが、表示し終わったときのイベントがありません。 これを取得するには「CMShowingChanged」メッセージをトラップします。(このメッセージを知るまでは、OnCreateで独自メッセージをポストし、トラップしてました。(^o^;))
実際のコードは以下のようになります。

type
  TForm1 = class(TForm)
private
  { Private 宣言 }
  (略)
  procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED;
  (略)
end;

procedure TForm1.CMShowingChanged(var Message: TMessage);
begin
  inherited;  // 通常の CMShowingChagened をまず実行
  if (Visible) then
  begin
    Update; // 完全に描画
    // 実際の処理を記入
  end;
end;

コメント (0件)


くろねこ研究所
https://www.blackcat.xyz/article.php/ProgramingFAQ_del0049