首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

怎么在Form1中调用Form2里的带参数自定义procedure

2012-08-16 
怎样在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 同上 另一地点 同上 一条内容 一条措施 第二天或第三天
  5 同上 同上 同上 与上不同 与上不同 第二天或第三天
  6 12-7-7 某地 某人 一条内容 一条措施 第二天或第三天
  7 同上 同上 同上 与上不同 与上不同 第二天或第三天

  以上表中,即:每天会去不同地点检查(最少1个地点,但这种情况几乎没有),每一个地点都会有多条内容,每一条内容都会对应一条措施。(同时,日期不同的时候,即便内容、措施一样,也必须为一条新记录)复查日期为检查日期的第2或第3、4天。

  请问各位高手:
  2、这样的表怎么做主表和从表?
  3、由于“每天会去不同地点检查(最少1个地点,但这种情况几乎没有),每一个地点都会有多条内容,每一条内容都会对应一条措施。”。如果每输入一条就保存一条,太麻烦(每天都会有不少于10条需要输入),怎样设计窗体使输入过程简单?是否能够每次输入都先输入多条记录,然后一起保存?如能,怎样实现?

[解决办法]
Form2.ShowModal;
Form2.Free;
Form2.SetComponentState(1);

都释放了还怎么设置

Form2.SetComponentState(1);
Form2.ShowModal;
Form2.Free;
[解决办法]
函数声明和实际不相符呀
procedure SetComponentState(AGroupNum: TGroupBox);
procedure TForm2.SetComponentState(AGroupBoxNum: Integer);

Delphi(Pascal) code
可以改成这样:private procedure SetComponentState;public AGroupBoxNum:Integer;implementation{$R *.dfm}procedure TForm2.SetComponentState;begin ...end;procedure TForm2.FormShow(Sender: TObject);begin SetComponentState;end;其它窗体调用:try  Application.CreateForm(TForm2, Form2);  Form2.AGroupBoxNum:=0;  Form2.ShowModal; finally  Form2.Free; end; 

热点排行