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

为啥调用过程这样就不行

2013-02-27 
为什么调用过程这样就不行。刚接触delpji,麻烦老师们指点下 谢谢。VB是在哪个过程都可以使用CALL的,怎么这里

为什么调用过程这样就不行。
刚接触delpji,麻烦老师们指点下 谢谢。

VB是在哪个过程都可以使用CALL的,怎么这里就不行了。

procedure TForm1.Button3Click(Sender: TObject);
begin
MakeDBGridColumnsAutoFixItsWidth(DBGrid1);
abc(DBGrid1);
end;


这个就可以通过,但是放在下面的过程就不行。请问为什么啊。

procedure TForm1.Button1Click(Sender: TObject);
begin



  ADOQuery1.Close;
  ADOQuery1.sql.text := 'select * from t_user';
  ADOQuery1.open;

MakeDBGridColumnsAutoFixItsWidth(DBGrid1);  //怎么在这里就不可以呢?
abc(DBGrid1);

 //dbgrid1.readonly := true;
end;
[解决办法]
用这份代码吧,自动调整DBGrid列宽:


function DBGridAutoSize(mDBGrid: TDBGrid; mOffset: Integer = 15): Boolean;
var
  I: Integer;
begin
  Result := False;
  if not Assigned(mDBGrid) then
    Exit;
  if not Assigned(mDBGrid.DataSource) then
    Exit;
  if not Assigned(mDBGrid.DataSource.DataSet) then
    Exit;
  if not mDBGrid.DataSource.DataSet.Active then
    Exit;
  for I := 0 to mDBGrid.Columns.Count - 1 do
  begin
    if not mDBGrid.Columns[I].Visible then
      Continue;
    DBGridRecordSize(mdbgrid.Columns[i]);
    if Assigned(mDBGrid.Columns[I].Field) then
      mDBGrid.Columns[I].Width := Max(mDBGrid.Columns[I].Field.Tag,
        mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption)) + mOffset
    else
      mDBGrid.Columns[I].Width :=
        mDBGrid.Canvas.TextWidth(mDBGrid.Columns[I].Title.Caption) + mOffset;
    mDBGrid.Refresh;
    //  Application.ProcessMessages;
  end;
  Result := True;
end; { DBGridAutoSize }

热点排行