起動時にManualDockを一度だけ。

解決


のど飴  2009-10-21 08:10:33  No: 35944

お知恵を拝借したいのですが、起動時に一度だけ、ドッキングさせたいんですが、

Form2.ManualDock(Panel1);

CreateやOnShowではエラーになる、かといてOnPrintではアクティブにするたびにドッキングしてしまう。
セオリーは、どういう方法なんでしょうか?

まぁ、Timerか、なにかフラグを立てて、1度実行したら、それ以降は無視しちゃえばいいんですが・・・。

こういう、起動時に一度だけ実行するけど、エラーになる事柄って、どういう方法がセオリーなんでしょう?


monaa  2009-10-21 15:26:06  No: 35945

>>OnShowではエラーになる
なりませんです。はい。


けど  2009-10-22 06:14:50  No: 35946

procedure TAddMemoMainForm.FormPaint(Sender: TObject);
begin
  OnPaint:=nil;
//ここに一度だけやりたいことを書く
end;


のど飴  2009-10-22 06:38:18  No: 35947

そうか、対象にもよるのかな?
Form2.ManualDock(Form1.Panel1);

Form1のパネルに、Form2をまるまるドッキングです。

これだと、OnShowだと、

デバッガ例外が発生。
Onshow/OnHideイベント処理中は、表示状態の変更は出来ません。

ってなるんですよねー。
一応、念のために、form1,form2の両方で試してみました。
dlephi6です。


aie81170  2009-10-22 08:42:12  No: 35948

Onshowイベントで
Form2.ManualDock(Form1.Panel1);
これだけなら例外は発生しない。ほかに何かやってるんじゃない?


のど飴  2009-10-22 09:46:07  No: 35949

うーむ、そうなると上にのかってるものが原因かな?

何だろう?

もう分からないから、OnPrintで、フラグで処理しちゃおうかなー。

みなさん、ありがとうございました。
どうやら、こちら側の問題のようなので、すこし調べてみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加