DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: eyang11
今日帖子: 1
在线用户: 5
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 xgb (xgb) ★☆☆☆☆ -
盒子活跃会员
2004/3/27 20:36:54
标题:
各位老大,怎么动态增加Popupmenu的项目,并为其动态定义事件。 浏览:1506
加入我的收藏
楼主: 在一个事件中,新增一个窗口,增加一个PopupMenu控件,再动态增加项目,最后为每个项目定义一个事件过程。可以做到吗?怎样做。
----------------------------------------------
-
作者:
男 zhuifeng (追风) ★☆☆☆☆ -
盒子活跃会员
2004/3/27 21:27:09
1楼: 先定义一个TMenuItem的变量,然后在用PopupMenu1.Items.Add();添加
在做一个与事件同类型的函数,并赋值给TMenuItem变量
----------------------------------------------
我跑的比风快!!!!
作者:
男 xgb (xgb) ★☆☆☆☆ -
盒子活跃会员
2004/3/27 23:23:06
2楼: 谢谢,但能举个例子吗?
这方法我用过,但不成功,不知我是否用错了。
----------------------------------------------
-
作者:
男 xgb (xgb) ★☆☆☆☆ -
盒子活跃会员
2004/3/28 10:21:11
3楼: 我用的方法如下,但就不成功,能帮我改一个吗?
procedure TKCForm.N4Click(Sender: TObject);
var
  DBCKLSName:String;
  TmpQuery:TQuery;
  TmpPopupMenu: TPopupMenu;
  TempTMI: TMenuItem;//能不能不定义这个,我想动态地加菜单,个数不能确定的。
  TmpString:String;

  procedure ReQuery;
  begin
    with TmpQuery do begin
      sql.Clear;
      sql.Add(''select A.cCKLSID,A.cYL as 产品,A.cGG as 规格,A.cDW as 单位,A.cCKLSNumber as 数量,A.cCKLSDate as 日期,U.cUserName as 经手人 from ''+DBCKLSName+''Ku A,UserKu U'');
      sql.add(''Where (((A.cCKID=:cCKID) and (A.cYLLBID = :cYLLBID)) and (A.cJSRID=U.cUserID)) ''+TmpString);
      sql.add(''order by A.cCKLSID desc'');
      ParamByName(''cYLLBID'').AsInteger:=cYLLBID ;
      ParamByName(''cCKID'').AsInteger:=cCKID ;
      open;
      FieldByName(''cCKLSID'').Visible:=F;
    end;
  end;
  procedure TPMOnClick(TS:String);
  var
    C,IsIf:Boolean;
  begin
    C:=True;
    IsIf:=True;
    IF (TS=''经手人'') and IsIf then begin
      TmpString:=InputBox(''请输入:'', ''经手人姓名或编号'', '''');
      if Trim(TmpString)='''' then
        C:=False
      else begin
        TmpString:='' and ((U.cUserName="''+TmpString+''") or (U.cUserBH="''+TmpString+''")) '';
      end;
      IsIf:=False;
    end;
    if IsIf then begin
      //.......
    end;
    if C then ReQuery;
  end;

begin
  TmpString:='''';
  TempForm:=TTempForm.create(Self);
  TmpQuery:=TQuery.Create(Self);
  with TmpQuery do begin
    DatabaseName:=MainForm.Database1.DatabaseName;
    close;
    sql.Clear;
    sql.Add(''select getdate() as Mydate'');
    open;
    MyDate:=FieldByName(''Mydate'').AsDateTime;
    close;
    DBCKLSName:=''CKLS''+formatdatetime(''YYYYMM'',MyDate);
    MainForm.Create_CKLSKu(DBCKLSName);
    close;
  end;
  TmpPopupMenu.Create(Self);
  with TmpPopupMenu do begin
    Items.Clear;
    Items.Add(TempTMI);
    Items.Items[1].Caption:=''根据经手人筛选'';//这里的1可能用得不怎样,能可个好的建议吗?
    Items.Items[1].OnClick:=TPMOnClick(''经手人'');//在这里不能通过
     //.....有可能的话可以再加几个菜单项。
  end;
  with TempForm do begin
    DataSource1.DataSet:=TmpQuery;
    with DBGrid1 do begin
      DataSource:=DataSource1;
      PopupMenu:=TmpPopupMenu;
    end;
  end;
  ReQuery;
  with TempForm do begin
    WindowState:=wsMaximized;
    ShowModal;
  end;
end;

----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行60.54688毫秒 RSS