Hallo,
habe eine Access-Tabelle die in einem DBGrid ausgegeben wird. Damit die Spalten an der längsten ausgerichtet werden, folgender Code. Hat alles super funktioniert bis ich nun neue Felder hinzugefügt habe. Jetzt stürzt er nach meheren Durchläufen der makierten For-Schleife mit einer Zugriffsverletzung ab. Woran könnte das liegen? Jemand ne Idee???
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37:
| procedure SetGridColumnWidths(Grid: Tdbgrid); const DEFBORDER = 10; var temp, n: Integer; lmax: array[0..30] of Integer; begin with Grid do begin DataSource.DataSet.DisableControls; Canvas.Font := Font; for n := 0 to Columns.Count - 1 do lmax[n] := Canvas.TextWidth(Fields[n].FieldName) + DEFBORDER; <------------- Zugriffsverletzung grid.DataSource.DataSet.First; if grid.DataSource.DataSet.RecordCount > 1000 then begin Grid.DataSource.DataSet.EnableControls; exit; end; while not grid.DataSource.DataSet.EOF do begin for n := 0 to Columns.Count - 1 do begin temp := Canvas.TextWidth(trim(Columns[n].Field.DisplayText)) + DEFBORDER; if temp > lmax[n] then lmax[n] := temp; end; grid.DataSource.DataSet.Next; end; grid.DataSource.DataSet.First; for n := 0 to Columns.Count - 1 do if lmax[n] > 0 then Columns[n].Width := lmax[n]; Grid.DataSource.DataSet.EnableControls; end; end; |
Moderiert von
AXMD: Delphi-Tags hinzugefügt.