ورود

View Full Version : مشکل در RightToLeft کردن کنترل DBGrid در دلفی 2007 و 2009



hamid1tarkesh
یک شنبه 10 آذر 1387, 22:10 عصر
من در یک فرم از ADOTable برای خواندن داده ها از DB استفاده کردم و بعد ADOTable به یک DataSetProvider وصل کردم و اونو هم به یک ClientDataSet و اونو هم به DataSource و در آخر به یک DBGrid . تا اینجا همه چیز درسته و داده ها رو هم درست نشون میده

امااااا

DBGrid رو RightToLeft کردم همه چیز خراب شد. اگه روی DBGrid یک فرم دیگه باز کنید می بینید که DBGrid خودش را RePaint نمی کنه. یا اگه رکورد ها را به کمک Scroll از پایین به بالا پیمایش کنیم رکورد ها تکراری می شه.
حتی این مشکل در Delphi 2009 هم چک کردم و این مشکل وجود داشت.

یک برنامه نمونه هم گزاشتم که دوستان راحت تر بتونن این مشکل بررسی کنند و عکس مربوط به مشکل به وجود آمده هم هست.

با تشکر از دوستان گرامی

vcldeveloper
دوشنبه 11 آذر 1387, 05:46 صبح
ظاهرا در نمایش گرید راست-به-چپی که به ClientDataset متصل باشه، مشکل داره. البته من که بررسی کردم، از نظر نوع پیام های ارسالی، یا Styleهای پنجره، یا متدهایی که در سطوح اولیه فراخوانی میشند، مشکلی وجود نداره، و حتی برای گرید راست-به-چپ هم InvalidateRect فراخوانی میشه، اما احتمال داره که مختصات ارسالی بهش درست نباشه، یا مشکلی در پیاده سازی متد Paint وجود داشته باشه. البته عجیب هست که این مشکل فقط در صورت اتصال به ClientDataset بوجود میاد!

به هر حال، من برنامه شما را مقداری تغییر دادم، و با کمی توضیحات در Quality Central گزارش کردم:
http://qc.codegear.com/wc/qcmain.aspx?d=69465


یک نکته را هم به دوستانی که فایل آپلود می کنند یادآوری کنم:
وقتی می خواید یک نمونه کد برای بررسی بزارید، لازم نیست فایل EXE یا فایل های DCU را هم در فایل zip شده قرار بدید! مثلا همین فایلی که در این تاپیک آپلود شد، حجمش بدون وجود فایل EXE و DCU ها، و یکسری فایل های پیکربندی IDE، فقط 15 کیلوبایت بود، اما در اینجا با حجم حدود 400 کیلوبایت آپلود شد!

hamid1tarkesh
دوشنبه 11 آذر 1387, 10:19 صبح
تشکر از پیگیری شما دوست عزیز
ناشی گری بنده رو هم در آپلود فایل پروژه ببخشید.

امیدوارم این مشکل هم راه حلی داشته باشه چون اساسی کارم گیر کرده.

بازم تشکر

vcldeveloper
دوشنبه 11 آذر 1387, 18:26 عصر
خوشبختانه بهش توجه شده، و وضعیت گزارش از حالت Reported، به Internally Opened تغییر کرده. یعنی جزوه گزارشاتی هست که وارد Bug Tracker داخلی CodeGear شده، و در لیستی قرار گرفته که توسط توسعه دهندگان دلفی اصلاح بشه. البته Quality Central اعلام نمیکنه در در داخل CodeGear وظیفه اصلاح این مشکل به چه کسی داده شده، یا آن فرد در لیست گزارشات خود چند گزارش قبل از این گزارش دارد، که باید به آنها رسیدگی کند. ولی هر زمان که برطرف شود، در Quality Central اعلام می شود.
البته ممکن هست که تا آن زمان، براش یک Work around یا یک patch غیررسمی هم آماده بشه. این بستگی به میزان توجه کاربران به اون گزارش داره. می تونید به لینکی در بالا دادم برید، و با ثبت نام در سایت CodeGear، به گزارش مربوطه رای بدید (از 1 تا 10). هر چه تعداد رای دهندگان، و امتیازی که به اهمیت گزارش میدن، بیشتر باشه، به گزارش بیشتر توجه میشه، و سریعتر برای رفع مشکل اقدام می کنند.

hamid1tarkesh
دوشنبه 11 آذر 1387, 18:52 عصر
بازم تشکر
من از موقعی که شما این BUG رو ثبت کردید مرتب به سایت codegear سر زدم و الان هم کاری که گفتید رو انجام دادم
فقط امید وارم این BUG به زودی بر طرف بشه.

vcldeveloper
چهارشنبه 04 دی 1387, 16:32 عصر
برای این مشکل یک Work around پیدا شد:
http://blog.issamsoft.com/index.php?q=en/node/34