我的程序如下:
procedure CreateForm(Cap:String);
var FForm:TForm;
Lab :TLabel;
Edt :TEdit;
Btn :TBitBtn;
i :integer;
St :Tstrings;begin
//建立窗体;
St := Tstringlist.Create;
St.Clear ;
St.Add('审核');
St.Add('取消');
FForm := TForm.Create(nil);
with FForm do
begin
Caption := Cap;
Width := 300;
Height := 400;
Position := poDesktopCenter;
BorderStyle := bsSingle;
BorderIcons := [BiSystemMenu];
end;
//建立LABEL和BUTTON;
for i:= 1 to DM.ADOConfirm.FieldCount -1 do
begin
Lab := TLabel.Create(FForm);
Lab.Name := 'Label'+inttoStr(i);
Lab.Caption := DM.ADOConfirm.Fields [i].DisplayName ;
Lab.Top := Lab.Height + (i-1)*25;
Lab.Left := 30;
Lab.Width := 50;
Lab.AutoSize := false;
Lab.Parent := FForm;
Edt := TEdit.Create(FForm);
Edt.Name := 'Edit'+inttoStr(i);
Edt.Text := DM.ADOConfirm.Fields [i].AsString ;
Edt.Top := Lab.Top - 1;
Edt.Left := 120;
if (i in [1,2,DM.ADOConfirm.FieldCount-1,DM.ADOConfirm.FieldCount-2]) then
begin
Edt.ReadOnly := true;
Edt.Color := clScrollBar;
end;
Edt.Parent := FForm;
if i < 3 then
begin
Btn := TBitbtn.Create(FForm);
Btn.Name := 'TBitBtn'+inttostr(i);
Btn.Caption := St[i-1];
Btn.Top := 320;
Btn.Left := 60 + i*20 + Btn.Width ;
Btn.Parent := FForm;
// Btn.Click := FClose(Sender);
Btn.OnClick
if i= 1 then
Btn.OnClick := azFrmconfirm.BitBtn1Click;
//AZSHPUB.Confirm;
if i= 2 then
// Btn.OnClick := AZSHPUB.FClose(FForm);
end;
end;
// Btn.OnClick := azFrmconfirm.BitBtn1Click;
FForm.ShowModal;
end;procedure FClose(uForm:TForm);
begin
uForm.Close;
end;procedure Confirm(Sender: TObject);
beginend;
procedure CreateForm(Cap:String);
var FForm:TForm;
Lab :TLabel;
Edt :TEdit;
Btn :TBitBtn;
i :integer;
St :Tstrings;begin
//建立窗体;
St := Tstringlist.Create;
St.Clear ;
St.Add('审核');
St.Add('取消');
FForm := TForm.Create(nil);
with FForm do
begin
Caption := Cap;
Width := 300;
Height := 400;
Position := poDesktopCenter;
BorderStyle := bsSingle;
BorderIcons := [BiSystemMenu];
end;
//建立LABEL和BUTTON;
for i:= 1 to DM.ADOConfirm.FieldCount -1 do
begin
Lab := TLabel.Create(FForm);
Lab.Name := 'Label'+inttoStr(i);
Lab.Caption := DM.ADOConfirm.Fields [i].DisplayName ;
Lab.Top := Lab.Height + (i-1)*25;
Lab.Left := 30;
Lab.Width := 50;
Lab.AutoSize := false;
Lab.Parent := FForm;
Edt := TEdit.Create(FForm);
Edt.Name := 'Edit'+inttoStr(i);
Edt.Text := DM.ADOConfirm.Fields [i].AsString ;
Edt.Top := Lab.Top - 1;
Edt.Left := 120;
if (i in [1,2,DM.ADOConfirm.FieldCount-1,DM.ADOConfirm.FieldCount-2]) then
begin
Edt.ReadOnly := true;
Edt.Color := clScrollBar;
end;
Edt.Parent := FForm;
if i < 3 then
begin
Btn := TBitbtn.Create(FForm);
Btn.Name := 'TBitBtn'+inttostr(i);
Btn.Caption := St[i-1];
Btn.Top := 320;
Btn.Left := 60 + i*20 + Btn.Width ;
Btn.Parent := FForm;
// Btn.Click := FClose(Sender);
Btn.OnClick
if i= 1 then
Btn.OnClick := azFrmconfirm.BitBtn1Click;
//AZSHPUB.Confirm;
if i= 2 then
// Btn.OnClick := AZSHPUB.FClose(FForm);
end;
end;
// Btn.OnClick := azFrmconfirm.BitBtn1Click;
FForm.ShowModal;
end;procedure FClose(uForm:TForm);
begin
uForm.Close;
end;procedure Confirm(Sender: TObject);
beginend;
解决方案 »
- 极速浏览器源代码 谁编译成功过呀?求助
- fastreport中如何把masterData的普通的一行一行显示改成一列一列的显示?
- 中大,华工的计算机专业毕业生大概什么价位可以招到?
- 关于菜单设计的问题。
- 操做数据库时出现这样一个问题,如何解决
- 公司的头交了一个任务给我,让我解决以前公司做的三层结构的效率问题,还请大家帮忙发表下意见,谢谢
- 如何用delphi 连接windows共享文件夹(自动进行密码验证)?
- Delphi 2010 Datasnap WIN7 启动问题!
- 关于主窗体不显示的问题
- 关于一个写注册表的问题
- 冰天雪地赤身裸体求一SQL语句的写法,应该是属于数据更新吧~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 如何用ADOTable得到它某个字段的全部数据?
begin
//....
end;Btn.OnClick := MyBtnClick;
...
Btn.OnClick := AZSHPUB.FClose;
...procedure AZSHPUB.FClose(Sender:TObject);
begin
FForm.close;
end;
因此不能把FClose赋值给Btn.OnClick属性,你可以这样先构造一个对象TShareFun = class(TObject)
public
procedure FClose(Sender: TObject);
end;
完成对象中的FClose方法
procedure TShareFun.FClose(Sender: TObject)
begin
(Sender as TForm).Close;
end;在interface部分声明一个该对象
var
ShareFun: TShareFun;在本Unit的最后加上:
initlization
ShareFun := TShareFun.Create;
finalization
ShareFun.Free;
最后在你的CreateForm中使用:
Btn.OnClick := ShareFun.FClose;
procedure CreateForm(Cap:String);
var FForm:TForm;
Lab :TLabel;
Edt :TEdit;
Btn :TBitBtn;
i :integer;
St :Tstrings;
proceder MyBtnClick(Sender :TObject);
begin
//....
end;begin
//...
end;
按你的方法肯定可行,但是好麻烦!
并且procedure TShareFun.FClose(Sender: TObject)
begin
(Sender as TForm).Close;
end;
不能执行。因为SENDER是TBITBTN。
错误提示: Invalid class typecase!
begin
//....
end;procedure CreateForm(Cap:String);
var FForm:TForm;
Lab :TLabel;
Edt :TEdit;
Btn :TBitBtn;
i :integer;
St :Tstrings;
begin
//...
end;
感谢两位!
谁有更好的方法么?
下班前结贴!
begin
//....
end;
应该行了
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure btnclick(Sender: TObject);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.btnclick(Sender: TObject);
begin
showmessage('ok');
end;procedure TForm1.Button1Click(Sender: TObject);
var
btn: TButton;
begin
btn := TButton.Create(Form1);
btn.Caption := 'test';
btn.Width := 20;
btn.Height := 20;
btn.Top := 10;
btn.Left := 10;
btn.Parent := Form1;
btn.OnClick := btnclick;
end;end.