PDA

View Full Version : اضافه شدن ستون ردیف به دی بی گرید



tikzahraaran
دوشنبه 03 تیر 1392, 10:47 صبح
با سلام
من یک دی بی گرید دارم که اطلاعاتش را از داخل اس کیو ال می خواند و همچنین داده های تکراری را فیلتر کرده و یک از آنها را نشان می دهد حالا من می خواهم که این اطلاعات را به به همراه شماره ردیف نشان دهد لطفا کمک کنید که چگونه یک ستون شماره ردیف در دی بی گرید ایجاد کنم
با تشکر

یوسف زالی
دوشنبه 03 تیر 1392, 11:53 صبح
سلام.
در دیتاست مربوطه این کار رو کنید.
دوبار روش کلیک کنید و فیلد هایی رو که می خواهید اد کنید. می تونید فیلد های محاسباتی هم اضافه کنید که در رویداد OnCalc دیتاست مقدار دهی می شند، می تونید این مقدار رو برابر ردیف قرار بدید.

حسین خانی
دوشنبه 03 تیر 1392, 12:55 عصر
سلام

1. ابتدا روی DBGrid دابل کلیک کنید و یه ستون جدید اضافه کنید به لیست‏ و Caption اون ستون رو "ردیف" بزارید

2. از این کد استفاده کنید:

procedure Tform1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DataSource1.DataSet.RecNo > 0 then
begin
if Column.Title.Caption = 'ردیف' then
DBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top, IntToStr(DataSource1.DataSet.RecNo));
end;
end;

موفق باشید ...

یوسف زالی
دوشنبه 03 تیر 1392, 14:27 عصر
از این کد استفاده کنید:

:متعجب:

روش خوبی نیست اصلا.
شما دارید روی یک استرینگ شرط می گذارید اون هم در گرید؟؟؟؟!!
اگر خواست محتویات دیتاست رو پرینت بگیره یا تنظیم چاپ کنه یا ارسال به اکسل؟!
اگر دو تا گرید به دیتاست متصل بود؟..
از طرفی نوشتن روی Canvas گرید؟!
اصلا فکر جالبی نیست دوست من.

حسین خانی
پنج شنبه 06 تیر 1392, 09:25 صبح
با سلام


سلام.
در دیتاست مربوطه این کار رو کنید.
دوبار روش کلیک کنید و فیلد هایی رو که می خواهید اد کنید. می تونید فیلد های محاسباتی هم اضافه کنید که در رویداد OnCalc دیتاست مقدار دهی می شند، می تونید این مقدار رو برابر ردیف قرار بدید.

این تنظیم و دقیق تر میتونید بگید که کجاست؟

یوسف زالی
پنج شنبه 06 تیر 1392, 13:02 عصر
روی دیتاست دوبار کلیک کنید (مثلا ADOTable)
با راست کلیک روی این پنجره که باز شد فیلد های خودتون رو اضافه کنید (add all fields)
مجددا با راست کلیک گزینه new field رو انتخاب کنید.
یک اسم بهش بدید (مثلا clRow). نوعش integer و field type رو هم calculated انتخاب کنید.
ok کنید.
حالا در رویداد OnCalcFields دیتاست مثلا این کد رو بنویسید:


ADOTable1clRow.Value := ADOTable1.RecordSet.AbsolutePosition