徒然なるままに、日ぐらしP/Cに向ひて――
メインメニュー
ブログカレンダー
2017年 2月
« 1月   4月 »
 1234
567891011
12131415161718
19202122232425
262728  
WordPress カテゴリ一覧
WordPress 検索


富士カメラ5

Kestrel とは、チョウゲンボウのことです。ハトくらいの小さな猛禽類、つまりワシの仲間で、ハヤブサに似ています。
チョウゲンボウにはホバリングという特技があります。よく農地の上空で空中に停止している姿が見られます。小さいけれどカッコイイ、そして最近は都会でも繁殖している頼もしいタカです。
このサイトのURLは、そんなチョウゲンボウから名前を借りました。

2017年2月28日(火曜日)

Delphiのメニューに項目を動的に追加する

カテゴリー: - flyman @ 14時07分11秒

ちょっと色々なことをやろうとして混乱中だ。

拙作のシステム手帳リフィル印刷ソフト『我備帖』に幾つかリフィルを追加したのだが、それがほとんどの人には不要な機能なのだ。
そこで、それらを外部に切り出し、必要な人だけが機能追加できるようにしたいと思い、試行錯誤を繰り返している。
ということで、今まで一度も使ったことのないDLL呼び出しに挑戦中なのだ。
追加機能をDLLに分離し、我備帖はDLLがあればその機能をメインメニューに登録する。
でも、これがなかなか大変。目途がついたところから、備忘録としてここに書いて行こうかと思う。

で、まず、Delphiのメインメニューに動的に項目を追加する方法だ。

procedure TForm1.AddMenuItem;
var
  mi :TMenuItem;
  method: TMethod;
begin
  method.Code := @TheMethod;  // 実行したい機能のポインタ
  method.Data := Pointer(TheParameter);  // 引数のポインタ
	
  mi :=TMenuItem.Create(Self);
  mi.Caption := 'メニューの見出し';
  mi.Name := 'AddedMenuName';
  mi.OnClick := TNotifyEvent(method);  //イベントの動的割り当て
  MainMenu.Items[0].Insert(0, mi);  //メニューに挿入
end;

と、こんな感じか。

MainMenu.Items[0].Insert(0, mi) がミソで、"0″を変えれば追加項目をメニューの任意の場所に挿入することができる。最後に追加するだけなら、MainMenu.Items.Add(mi) でよい。ほぼ同様の手順でポップアップメニューへの項目追加も可能だ。

実際のコードでは、DLLを検索し、登録されている関数を読み込んでメニューのOnClickに関連づけることになる。その辺はまた今度。


TrackBacks

このコメントのRSS

TrackBack URL : http://www.kestrel.jp/modules/wordpress/wp-trackback.php/1158

この投稿には、まだコメントが付いていません

コメント

_CM_NOTICE

20 queries. 0.015 sec.
Powered by WordPress Module based on WordPress ME & WordPress

ヘッドライン
nikkansports
IT Pro
レスポンス
テーマ選択

(4 テーマ)