主窗体的调用代码:frmInfo.ShowDetailInfo(No); NO为整型。
子窗体:
procedure TfrmDInfo.ShowDetailInfo(No: Integer);
var
  i: Integer;
begin
  for i := 0 to MainForm.BoxPanel.Num - 1 do
  begin
    if MainForm.BoxPanel.BoxArray[i].No = No then
    begin
      Info := MainForm.BoxPanel.Array [i] ;
      Invalidate;
      break;
    end;
  end;
  show;
end;
BoxPanel是一个控件,非显示型。
Info是一个RECORD
BoxArray是 TINFO类型的数组。
总是执行到Info := MainForm.BoxPanel.Array [i] 出错。
我想可能是跟FORM的CREATE有关。
各位帮帮忙吧?
我不知道这样显示FORM时我的传参数方法是不是对,
是不是要用到CONSTRUCTOR???
怎么用?

解决方案 »

  1.   

    什么错误?!总是执行到Info := MainForm.BoxPanel.Array [i] 出错。.array[i]是什么?
      

  2.   

    老大,你的窗体是否创建了。
    例如
    var form1: TForm1;
    form1 := TForm1.Create(nil);
    try
      form1.ShowModal;
    finally
      form1.Free;
    end;
      

  3.   

    BoxPanel有没有创建?跟踪一下,找到问题在哪就行了
      

  4.   

    楼上众位:
    BoxPanel在这个函数体里用是没错的,跟踪时也有正确值。
    就是在把info(TINFO)赋值时出错。
    我在最前面加一个info := Tinfo.create(self)也不行。
    但最怪的是我更改了几次我的应用程序同名单元文件后,突然就不出错了,FORM显示也正常。但后来一不小心我又手动地修改了应用程序同名单元文件中对所用到的文件的引用部分,这个错误又出现了。现在看来就是我的TINFO初始化会出错,问题在哪里呢?是我的DELPHI不正常了吗?
      

  5.   

    还有就是一个dsdialog类型的窗体上的一个BITBTN,我想让它实现确定(OK)的功能,应怎么设置属性?