TMainMenu 类[三] - 手动建立菜单(5) : 给菜单项添加事件

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure Proc(Sender: TObject); {声明将要被调用的方法}
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  MyMenu: TMainMenu;
  Item: TMenuItem;

{实现将要被调用的方法}
procedure TForm1.Proc(Sender: TObject);
begin
  if Sender is TMenuItem then
    ShowMessage(TMenuItem(Sender).Caption);
end;


procedure TForm1.FormCreate(Sender: TObject);
var
  Itemd: TMenuItem;
begin
  MyMenu := TMainMenu.Create(Self);
  MyMenu.AutoHotkeys := maManual;
  Self.Menu := MyMenu;

  Item := TMenuItem.Create(MyMenu);
  Item.Caption := 'AA';
  MyMenu.Items.Add(Item);

    Itemd := TMenuItem.Create(MyMenu);
    Itemd.Caption := 'A&1';
    Itemd.OnClick := Proc; {调用方法}
    Item.Add(Itemd);

    Itemd := TMenuItem.Create(Item);
    Itemd.Caption := 'A&2';
    Itemd.OnClick := Proc; {调用方法}
    Item.Add(Itemd);
end;

end.
效果图:

r_Menu6.png

不过, 菜单事件一般是使用 ActionList 的, 添加一个 ActionList 同时添加一个方法, 实现和上面同样的功能:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, ActnList;

type
  TForm1 = class(TForm)
    ActionList1: TActionList;
    Action1: TAction;
    procedure FormCreate(Sender: TObject);
    procedure Action1Execute(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  MyMenu: TMainMenu;
  Item: TMenuItem;


procedure TForm1.Action1Execute(Sender: TObject);
begin
  if Sender is TMenuItem then
    ShowMessage(TMenuItem(Sender).Caption);
end;


procedure TForm1.FormCreate(Sender: TObject);
var
  Itemd: TMenuItem;
begin
  MyMenu := TMainMenu.Create(Self);
  MyMenu.AutoHotkeys := maManual;
  Self.Menu := MyMenu;

  Item := TMenuItem.Create(MyMenu);
  Item.Caption := 'AA';
  MyMenu.Items.Add(Item);

    Itemd := TMenuItem.Create(MyMenu);
    Itemd.Caption := 'A&1';
    Itemd.OnClick := Action1Execute; {调用方法}
    Item.Add(Itemd);

    Itemd := TMenuItem.Create(Item);
    Itemd.Caption := 'A&2';
    Itemd.OnClick := Action1Execute; {调用方法}
    Item.Add(Itemd);
end;

end.

转载于:https://www.cnblogs.com/del/archive/2008/02/04/1064462.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus, DB, ADODB, ComCtrls; type TForm1 = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; ADOConnection1: TADOConnection; ListView1: TListView; Panel1: TPanel; Button1: TButton; Button2: TButton; DataSource1: TDataSource; ADOQuery1: TADOQuery; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure DisplayDataInListView(ListView: TListView); var Connection: TADOConnection; Query: TADOQuery; Field: TField; ListItem: TListItem; begin // 创建ADO连接和查询组件 Connection := TADOConnection.Create(nil); Query := TADOQuery.Create(nil); try // 设置连接字符串 Connection.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=G:\tongbugongju\DBSync.mdb;Persist Security Info=False;'; Connection.LoginPrompt := False; Connection.Connected := True; // 绑定连接到查询组件 Query.Connection := Connection; // 执行查询语句获取数据 Query.SQL.Text := 'SELECT * FROM tasklist'; Query.Open; // 清空ListView ListView.Clear; // 遍历查询结果并将数据显示到ListView中 while not Query.Eof do begin ListItem := ListView.Items.Add; // 遍历查询结果的字段,并将数据添加到ListItem的各列中 for Field in Query.Fields do begin ListItem.SubItems.Add(Field.AsString); end; Query.Next; end; finally // 释放资源 Query.Close; Connection.Connected := False; Connection.Free; Query.Free; end; end; end.
07-10

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值