怎的在Form1中调用Form2里的带参数自定义procedure
怎样在Form1中调用Form2里的带参数自定义procedure。
各位高手,我有两个问题,请各位高手帮我看看如何解决。
第一个问题:
我想建立两个Form,在Form1中设置2个按钮(Add和Edit),在Form2中建立两个GroupBox,在这两个GroupBox中分别添加Label和Edit组件。目的是这样:
当单击Form1中的Add按钮时,调用Form2,同时将Form2中GroupBox1中TLabel组件除外的其它所有输入性质的组件的Enabled设为True,将Form2中GroupBox2中TLabel组件除外的其它所有输入性质的组件的Enabled设为False;
当单击Form1中的Edit按钮时,调用Form2,同时将Form2中GroupBox2中TLabel组件除外的其它所有输入性质的组件的Enabled设为True,将Form2中GroupBox1中TLabel组件除外的其它所有输入性质的组件的Enabled设为False。
(即:单击Form1中的Add、Edit按钮后,同时调用Form2,但Form2中的两个GroupBox内的组件的Enabled值相反)
问题:我觉得应该在Form2中编写“自定义事件”,但参数不会写。我写的代码如下所示,但运行后不起作用。
代码如下:
unit Form2;
……
public
{ Public declarations }
procedure SetComponentState(AGroupNum: TGroupBox);
implementation
{$R *.dfm}
uses Form1;
procedure TForm2.SetComponentState(AGroupBoxNum: Integer);
Var
ComTotal: Integer;
begin
IF AGroupBoxNum = 1 Then
begin
For ComTotal := 0 To GroupBox2.ControlCount -1 Do
begin
GroupBox2.Controls[ComTotal].Enabled := False;
end;
end;
IF AGroupBoxNum = 2 Then
begin
For ComTotal := 0 To GroupBox1.ControlCount -1 Do
begin
GroupBox1.Controls[ComTotal].Enabled := False;
end;
end;
end;
unit Unit1;
……
procedure TForm1.Button1Click(Sender: TObject);
begin
Try
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
Form2.Free;
Form2.SetComponentState(1);
Except
Form2.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Try
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
Form2.Free;
Form2.SetComponentState(2);
Except
Form2.Free;
end;
end;
第二个问题:
数据库表中,有“编号、日期、地点、检查人、内容、措施、复查日期、复查人、复查结果”等几个字段。其中“内容”、“措施”两个字段是对应的,有一条内容,就必有一条措施。并且,每次输入都会输入成如下这样:
编号 检查日期 地点 检查人 内容 措施 复查日期 其它字段省略
1 12-7-6 某地 某人 一条内容 一条措施 第二天或第三天
2 同上 同上 同上 与上不同 与上不同 第二天或第三天
3 同上 同上 同上 与上不同 与上不同 第二天或第三天
4 同上 另一地点 同上 一条内容 一条措施 第二天或第三天
各位高手,我有两个问题,请各位高手帮我看看如何解决。
第一个问题:
我想建立两个Form,在Form1中设置2个按钮(Add和Edit),在Form2中建立两个GroupBox,在这两个GroupBox中分别添加Label和Edit组件。目的是这样:
当单击Form1中的Add按钮时,调用Form2,同时将Form2中GroupBox1中TLabel组件除外的其它所有输入性质的组件的Enabled设为True,将Form2中GroupBox2中TLabel组件除外的其它所有输入性质的组件的Enabled设为False;
当单击Form1中的Edit按钮时,调用Form2,同时将Form2中GroupBox2中TLabel组件除外的其它所有输入性质的组件的Enabled设为True,将Form2中GroupBox1中TLabel组件除外的其它所有输入性质的组件的Enabled设为False。
(即:单击Form1中的Add、Edit按钮后,同时调用Form2,但Form2中的两个GroupBox内的组件的Enabled值相反)
问题:我觉得应该在Form2中编写“自定义事件”,但参数不会写。我写的代码如下所示,但运行后不起作用。
代码如下:
unit Form2;
……
public
{ Public declarations }
procedure SetComponentState(AGroupNum: TGroupBox);
implementation
{$R *.dfm}
uses Form1;
procedure TForm2.SetComponentState(AGroupBoxNum: Integer);
Var
ComTotal: Integer;
begin
IF AGroupBoxNum = 1 Then
begin
For ComTotal := 0 To GroupBox2.ControlCount -1 Do
begin
GroupBox2.Controls[ComTotal].Enabled := False;
end;
end;
IF AGroupBoxNum = 2 Then
begin
For ComTotal := 0 To GroupBox1.ControlCount -1 Do
begin
GroupBox1.Controls[ComTotal].Enabled := False;
end;
end;
end;
unit Unit1;
……
procedure TForm1.Button1Click(Sender: TObject);
begin
Try
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
Form2.Free;
Form2.SetComponentState(1);
Except
Form2.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Try
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
Form2.Free;
Form2.SetComponentState(2);
Except
Form2.Free;
end;
end;
第二个问题:
数据库表中,有“编号、日期、地点、检查人、内容、措施、复查日期、复查人、复查结果”等几个字段。其中“内容”、“措施”两个字段是对应的,有一条内容,就必有一条措施。并且,每次输入都会输入成如下这样:
编号 检查日期 地点 检查人 内容 措施 复查日期 其它字段省略
1 12-7-6 某地 某人 一条内容 一条措施 第二天或第三天
2 同上 同上 同上 与上不同 与上不同 第二天或第三天
3 同上 同上 同上 与上不同 与上不同 第二天或第三天
4 同上 另一地点 同上 一条内容 一条措施 第二天或第三天