ورود

View Full Version : سوال: تنظیم اندازه DATA GRIDE؟



majidmir
دوشنبه 29 شهریور 1389, 15:51 عصر
سلام
چطوری باید datagraid رو تنظیم کنم که اندازش به اندازه ای که طراحیش کردم در بیاد و اسکرول هاش نیان ؟

MOJTABAATEFEH
دوشنبه 29 شهریور 1389, 16:25 عصر
سلام
چطوری باید datagraid رو تنظیم کنم که اندازش به اندازه ای که طراحیش کردم در بیاد و اسکرول هاش نیان ؟


دوست عزیز با کد زیر می تونید ستون های DBgrid رو به صورت Autosize فیت کنید


procedure SetGridColumnWidths(Grid: Tdbgrid);
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
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
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];
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SetGridColumnWidths(dbgrid3);
end;


موفق باشید

majidmir
دوشنبه 29 شهریور 1389, 16:48 عصر
دوست عزیز با کد زیر می تونید ستون های DBgrid رو به صورت Autosize فیت کنید


procedure SetGridColumnWidths(Grid: Tdbgrid);
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
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
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];
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SetGridColumnWidths(dbgrid3);
end;


موفق باشید


دوست عزیز از لطفتون ممنون !
با این کد باید کل فرم هامو از نو طراحی کنم ! کدی یا خاصیتی بهم بدید که بتونم برای هر فیلد یه اندازه ثابت در نظر بگیرم ؟
در ضمن اگه من بتونم اندازه گرید رو ثابت کنم اونوقت خیلی بهتره . برای مثال توی عکس زیر نگاه کنید می خوام جوری تنظیمش کنم که اولا این اسکرول های از بین بره . دوما تمام فیلد ها توی همین کادر با همین اندازه نمایش داده بشن !!!!

MOJTABAATEFEH
دوشنبه 29 شهریور 1389, 17:02 عصر
دوست عزیز کد رو من امتحان کردم مشکل نداره برای اینکار تمام فیلدهاتون رو توی FieldEditor خود DBgrid اضافه کنید و با خاصیت Width تنظیم کنید امتحان کنید نتیجه رو اعلام کنید

موفق باشید