コンポーネント自身を解放するには?


外人  2004-09-18 00:43:53  No: 10973

たとえば、ボタンを押すと、パネル(ボタンのペアレント)を開放する方法はありますか?


内人  2004-09-18 01:23:29  No: 10974

procedure TForm1.Button1Click(Sender: TObject);
begin
  Panel1.Free;
end;


外人  2004-09-18 01:31:42  No: 10975

そうすると、エラーになりますよ。


内人  2004-09-18 01:33:10  No: 10976

そうですか。わたしのではなりませんね。


外人  2004-09-18 01:38:22  No: 10977

マウスと「Enter」キー両方試してみたら、
ちなみに、こっちは、バージョン7ですけど。


ふぐちゃん  2004-09-18 01:38:26  No: 10978

参考までに、私の環境でもエラーにはなりませんでした。


jok  2004-09-18 01:41:56  No: 10979

わたしのD5でもエラーになりません。TForm.Release をまねて、例えば

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  case Msg.message of
    WM_APP+100: TObject(Msg.wParam).Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage(Application.Handle,WM_APP+100,WParam(Panel1),0);
end;

とかでいいのでは。


外人  2004-09-18 01:47:36  No: 10980

確認しますが、
ボタンは、パネルにつけている。


jok  2004-09-18 01:55:32  No: 10981

はい、Form1の上にPanel1、その上にButton1です。


TtPIPICH  2004-09-18 02:09:34  No: 10982

Enterでもエラーになりません。D6ですが。
何かのイベントが邪魔をしているのでは?


外人  2004-09-18 02:10:52  No: 10983

jok殿、
初心者なので、よく理解できなくて、少し説明をいただければ、ありがたいのですが...
例えば、procedure TForm1.ApplicationEvents1Message  の作成方法など...


jok  2004-09-18 02:16:25  No: 10984

>例えば、procedure TForm1.ApplicationEvents1Message  の作成方法など...

コンポーネントに  TApplicationEvent っていうのがあるので、それをはって
から、その OnMessage イベントをオブジェクトインスペクタでダブルクリック


外人  2004-09-18 02:29:41  No: 10985

すばらしい!
ありがとうございます。


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

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






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