喫茶XRAYトップページ

[▲前のスレッド]

[6964] 共有するには返信 削除
2013/5/15 (水) 13:24:49 andy
以下のようなコードで各フォームにおいていますが
共有したいと思っています。

procedure TMainF.MenuAddCon;
 var i, e, j:integer;
 NewItem:TMenuItem;
 aa:string;
 begin
   with show1 do begin
    Clear;
    for j:=1 to 10 do begin
     NewItem := TMenuItem.Create(Self);
     NewItem.Caption:='てすと'+inttostr(j);
     NewItem.Name:='ka'+inttostr(j);
     NewItem.Tag:=j;
     NewItem.OnClick:=HyojiSelectClick;
     Insert(j-1,NewItem);
    end;
   end;
  end;
 end;

unitに上のコードをひとつ置き各フォームから
呼び出すようにしていますが
show1 は show:TMenuItemでできますが
OnClickはどのようにしたらいいでしょうか。




[6965] Re:共有するには返信 削除
2013/5/15 (水) 20:18:16 Harry
▼ andyさん

>show1 は show:TMenuItemでできますが
うーん?こういう意味でしょうか?
procedure TForm1.MenuAddCon(show1: TMenuItem);

>OnClickはどのようにしたらいいでしょうか。
うーむ、こう解釈しましたが、いかがでしょう?
procedure TForm1.MenuAddCon(show1: TMenuItem; ClickEvent: TNotifyEvent);
(途中省略)
  NewItem.OnClick:=ClickEvent;


動く形のコードを提示なさった上で、質問を詳しく、明確にされた方が
良いと思います!

[6967] Re2:共有するには返信 削除
2013/5/16 (木) 10:24:54 andy
Harryさん、どうもありがとうございます。

説明不足でどうもすみませんでした。
イベントの処理のことでした。
早速、やってみましたがうまくきました、どうもありがとうございました。
以前のプログラムを作り直していて、できるだけコードを少なくして
管理がしやすくしたいなと思ってやっていて引っかかっていました。


実際のコードですが

フォーム側
HyojiMenuAddCon(show0,HyojiSelectClick);    //拡大・カラーのメニュー作成

ユニット側
procedure HyojiMenuAddCon(Show0: TMenuItem; ClickEvent: TNotifyEvent);
 var i, e, j, c:integer;
 NewItem:TMenuItem;
 aa:string;
 begin
  for i:=1 to 2 do begin
   for c:=1 to Show0.Count do begin
    if Show0.Items[c-1].Name='show'+inttostr(i) then begin
     with Show0.Items[c-1] do begin
      Clear;   e:=IfThen(i=1,8,6);
      for j:=1 to e do begin
       NewItem := TMenuItem.Create(Application);
       if i=1 then NewItem.Caption:='('+IfThen(j=1,'0)標準',inttostr(j-1)+')拡大'+inttostr(j-1))
       else NewItem.Caption:=Cutdata('白黒,白黒反転,黒黄,黒黄反転,黒緑,黒緑反転,青黄,青黄反転',j);
       NewItem.Name:=IfThen(i=1,'ka', 'co')+inttostr(j);
       NewItem.Tag:=j;
       NewItem.OnClick:=ClickEvent;
       Insert(j-1,NewItem);
      end;
     end;
    end;
   end;
  end;
 end;

> >OnClickはどのようにしたらいいでしょうか。
> うーむ、こう解釈しましたが、いかがでしょう?
> procedure TForm1.MenuAddCon(show1: TMenuItem; ClickEvent: TNotifyEvent);
> (途中省略)
>   NewItem.OnClick:=ClickEvent;
>
>
> 動く形のコードを提示なさった上で、質問を詳しく、明確にされた方が
> 良いと思います!



[6969] Re3:共有するには返信 削除
2013/5/18 (土) 00:05:39 Harry
▼ andyさん

>イベントの処理のことでした。
>早速、やってみましたがうまくきました

推測が当たったようで、とりあえず良かったです。

僭越ながら「必要な型を知る方法」を別スレッドにて解説いたしました。
十分ご存知かと思いますが、ご参考になれば幸いです。


なお…マスターは通信途絶状態(Twitter方面なら交信可能というウワサ)です
ので、「Delphi Q&A 掲示板」あたりを利用なさった方が良いかもしれません。
(「動くコード または コンパイルエラーの出ない、簡略化したコード」を添えて、
詳しく説明することをお忘れなく。)

[6970] Re4:共有するには返信 削除
2013/5/18 (土) 11:11:12 andy
▼ Harryさん

説明ありがとうございます。
当方は、D7ですが、以下の様に出ます。

[ prop  TMenuItem.OnClick:  procedure (Sender: TObject)- Menus.pas (222)]

選択して、F1キーでヘルプを出すと、

Delphi の構文:
property OnClick:TNotifyEvent;
で知ることができました。

定義の検索でMenu.pasが見ることができるんですね。

恥ずかしながら知りませんでした。



[▼次のスレッド]
INCM/CMT
Cyclamen v3.82