السلام عليكــم ورحمـة الله وبركاتــه
كثيرة هي المشاكل التي تنجم عن عدم قدرتنا عل وضع حد ثابت لعرض أعمدة الـــ
dbgrid
نظرا لتغير المعطيات داخلها لذلك فما رأيك حين تجعل الــــ
dbgrid
يغير من عرض أعمدته بالنظر إلى محتواها إليكم الكود إخواني و أرجو أن تعم الفائدة.
const
DEFBORDER = 10;
var
temp, n: Integer;
lmax: array [0..30] of Integer;
begin
with Grid do
begin
Canvas.Font := Font;
for n := 0 to Columns.Count - 1 do
//if columns[n].visible then
lmax[n] := Canvas.TextWidth(Fields[n].FieldName) + DEFBORDER;
grid.DataSource.DataSet.First;
while not grid.DataSource.DataSet.EOF do
begin
for n := 0 to Columns.Count - 1 do
begin
//if columns[n].visible then begin
temp := Canvas.TextWidth(trim(Columns[n].Field.DisplayText)) + DEFBORDER;
if temp > lmax[n] then lmax[n] := temp;
//end; { if }
end; {for}
grid.DataSource.DataSet.Next;
end; { while }
grid.DataSource.DataSet.First;
for n := 0 to Columns.Count - 1 do
if lmax[n] > 0 then
Columns[n].Width := lmax[n];
end; { With }
end; {SetGridColumnWidths }
procedure TForm1.Button1Click(Sender: TObject);
begin
SetGridColumnWidths(dbgrid3);
end;
procedure SetGridColumnWidths(Grid: Tdbgrid);