因为我程序中DBGrid的列名是动态获到的,所以我根椐获得的列名称的长度来指定的列宽,但是当查询结果出来时,很多结果超过了列宽,这时想拖大点列宽都不可以,有没有什么方法可以自动让其适应列宽啊?另一个问题 ,如何判断一个窗体是否已经处于开启状态?谢谢

解决方案 »

  1.   

    1.dbgrid要自动适应列宽很麻烦,需要在数据集的afteropen事件中先判断取得数据的长度,建议你用DbgridEH控件;
    2.不太懂你的意思?是不是说已经创建了窗体,是的话可以用if assigned(窗体名)判断
      

  2.   


    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
        with DBGrid1 do
        begin
            if not VarIsNull(Column.Field.Value) then
                if Column.Width<(4+Canvas.TextWidth(Column.Field.DisplayText)) then
                    Column.Width := 4 + Canvas.TextWidth(Column.Field.DisplayText);
        end;
    end;