我在主窗体(FormMain)中用DBGIRD显示若干条记录,现在我希望能双击某一行记录,能弹出个新窗体(FormShow)的详细信息。记录的标识,我在当前窗体已经读到,请问,怎么样,把这个记录标识传到我所要的新窗体里?我已经定义了一个public变量StuID(String类型),而且两边都USES了,但编译时总会出错,错误是在新窗体FormShow.pas里,说没有定义变量StuID。我试过多种办法都得不到解决,还望高手指点。感激~

解决方案 »

  1.   

    在form2中的public中写如下代码:
    function ShowData(ID: Integer): Boolean;如下实现:
    begin
      LoadData(ID);  将数据库中的信息载入到界面上
      result:=ShowModal=mrOK;
    end;在formMain中的双击中写如下代码:
    begin
      form2.ShowData(ID);
    end;
      

  2.   

    LoadData(ID)如何定义?
    怎么样载入到界面?谢谢
      

  3.   

    var     Dhs : String ;
      Dhs := DbGridEh1.SelectedField.AsString;
      

  4.   

    我就是这样读的,
    在当前窗体,Dhs里有值,但在新窗体里调用时,值是空。不知道是怎么回事?
      

  5.   


      Dhs := DbGridEh1.SelectedField.AsString;
      with TForm2.Create(Application) do
      begin
        ShowModal;
      end;Unit2 :  TForm2.FormCreate :  with ADOQuery1 do
      begin
        Close;
        Sql.Text := Trim(s) + '  where  yhspc_lsh = ''' + Dhs + '''';
        Open;
      end ;
      

  6.   

    当然可以~主窗体内双击DBGrid的代码如下:
    procedure TFormMain.DBGridMainDblClick(Sender: TObject);
    begin
      StuShowID:=DBGridMain.DataSource.DataSet.FieldByName('StuId').asstring;
      //Edit00.Text:= StuShowID;
      FormStuShow.ShowModal;end;新窗体的:
    procedure TFormStuShow.FormCreate(Sender: TObject);
    begin
      EditTest.Text:= StuShowID; //运行后,这里Edit里的文本显示为空:(
      //EditTest.Text:= '999';
    end;
      

  7.   

    我也觉得奇怪:(
    算了,就这么结吧,我再看看,想想其他办法,你有QQ/ICQ吗?
    有机会还想再向你请教
      

  8.   

    [email protected] 你的呢 ?
      

  9.   

    这应该不是一个问题,你再好好检查检查,Good Luck !