お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"メニューの動的生成"



こんにちは、凛です。
メニューの動的生成/削除のサンプルです。
PopUpMenu(PopUpMenu1)をひとつフォーム上に配置し、フォームのPopUpMenuプロ
パティをPopUpMenu1にします。
 実行して、フォーム上で右クリックするたびにメニューが増えていきます。
メニューが3つになると、次からは3つめのメニューのサブメニューが増えていき
ます。
メニューの中のどれかを選択すると、そのメニューが削除されます。

☆ミニ解説
 TMenuItem.DestroyでParentに自分を削除するように命令するので、Parentから
のDeleteはしなくて良いです。また、Parentの設定はAdd時に行われますので、
AddするだけでOK



unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
  Dialogs, Menus;

type
  TForm1 = class(TForm)
    PopupMenu1: TPopupMenu;
    procedure PopupMenu1Popup(Sender: TObject);
  private
    { Private 宣言 }
    procedure MenuClick(Sender: TObject);//自分で定義
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
  NewMenuItem:TMenuItem;
begin
  NewMenuItem:=TMenuItem.Create(Self);
  NewMenuItem.Caption:=IntToStr(GetTickCount);
  NewMenuItem.OnClick:=MenuClick;
  if PopUpMenu1.Items.Count>2 then
  begin
    PopUpMenu1.Items[2].OnClick:=nil;
    PopUpMenu1.Items[2].Add(NewMenuItem);
  end
  else
    PopUpMenu1.Items.Add(NewMenuItem);
end;

procedure TForm1.MenuClick(Sender: TObject);
begin
  (Sender as TMenuItem).Free;
end;
end.                              2001/08/05(Sun) 09:21am  MXB01744 凛
 


- FDELPHI  MES(16):玉石混淆みんなで作るSample蔵【見本蓄積】 01/08/05 -

Original document by 凛              氏 ID:(MXB01744)


ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum