View Full Version : DBGrid شفاف
morteza saleh
سه شنبه 24 اردیبهشت 1387, 13:57 عصر
سلام عليكم،
بنده مشكلي دارم، اونم اينه كه نمي تونم پس زمينه DBGrid را شفاف كنم.
از هر كسي كه اين تجربه را دارد خواهش مي كنم دست اين حقير را نيز بگيرد.
با تشكر
B-Vedadian
سه شنبه 24 اردیبهشت 1387, 13:58 عصر
یعنی چی که شفاف بشه؟ میخواید پشتش عکس بزارید، رنگش رو عوض کنید یا ...
Accidentboy
سه شنبه 24 اردیبهشت 1387, 17:29 عصر
فکر کنم منظورشون یه جور Transparent شبیه Object هایی مثل Label ,Form,... باشه
morteza saleh
چهارشنبه 25 اردیبهشت 1387, 07:31 صبح
راستش همانطور كه دوستمون فرمود، مي خواهم DBGrid به صورت Transparent باشد. با تشكر.
B-Vedadian
چهارشنبه 25 اردیبهشت 1387, 07:47 صبح
خاصیت Transparent برای کنترل هایی از نوع TWinControl با TGraphicControl فرق داره. برای TGraphicControl که خودش یک پنجره نمیسازه فقط کافیه رو پس زمینه چیزی کشیده نشه مثل حالت TLabel، اما برای TWinControl قضیه فرق میکنه.
در مورد TWinControl باید یک Region بسازید و اون رو از شئ حذف کنید یا اگر منظورتون Alpha Blending باشه WS_EX_LAYERD رو هم به نوع پنجره اضافه کنید.
برای همین پرسیدم، اگر میخواید مثل TLabel شفاف باشه، برای TDBGrid کار سختیه، در واقع اصلا ارزشش رو نداره. چون DBGrid از TWinControl مشتق شده، هر دفعه که روش چیزی می نویسید، باید Region شفاف رو عوض کنید. برای شبیه سازی این کار (که باز هم به نظر من ارزشش رو نداره) باید به کامپوننت رو دوباره نویسی کنید، موقع رسم شکل Grid به شئ والد بگید که رو Canvas مربوط به Grid نقش پس زمینه رو بکشه، بعدش خود گرید رو نقاشی کنید.
تنها مورد باقیمانده Alpha Blending هستش که سورس TCustomForm رو نگاه کنید می بینید چطور میشه یک TWinControl رو نیمه شفاف کرد.
vcldeveloper
چهارشنبه 25 اردیبهشت 1387, 12:59 عصر
اگر منظورتون Alpha Blending باشه WS_EX_LAYERD رو هم به نوع پنجره اضافه کنید.
WS_EX_LAYERD برای پنجره های Child مثل DBGrid نمیتونه استفاده بشه.
B-Vedadian
چهارشنبه 25 اردیبهشت 1387, 14:53 عصر
حق با آقای کشاورزه، ممنون از تذکرشون.
پس تنها راه معقول استفاده از Regionهاست. (SetWindowRgn)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.