PDA

View Full Version : تنظیم DBgrid



bkardan
چهارشنبه 19 بهمن 1384, 11:48 صبح
سلام
من تو فرمم یه DBGrid استفاده کردم چون طول فیلد هام تو table زیاده موقع نمایش تو grid هم ستونها اونقد بلند میشن که احتیاج به اسکرول هست . اگه بخوام این حالت رو از بین ببرم از کدوم خاصیت grid باید استفاده کنم . طوری باشه که ستونی که نمایش داده میشه به اندازه و متناسب با طول رشته ای باشه که داخلش ذخیره شده.
نمی دونم متوجه شدین یانه ...
تشکر

bkardan
پنج شنبه 20 بهمن 1384, 10:30 صبح
سوال سختی بود یا من بد مطرح کردم ؟ یکی یه چیزی بگه دیگه .

delphi-sql
شنبه 22 بهمن 1384, 23:22 عصر
az grid wol to wol estefade kon

mzjahromi
یک شنبه 23 بهمن 1384, 08:40 صبح
یک راه اینه که بیای طول ستونها رو زمان طراحی مشخص کنی. (یعنی 64 نباشه)
یک راه دیگه هم استفاده از این کد هست


procedure SetGridColumnWidths(Grid: Tdbgrid);
const
DEFBORDER = 10;
var
temp, n: Integer;
lmax: array [0..60] 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;
temp := Canvas.TextWidth(trim(Columns[n].Title.Caption)) + 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 }

این کد رو بذار تو Ondrawcolumncell

oghab
یک شنبه 23 بهمن 1384, 09:41 صبح
سلام
الان دلفی نصب ندارم و قدم به قدمش دقیق تو ذهنم نیست. ولی روی خصوصیت columns از dbgird برو، ... را بزن . بعد در پنجره جدید راست کلیک کن add all fields بزن و بعد هر فیلد را انتخاب کن و در پنجره خوصیصات witdh اون را یه مقدار متناسب بده. البته اینجوری یه مقدار ثابت میدی که فکر می کنی مناسبه ولی اگه میخوای با توجه به مقادیر ذخیره شده در فیلد این طول تغییر کنه بهتره از روش آقای ذوالقدر استفاده کنی.

bkardan
دوشنبه 24 بهمن 1384, 23:15 عصر
ممنونم از راهنمایی همه دوستان ....

babak869
سه شنبه 25 بهمن 1384, 15:15 عصر
برای ذخیره وضعیت و یا لود کردن یه وضعیت جدید در DBGrid ازین کد استفاده کن


DBGrid1.Columns.SaveToFile('YourFile.Ini');
DBGrid1.Columns.LoadFromFile('YourFile.Ini');

bkardan
سه شنبه 25 بهمن 1384, 21:38 عصر
جناب آقای ذوالقدر کدی که نوشتین درست کار رو انجام میده اما بعد از اجرا برنامه به حالت کما میره .... کلا از کار می افته . مشکلش چی میتونه باشه؟

mzjahromi
چهارشنبه 26 بهمن 1384, 07:54 صبح
من این کد رو استفاده میکنم. مشکلی نداره. Trace کنید ببینید کجا قفل میشه.

jafari1
جمعه 04 فروردین 1385, 00:41 صبح
با سلام 2 سوال در مورد dbgrid دارم که اگر دوستان زحمت بکشند پاسخ دهند متشکر میشوم
1- چگونه در موقع درج در یک ستون از dbgrid بتوان صفحه کلید را از راست نویس به چپ نویس تغییر دهیم
2- بسته به شرایط یک ستون از روی آن پرش کنیم یعنی اشاره گر با tab روی آن ستون نرود (البته بسته به شرایط سطری که در حال ادیت است)

mzjahromi
جمعه 04 فروردین 1385, 15:13 عصر
2- بسته به شرایط یک ستون از روی آن پرش کنیم یعنی اشاره گر با tab روی آن ستون نرود (البته بسته به شرایط سطری که در حال ادیت است)

با Selected Index


if Key=#13 Then
TDBGrid(Sender).SelectedIndex:=TDBGrid(Sender).Sel ectedIndex+1;

Ahmad Chehreghani
شنبه 09 اردیبهشت 1385, 22:37 عصر
چرا تو گرید این کارو می کنی
تو تیبل رو فیلدت display with رو بزار درست میشه
مثلا بزاری 3 اندازه 3 کاراکتر برات جا باز می کنه

jafari1
سه شنبه 19 اردیبهشت 1385, 22:10 عصر
خدمت آقای ذوالقدر - سلام
اگر در مورد DbgridEh و تنظیمات آن تجربه دارید مرا راهنمایی فرمایید( فیلتر و lookupdisplay
) ضمنا بنده نسخه 4 آنرا دارم

mzjahromi
چهارشنبه 20 اردیبهشت 1385, 06:58 صبح
1- باید با خواص Dataset بازی کنی روش دو بار کلیک کن فیلد مورد نظر رو انتخاب کن و ...
2-قبلا هم این سوال مطرح شده بود. با استفاده از خاصیت SelectedIndex

jafari1
چهارشنبه 20 اردیبهشت 1385, 21:22 عصر
با تشکر از آقای ذوالقدر شاید منظورم را درست نگفتم منظورم dbgridEH میباشد که در زیر عنوان هر ستون میتوان فیلتر گذاشت و نیز Lookup disply آن که خود مانند یک گرید است لطفا به تصویر ضمیمه توجه کنید