سلام؛
همونطور که میدونید DBGrid عنصریه که کم و بیش در همه برنامه های بانک اطلاعاتی باهاش سر و کار داریم و یکی از اجزاییه که خیلی سوالا در موردش مطرح میشه و تو این سایتم میبینیم که همیشه سوالاتی در مورد این کنترل پرکاربرد مطرح میشه.
تصمیم داریم در این تاپیک منحصرا به بحث در مورد انواع ویژگی ها و ترفندهای DBGrid بپردازیم.
از دوستان عزیز خواهشمندم هر گونه کد یا ترفند و هرگونه اطلاعاتی که در مورد DBGrid دارند رو در این تاپیک قرار بدن.
فقط بازم میگم این تاپیک منحصرا در مورد این کنترل بحث میکنه و اگه دیگه چیزی باقی نموند بعدا به Grid های دیگه میپردازیم.
برای اولین پست هم از پایه DBGrid شروع میکنم :
.................................................. ........................
TDBGrid یکی از عناصر دیتا کنترله که اطلاعات یک منبع رو بصورت جدولی نشون میده. این اطلاعات میتونه اطلاعات یه Table، اطلاعات حاصل از یه SQL و با یه Stored Procedure باشه. توی این عنصر ستونها مطابق فیلدها و سطرها منطبق بر رکوردها هست. خاصیت DataSource این عنصر رو به منبع داده متصل میکنه و با Active شدن دیتاست، میتونیم اطلاعات رو ببینیم. تقریبا 3 عامل بر نمایش رکوردها در یک عنصر Grid تاثیر داره :
1- وجود ستونهای ثابت تعریف شده برای یک Grid با استفاده از ویرایشگر ستونها.
2- ایجاد فیلد ثابت برای مجموعه داده نمایش شده.
3- خاصیت ObjectView از دیتاست برای گریدهایی که فیلدهای آرایه ای رو نشون میدن.
یک کنترل گرید، خاصیتی بنام Columns دارد که از نوع TDBGridColumns می باشد. TDBGridColumns خود یک مجموعه از TColumn هست که تمام ستون های یه کنترل Grid رو نشون میده. در زمان طراحی میتونبید خواص ستونها رو همونطوری که میخواهید تنظیم کنید. یا از خاصیت Columns جهت دستیابی به خاصیتها، رویدادها و متدهای TDBGridColumns در Run-Time استفاده کنید.
خاصیت State از خاصیت Columns برای یک Grid، وجود ستونهای ثابت را مشخص میکنه (DBGrid.Columns.State). این خاصیت یک خاصیت زمان اجراست و مقدار پیش فرض اون CSDefault هست به معنی عدم وجود ستونهای ثابت. در این حالت نحوه نمایش رکوردها توسط خاصییت فیلدها در دیتاست ما مشخص میشه و ربطی به DBGrid نداره. ستونها بصورت دینامیک مطابق فیلدهای قابل نمایش Dataset ما ایجاد میشن و ترتیب ستونها در گرید هم مطابق با ترتیب فیلدها در Dataset هست. کنترل DBGrid بصورت دینامیک و پویا عمل میکنه و میتونیم در هر لحظه اطلاعات رو نشون بدیم. مثلا در یک لحظه اون رو به یه Table وصل کنیم و لحظه ای بعد اون رو به یه Query و لحظه ای دیگه به یه Stored Procedure.
خواص ستونهای پویا فقط تا زمانی وجود دارند که یک ستون با یک فیلد خاص مرتبط باشد. مثلا تغییر خاصیت Width یک ستون، مقدار خاصیت Display Width یک فیلد مرتبط با اون ستون رو عوض میکنه.
وقتی ستونهای ثابت تعریف میکنید اونا خواص خودشون رو از فیلدهای مرتبط بدست میارن مگر اینکه شما خودتون خواص ستونا رو طوری که میخواهید تغییر بدید. مثلا عنوان یک ستون متغیره ولی اگه عنوان یه ستون رو مقداردهی کنید دیگه اون عنوان ستون به خاصیت Display Label فیلد شما در Dataset وابسته نیست.
توجه کنید که یک ستون ثابت میتونه وابسته به یه فیلد نباشه. در اینصورت خاصیت FieldName اون خالی خواهد بود یا نام فیلد منطبق بر هیچکدوم از فیلدهای دیتاست نباشه که در اینصورت ستونها بصورت خالی رسم خواهند شد. شما میتونید از این ستونهای خالی استفاده کرده و مثلا در اونا تصویر خاصی را که حالت داده های شما را بیشتر توصیف کنه نمایش بدید. برای اینکار باید متدهای رسم پیش فرضهای سلولهای گرید خودتون رو بازنویسی کنید. میتونید چند ستون ثابت رو به یه فیلد مرتبط کنید.
چون لازم نیست ستونهای ثابت حتما به یه فیلد متصل باشند و چون چندین ستون میتونه به یه فیلد وصل بشه، خاصیت FieldCount یک Grid میتونه کوچکتر یا مساوی با تعداد ستونهای Grid شما باشه. همچنین اگه ستون انتخاب شده به هیچ فیلدی مرتبط نباشه خاصیت SelectedField در اینجا Null و خاصیت SelectedIndex برابر با 1- خواهد بود.
در پست بعد ادامه می دیم.....