procedure TForm1.FormCreate(Sender: TObject);
var
  sqlstr:string;
begin
if not mHDCon.Connected then begin
    try
      mHDCon.Open;
    except
      ShowMessage('连接数据库失败');
      close;
      exit;
    end;
  end;  mADOQueryHDLIST.Close;
  mADOQueryHDLIST.SQL.Clear;
  sqlstr:='select * from spirit_patient t';  mADOQueryHDLIST.SQL.Text:=sqlstr;
  mADOQueryHDLIST.Open;
  InitDBGrid(mDBGrid);
  if mADOQueryHDLIST.RecordCount=0 then exit;
end;function TForm1.InitDBGrid(dbgrid: TDBGrid): boolean;
procedure SetColumn(FieldName,Title:string;Width:integer;Alignment:TAlignment;TitleAlignment:TAlignment);
  var
    AddColumn: TColumn;
  begin
    AddColumn:=dbgrid.Columns.Add;
    AddColumn.FieldName:=FieldName;
    AddColumn.Title.Caption:=Title;
    AddColumn.Width:= Width;
    AddColumn.Grid.BiDiMode:=BiDiMode;
    AddColumn.Alignment:=Alignment  ;
    AddColumn.Title.Alignment:=TitleAlignment  ;
  end;
begin
  dbgrid.Columns.Clear;
  SetColumn('PATIENT_ID','诊疗号',85,taCenter,taCenter);
  SetColumn('HIS_PATIENT_ID','住院号',130,taCenter,taCenter);
  SetColumn('NAME','姓名',70,taCenter,taCenter);
  SetColumn('GENDER','性别',45,taCenter,taCenter);
end;InitDBGrid的方法没有实现,但是调用了。SetColumn的方法实现了,但是没有调用。 数据能出来是怎么回事?

解决方案 »

  1.   

    看错了,SetColumn是InitGrid的内部方法,InitGrid也实现了,下面就是InitGrid的实现
    begin
      dbgrid.Columns.Clear;
      SetColumn('PATIENT_ID','诊疗号',85,taCenter,taCenter);
      SetColumn('HIS_PATIENT_ID','住院号',130,taCenter,taCenter);
      SetColumn('NAME','姓名',70,taCenter,taCenter);
      SetColumn('GENDER','性别',45,taCenter,taCenter);
    end;
      

  2.   

    估计是这样,SetColumn是InitGrid的内部方法
      

  3.   

    你们是怎么看出SetColumn是InitGrid的内部方法  除了dbgrid: TDBGrid貌似有一点关联之外  其他我看不出来、、、、 InitDBGrid 也不知道delphi本身是不是就有这个方法?
      

  4.   

    看代码应该是函数嵌套, 既procedure SetColumn 是嵌套在function TForm1.InitDBGrid 只要把格式对齐很容易看出。既会向下一样function TForm1.InitDBGrid(dbgrid: TDBGrid): boolean;           
      procedure SetColumn    
      var
      AddColumn: TColumn;
      begin
      AddColumn:=dbgrid.Columns.Add;
      ........  end;
    begin
    ......end;
      

  5.   

    方法内部的方法procedure TheProc(str:string);
    var
      a:integer;
    //----------
    procedure oneProc(m:integer);
    var
      b:integer;
    beginend;
    //----------
    beginend;