View Full Version : اضافه کردن ردیف در dbgrid
programersa
چهارشنبه 21 آذر 1386, 08:44 صبح
سلام دوستان
من می خواهم یک ردیف به ستون dbgrid اضافه کنم که تعداد ردیفهای مربوط به رکوردهای من را بدهد و کد ذیل را تست کردم اما در همه ردیفهای من 1- را نشان می دهد لطفا من را راهنمایی کنید .
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 = 'No' then
DBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top, IntToStr(DataSource1.DataSet.RecNo));
end;
end;
موفق باشید.
farideh_en
چهارشنبه 21 آذر 1386, 09:53 صبح
با سلام دوست عزیز ابتدا آن ستون هایی که می خواهید Dbgrid آنهارو نمایش بده تو قسمت Columns اضافه کنید و ستون o-Column رو به هیچ فیلدی وصل نکنین و آخر کار هم کد زیرو تو رویداد DBGrid1DrawColumnCell بنویسن.انشاءالله که مشکلتون حل بشه.
procedure TForm4.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DataSource1.DataSet.RecNo > 0 then
begin
if DataCol= 0 then
TDBGrid(Sender).Canvas.TextRect(Rect, Rect.Left+ 1, Rect.Top+ 1, IntToStr(TDBGrid(Sender).DataSource.DataSet.RecNo) );
end;
end;
vcldeveloper
چهارشنبه 21 آذر 1386, 09:53 صبح
یک ستون جدید، به عنوان اولین ستون، به گرید اضافه کنید. و از کد زیر در رویداد OnDrawColumnCell استفاده کنید. Column.Index در کد زیر اندیس ستون مربوطه هست که از صفر شروع میشه.
with Sender as TDBGrid do
begin
if DataSource.DataSet.RecNo > 0 then
if Column.Index = 0 {First Column} then
Canvas.TextOut(Rect.Left + 2, Rect.Top, IntToStr(DataSource.DataSet.RecNo));
end;
programersa
چهارشنبه 21 آذر 1386, 11:55 صبح
سلام
ممنون از شما دوستان . اما وقتی break می ذارم کد DataSource.DataSet.RecNo برابر است با 1- . یکی از دوستان می گفت این فقط برای دیتا بیس اکسس است و من دیتا بیس ام sql است آیا به این ربط دارد ؟
موفق باشید.
vcldeveloper
چهارشنبه 21 آذر 1386, 22:45 عصر
یکی از دوستان می گفت این فقط برای دیتا بیس اکسس است و من دیتا بیس ام sql است آیا به این ربط دارد ؟
خیر.
از چی برای اتصال به بانک استفاده می کنید؟ آیا جدول را مستقیما باز می کنید، یا Query می نویسید؟ خصوصیات CursorLocation و CursorType بر روی چی تنظیم شدند؟
SYNDROME
پنج شنبه 22 آذر 1386, 08:57 صبح
چرا از رویداد OngetText برای نمایش ردیف رکوردها استفاده نمی کنی؟(برای اطلاعات بیشتر کلمه فوق را جستجو کنید)
موفق باشید
programersa
شنبه 24 آذر 1386, 09:56 صبح
سلام
ممنون از شما جناب آقای کشاورز . من از query استفاده کردم که جهت اتصال به DB از طریق یک alias که در odbc تعریف شده وصل می شود .
موفق باشید.
programersa
شنبه 24 آذر 1386, 09:58 صبح
سلام
با تشکر از شما دوست محترم SYNDROME . بنده این کلمه را search کردم اما نتیجه نگرفتم .
موفق باشید.
vcldeveloper
شنبه 24 آذر 1386, 10:42 صبح
من از query استفاده کردم که جهت اتصال به DB از طریق یک alias که در odbc تعریف شده وصل می شود .
چرا از ADO استفاده نمی کنید؟ کارایی بیشتری از BDE داره. من از BDE برای اتصال به SQL Server استفاده نکردم. با ADO هم به مشکلی که اشاره کردید، بر نخوردم.
programersa
شنبه 24 آذر 1386, 11:07 صبح
سلام
ممنون از شما . اما کل سیستم من با BDE کار شده است و در حال استفاده است بنابراین نمی توانم تغییری دهم .
موفق و پاینده باشید.
ali_abbasi22145
شنبه 24 آذر 1386, 11:31 صبح
این روش را مدتهاست در برنامه ام استفاده می کنم ومشکلی ندارد و ضمنا این مطلب را در برنامه های سودمند دلفی هم گذاشته بودم!
//add a Row Number in your DBGrid?
{+++++++++++++++++++++++++++++++++++
1. create new blank field in dbgrid
2. rename the title with 'No'
3. put this code in OnDrawColumncell
4. Now your Grid has a row number
++++++++++++++++++++++++++++++++++++
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 = 'No' then
DBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top, IntToStr(DataSource1.DataSet.RecNo));
end;
end;}
SYNDROME
شنبه 24 آذر 1386, 19:56 عصر
سلام
با تشکر از شما دوست محترم SYNDROME . بنده این کلمه را search کردم اما نتیجه نگرفتم .
موفق باشید.
به پستهای 5 و 6 این لینک نگاه کنید.
http://barnamenevis.org/forum/showthread.php?t=70061
موفق باشید
pazimi
دوشنبه 04 خرداد 1388, 09:21 صبح
من مي خواهم رديفي به گريد اضافه كنم ولي به صورتي كه با حذف يك رديف از گريد مشكل پيدا نكنم .لطفا كمك كنيد .
pazimi
دوشنبه 04 خرداد 1388, 10:26 صبح
سلام يكي اضافه كردن رديف در wwdbgrid را طوري كه با حذف يك سطر مشكل پيدا نكنه بگه .با تشكر
morteza saleh
چهارشنبه 06 خرداد 1388, 11:04 صبح
در قسمت لیست query یک فیلد از نوع Calculate ایجاد کن، سپس آن فیلد را در DBGrid ایجاد کرده و بهد در رویداد GetText فیلد جدید کد زیر را وارد کن:
Text := IntToStr(adoQuery.recNo)
دنیای دلفی
چهارشنبه 06 خرداد 1388, 15:36 عصر
كليه اين روشها تا زماني كار ميكنند كه از جدول يا كوري فيلتر نگرفته باشيد كه اگر گرفته باشيد با شماره هاي نا منظم رديف مواجه خواهيد شد
xboycooper
سه شنبه 27 مهر 1389, 09:28 صبح
سلام .
من از این کد تو برنامه استفاده کردم و بدون مشکل کار میکنه .
with Sender as TDBGrid do
begin
if DataSource.DataSet.RecNo > 0 then
if Column.Index = 0 {First Column} then
Canvas.TextOut(Rect.Left + 2, Rect.Top, IntToStr(DataSource.DataSet.RecNo));
end;
چطور میتونم این ستون رو در fastreport نشون بدم ؟
ممنون
khoshblagh
سه شنبه 27 مهر 1389, 09:46 صبح
سلام .
من از این کد تو برنامه استفاده کردم و بدون مشکل کار میکنه .
with Sender as TDBGrid do
begin
if DataSource.DataSet.RecNo > 0 then
if Column.Index = 0 {First Column} then
Canvas.TextOut(Rect.Left + 2, Rect.Top, IntToStr(DataSource.DataSet.RecNo));
end;
چطور میتونم این ستون رو در fastreport نشون بدم ؟
ممنون
با تشکر
این کد را در کدام رویداد نوشته اید؟ متشکرم
xboycooper
سه شنبه 27 مهر 1389, 10:49 صبح
با تشکر
این کد را در کدام رویداد نوشته اید؟ متشکرم
در DrawColumnCell نوشتم . همونطور که دوستان توی صفحه قبل گفته بودن ...
xboycooper
سه شنبه 27 مهر 1389, 15:25 عصر
سلام .
من از این کد تو برنامه استفاده کردم و بدون مشکل کار میکنه .
with Sender as TDBGrid do
begin
if DataSource.DataSet.RecNo > 0 then
if Column.Index = 0 {First Column} then
Canvas.TextOut(Rect.Left + 2, Rect.Top, IntToStr(DataSource.DataSet.RecNo));
end;چطور میتونم این ستون رو در fastreport نشون بدم ؟
ممنون
شرمنده ! به جای اون کار از دستور [Line#] توی Fast report استفاده کردم . کارم راه افتاد :لبخند:
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.