ورود

View Full Version : تغییر عرض ستونهای DBGrid



SADAF
سه شنبه 03 اردیبهشت 1387, 12:49 عصر
سلام به همه دوستان
می خواهم وقتی روی کناره ی عنوان ستون DBGrid دوبار کلیک می کنم عرض آن ستون با توجه به ماکسیمم داده ای که در ان ستون وارد شده است باز و بسته شود. (یعنی عرض ستون با توجه به داده های موجود در آن فیلد، حالت AutoSize داشته باشد)
چگونه اینکار را انجام دهم ؟

B-Vedadian
یک شنبه 08 اردیبهشت 1387, 08:49 صبح
از کد زیر برای بدست آوردن عرض هر ستون کمک بگیرید


function GetColumnWidth(AGrid: TStringGrid; Col: Integer): Integer;
var
i: Integer;
begin
Result := 0;
with AGrid do
for i := 0 to RowCount - 1 do
if Result < Canvas.TextWidth(Cells[Col, i]) then
Result := Canvas.TextWidth(Cells[Col, i]);
end;


یک حاشیه 5 پیکسلی هم میتونه کمک کنه.:چشمک:

SADAF
سه شنبه 10 اردیبهشت 1387, 14:54 عصر
خيلي خيلي متشكرم.
ولي من StringGrid ندارم. DBGrid دارم.
ولي به هر حال از ايده اي كه داديد ممنونم . چنين كاري رو در DBGrid هم انجام دادم. ولي فكر مي كردم راه سريعتري براي اينكار در مشخصات خود كامپوونت وجود داشته باشه (چون وقتي تعداد ركوردها زياد است تاخير كار به چشم مي آيد !!)

B-Vedadian
سه شنبه 10 اردیبهشت 1387, 21:59 عصر
حق با شماست. اين جوري اصلاحش کنيد


function GetColumnWidth(AGrid: TCustomGrid; Col: Integer): Integer;
var
i: Integer;
begin
Result := 0;
with AGrid do
for i := TopRow to TopRow + VisibleRowCount - 1 do
if Result < Canvas.TextWidth(Cells[Col, i]) then
Result := Canvas.TextWidth(Cells[Col, i]);
end;

skmkh6056
چهارشنبه 11 اردیبهشت 1387, 08:19 صبح
TopRow, VisibleRowCount و چیست. لطفا توضیح دهید. و تشکر از زحماتتون

B-Vedadian
چهارشنبه 11 اردیبهشت 1387, 08:23 صبح
به Help دلفی مراجعه کنید خوب توضیح داده.

TopRow شماره اولین سطری از یک CustomGrid که دیده میشه. VisibleRowCount تعداد سطرهایی از CustomGrid که دیده میشن.

SADAF
چهارشنبه 11 اردیبهشت 1387, 14:58 عصر
متشكرم.
ولي TCustomGrid مشخصه Cells نداره !

B-Vedadian
چهارشنبه 11 اردیبهشت 1387, 19:46 عصر
مزش به همينه ديگه!

مهم اينه که با يک تغيير کوچيک کار ميکنه. کافيه بجاي همين TCustomGrid يا TStringGrid بذاريد يا TDBGrid...