From e993b0b5610689c385956095039318a78fb19699 Mon Sep 17 00:00:00 2001 From: jesus Date: Thu, 13 Aug 2009 19:22:41 +0000 Subject: [PATCH] LCL, fix AV in dbgrid AutoSizeColumns when dataset is inactive, issue #14239 git-svn-id: trunk@21218 - --- lcl/dbgrids.pas | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lcl/dbgrids.pas b/lcl/dbgrids.pas index 6cf0a0a5cd..6502c80e7d 100644 --- a/lcl/dbgrids.pas +++ b/lcl/dbgrids.pas @@ -1003,6 +1003,9 @@ begin FixedCols := FixedCols - 1; end; + if (dgAutoSizeColumns in ChangedOptions) then begin + Exclude(FGridStatus, gsAutoSized); + end; inherited Options := OldOptions; @@ -1502,6 +1505,7 @@ end; procedure TCustomDBGrid.UpdateAutoSizeColumns; var ACol,ARow,w: Integer; + DatalinkActive: boolean; CurActiveRecord: Integer; Field: TField; ColWidth: Integer; @@ -1513,7 +1517,9 @@ begin if gsAutoSized in GridStatus then exit; - CurActiveRecord := FDatalink.ActiveRecord; + DatalinkActive := FDatalink.Active; + if DatalinkActive then + CurActiveRecord := FDatalink.ActiveRecord; tmpCanvas := GetWorkingCanvas(Canvas); try for aCol:=FixedCols to ColCount-1 do begin @@ -1530,7 +1536,7 @@ begin tmpCanvas.Font := Font; end; - if Field<>nil then + if (Field<>nil) and DatalinkActive then for ARow := FixedRows to RowCount-1 do begin FDatalink.ActiveRecord := ARow - FixedRows; @@ -1554,7 +1560,8 @@ begin if TmpCanvas<>Canvas then FreeWorkingCanvas(tmpCanvas); - FDatalink.ActiveRecord := CurActiveRecord; + if DatalinkActive then + FDatalink.ActiveRecord := CurActiveRecord; include(FGridStatus, gsAutoSized); end;