在程序模块化过程中,一些具体功能要编成一个过程文件。而在过程中就要动态建立某一功能控件,和对功能控件的一些事件和过程进行编写。问题就是在过程中动态建立的控件的事件如何在过程中建立和编写。
解决方案 »
- 如何将edit中输入的字符串转化成数字?
- 请问 如何 用代码 控制 excel 中某个单元格 或 选中 区域单元格 设置成只读不能修改!!
- 汗!现在到底要怎样才能收藏帖子啊?
- ★★★用Spy++获得的窗体句柄是16进制的(如:0006011C)。如何用一个edit控件和一个button控件和showwindow函数来显示这个窗体(要求:
- 谁用过dynamicskinform皮肤组件!!跟贴!!
- 在delphi中如何实现把一个MDB数据库中的某张表的符合条件记录追加或插入、替换等等到另外一个MDB数据库中的一张表中????
- 简单小问题?
- 哪里可以找到 XLReport?
- 请教delphi中截取字符串的函数?
- 报表打印的问题
- 要求imgage自动出现水平或垂直滚动条?
- MTS和MIDAS各自有什么特点,哪一种更好一点呢
begin
Showmessage('Click');
end;procedure Button1.OnClick(Sender : TObject);
var
lLab : TLable;
begin
lLab := TLable.Create(self);
lLab.Parent := Form1;
lLab.OnClick := myClick;
lLab.Caption := 'aaa';
end;
procedure TFrmMain.CreatPowerButton;
var
i,iArrayCount:Integer;
iHeight:Integer;
begin
iHeight:=30;
iArrayCount:=0;
SetLength(BnArray,0);BnArray是TButton数组
for i:=0 to PowerIDList.Count-1 do
if length(PowerIDList.Strings[i])=3 then
begin
Inc(iArrayCount);
SetLength(BnArray,iArrayCount);
BnArray[iArrayCount-1]:=TButton.Create(PanelOfTree);
BnArray[iArrayCount-1].Parent :=PanelOfTree;
BnArray[iArrayCount-1].Height :=iHeight;
BnArray[iArrayCount-1].Caption :=PowerNameList.Strings[i];
BnArray[iArrayCount-1].OnClick :=BnOnClick;//事件赋予
end;
end;
然后在写动态事件代码:
procedure TFrmMain.BnOnClick(Sender: TObject);
being
//具体实现
end;
procedure CreateAObject(sender:Tobject);
var
dd:Tpanel;
begin
dd:=TPanel.create(Sender);
dd.parent:=sender;
dd.setbound(100,100,100,100);
end;
思想大致就是这样,没有调试。 :P
老是提示错误信息“未声明检验符myClick”,请问这是怎么回事谢谢!!还有就是激发它的事件时,该怎么定位到该控件数组的具体控件。
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
procedure btnclick(sender:tobject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
j:integer;
btn:array of tbutton;
begin
setlength(btn,100);
j:=0;
for i:=0 to 16 do
begin
if (i=(5*j)+5) and (i<>0) then j:=j+1;
btn[i]:=tbutton.Create(self);
btn[i].Caption :='button' +inttostr(i);
btn[i].Width:=50;
btn[i].Height:=50;
btn[i].Top:=j*(btn[i].Height+10) ;
btn[i].Left:= (i-5*j)*btn[i].Width+10;
btn[i].Parent:=self.Panel1 ;
btn[i].OnClick:=btnclick;
end;
end;
procedure tform1.btnclick(sender:tobject);
var
a:string;
begin
a:= tbutton(sender).Caption ;
application.MessageBox(pchar(a),'提示!');
end;end.