項目が増減するメニューを作るには

解決


武田  2010-11-22 06:04:13  No: 39585

よろしくお願いします。
Win7、Delphi6Personalです。
私の知識ではメニューは設計時にがっちり作成して使うしか知りませんが、
巷では項目が増減する要素をメニューで表示するソフトを見かけます。
たとえば、XPでは「最近開いたファイル」?とか
Internet Explorer のFavorites,
Google Chromeの「その他のブックマーク」など
刻々と項目が増減するのにあたかもメニューのように開いて選択する機能がありますが
どのような機能でプログラミングしているのでしょうか。
ネットでサンプルを探してみるのですが、キーワードが解らず
たどり着けません。
キーワード、サンプル、機能の名前、何でもかまいません
ヒントをいただけないでしょうか。
よろしくお願いします。


D  2010-11-22 08:15:43  No: 39586

>キーワード、サンプル、機能の名前、何でもかまいません
>ヒントをいただけないでしょうか。

TMenuItemのヘルプ。
NewItem関数、NewLine関数とそのヘルプ。

追加の簡単なサンプルです。
procedure TForm1.Button1Click(Sender: TObject);
var
  li_Index:   Integer;
  l_MenuItem: TMenuItem;
  ls_Caption, ls_Name: String;
begin
  if (OpenDialog1.Execute) then begin
    li_Index   := MenuItem1.Count;
    ls_Caption := ExtractFileName(OpenDialog1.FileName);
    ls_Name    := Format('%s_%d', [MenuItem1.Name, li_Index]);
    l_MenuItem := NewItem(
        ls_Caption,     //Caption
        0,              //ShortCut
        False,          //Checked
        True,           //Enabled
        MenuItemClick,  //OnClickイベント
        0,              //HelpContext
        ls_Name         //Name
    );
    //NewItem関数の引数にないプロパティやイベントは個々に設定
    l_MenuItem.Hint := OpenDialog1.FileName;

    MenuItem1.Add(l_MenuItem);
  end;
end;

procedure TForm1.MenuItemClick(Sender: TObject);
var
  l_MenuItem: TMenuItem;
begin
  if (Sender is TMenuItem) then begin
    l_MenuItem := TMenuItem(Sender);
    ShowMessage(l_MenuItem.Name +#13 + l_MenuItem.Caption + #13 + l_MenuItem.Hint);
  end;
end;


武田  2010-11-22 09:18:38  No: 39587

Dさん、早速ご指導ありがとうございます。
サンプルコードまで教えていただき痛み入ります。
これから挑戦してみます。
ありがとうございました。


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

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






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