View Full Version : مشکل با dbgrid
rasoolgh
پنج شنبه 03 آبان 1386, 11:41 صبح
سلام
در یک dbgrid وقتی تعداد ستونها زیاد باشند یک اسکرول افقی میذاره
من میخواهم بدونم ستونهایی که الان دارن نمایش داده میشن (اونایی که الان اسکرول نشدن) کدوم ستونها هستن مثلا اگر 7 ستون داریم و 4تاشو نشون میده بقیه رو میشه اسکرول کرد من اندیس اون 4تای قابل نمایش رو میخوام
اگر گسی بلده خواهش میکنم جواب بده
با تشکر
vcldeveloper
پنج شنبه 03 آبان 1386, 12:22 عصر
پهنای DBGrid (خصوصیت Width) را در نظر بگیرید، پهنای هر یک از ستون ها را با هم جمع ببیندید تا اندازه مجموع پهنای ستون ها مساوی یا بزرگتر از پهنای DBGrid بشه. هر تعداد ستونی که تا رسیدن به این مقدار، پهنایشان با هم جمع شده، نشان دهنده تعداد ستون های در حال نمایش است، البته اگر اسکرول کنید، باید مبنای شمارش تعداد ستون ها را از آخرین ستون نمایش داده شده حساب کنید.
rasoolgh
دوشنبه 07 آبان 1386, 14:32 عصر
آقای کشاورز من چطور آخرین ستون نمایش داده شده رو پیدا کنم
البته من مشکلم رو یه جور دیگه حل کردم
یه مجموعه تعریف کردم از اندیس ستونها که هروقت رویداد drawcolumnCell رخ داده میشه او مجموعه رو از ستونهایی که draw میشوند پر میکنم و هروقت dbGrid اسکرول میشود مجموعه را خالی میکنم ولی برای اجرای کامل drawcolumnCell با repaint رو اجرا کنم که یه حالت پرش ایجاد میکنه که زیاد جالب نیست
حالا آیا راه دیگه ای برای اجرای drawcolumnCell برای تمام ستونها است؟
A.Nemati
دوشنبه 07 آبان 1386, 16:46 عصر
میتونی گرید رو داخل یک ScrollBar بیاندازی و موقع ساخته شدن فرم، عرض گرید رو به اندازه مجموع عرضهای فیلدها + عرض ایندیکیتور قرار بدی.
اونوقت به راحتی میتونی از مقدار خاصیت ScrollBox1.HorzScrollBar.Position، بفهمی که کدوم فیلدها نشان داده شدن، تازه میتونی به اول فیلد مورد نظر خودت هم پرش کنی.
اگه نتونستم موضوع را خوب توضیح بدم، بگو که یک برنامه کوچیک نمونه برات بفرستم.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.