View Full Version : سوال: جلوگیری از پرش Label در برنامه (کاربردی)
hedi
شنبه 27 خرداد 1391, 17:47 عصر
با درود فراوان
می خواستم بپرسم چگونه می توان مشکل پرش و لرزش Label را که در Timer موقعیت آن از لحاظ Left یا Top در حال تغيير است را برطرف کرد ؟! این مشکل برخی اوقات در Timer ی که ساعت را هم نمایش می دهد مشهود است. البته در تالار Search اجمالی کردم اما فقط در خصوص Image و خاصيت DoubleBufferd توضیحاتی ارائه شده بود که کارساز واقع نشد خواهشمند است یک راه عملی و کاربردی پيشنهاد دهید . خیلی احتیاج دارم
BORHAN TEC
شنبه 27 خرداد 1391, 17:57 عصر
اگر کنترل Label شما مستقیماً روی فرم قرار دارد خاصیت DoubleBufferd فرم رو به True تغییر دهید و اگر کنترل Label شما روی یک شی دیگری(مثلاً یک TPanel) قرار دارد خاصیت DoubleBufferd مربوط به آنرا تغییر دهید.
hedi
شنبه 27 خرداد 1391, 18:00 عصر
این کار رو انجام دادم جواب نداد درست حدس زدید کنترل Label روی یک Panel است در ضمن Delphi هم ورژن XE است
BORHAN TEC
شنبه 27 خرداد 1391, 18:17 عصر
لطفاً برنامه ای که نوشته اید را برای بررسی ضمیمه کنید.
hedi
سه شنبه 30 خرداد 1391, 02:38 صبح
در ادامه بحث لازم باطلاع برسانم با این که مشکل برطرف نشد اما همین مورد را وقتی در ویندوز 7 با Them Basic اجرا می کنم کوچکترین پرشی ندارد در حالی که حتی DoubleBufferd هم False است. خیلی جالب به نظر می رسه چطوره که در حالت Them های دیگه در 7 یا در XP این مورد به صورت پرش نمود پیدا می کند آیا حالت Them ها تاثير گذار است یا مسئله به جای دیگر مربوط می شود؟!
mbshareat
پنج شنبه 01 تیر 1391, 00:16 صبح
می بخشید من یه لیست باکس روی یه ایمیج دارم
وقتس از فرم دیگه ای میام تو فرم حاوی لست باکس بد جور پرش تصویر داره(آقا شاهین لطفا برنامه جستجو در قرآنم رو ملاحظه کنین!)
البته وقتی تو همون فرم هستم چنین مشکلی ندارم!
Felony
پنج شنبه 01 تیر 1391, 05:08 صبح
می بخشید من یه لیست باکس روی یه ایمیج دارم
وقتس از فرم دیگه ای میام تو فرم حاوی لست باکس بد جور پرش تصویر داره(آقا شاهین لطفا برنامه جستجو در قرآنم رو ملاحظه کنین!)
البته وقتی تو همون فرم هستم چنین مشکلی ندارم!
برای برنامه ای فرم Login تعریف کرده بودم و این قابلیت رو داشت که بعد از ورود به نرم افزار ، دوباره با کاربر دیگه ی وارد بشی ، دقیقا مثل شما وقتی از یکی از فرم های برنامه به فرم Login سوئیچ میکردم تمام کنترل های فرم Login شروع به پرش های غیر عادی میکردند ، دیروز تقریبا 3 ساعت داشتم روی این موضوع کار میکردم ، نزدیک به 4000 خط کدی که تا الان برای قسمت های مرتبط با این موضوع تو برنامه رو نوشته بودم رو بازبینی کردم ولی فایده ای نداشت .
تو برنامه از کامپوننت Alpha Controls استفاده کرذم ، اگر با این کامپوننت کار کرده باشید میدونید قابلیتی داره که میتونه کامپوننت های پیش فر ض دلفی رو هم بهشون Style مورد نظر رو اعمال کنه و نیازی نیست کامپوننت هایی که تو یک برنامه استفاده شده رو عوض کرد ، من هم از TPanel خود دلفی استفاده کردم تا اینکه به صورت اتفاقی پنل موجود تو فرم Login رو حذف کردم و به جاش از پنل خود Alpha Controls استفاده کردم و مشکل پرش حل شد .
دیگه حوصله نداشتم کدهای پشت صحنه کتابخانه Alpha Controls رو بررسی کنم ببینم داره چه گندی میزنه ...
Mask
پنج شنبه 01 تیر 1391, 09:41 صبح
منم کلا از کار با آلفا راضی نیستم.
خیلی وقتها برنامه ارور های عجیبی میده ، که پس از چند روز بررسی به این نتیجه میرسیم که ، مشکل از آلفاست.
البته اینم باید گفت ، در برنامه های تجاری بزرگ ، چنین مشکلاتی رو به وجود میاره . اما در برنامه های کوچیک ، گزینه بدی نیست.
احساس میکنم ،آلفا مدیریت حافظش مشکل داره . چون گاهی برنامه هایی که با آلفا نوشتم AV میده و با برداشتن کامپوننت های این مجموعه ، از برنامه ، برنامه به درستی و بدون مشکل کارش رو انجام میده.
mbshareat
پنج شنبه 01 تیر 1391, 10:02 صبح
من از آلفا استفاده نمی کنم
اما فکر کنم وقتی کنترلی روی ایمیج باشه باید انتظار پرش رو داشت.
آیا اگه چند تا Image چهار طرف لیست باکس بذارم مشکل کمتر میشه تا اینکه لیست باکس رو روی یه ایمیج بذارم؟
در ضمن نمی دونم چرا وقتی از فرم دیگه میام تو فرم حاوی لیست باکس اینگار لیست باکس دوبار ترسیم میشه در حالیکه من یه بررسی اجمالی کردم جایی ترسیم اضافی نذاشتم.
آیا ممکنه تعیین TopIndex و بعد ItemIndex هر کدوم یک بار لیست رو کامل ترسیم کنند؟
در ضمن من توی DrawItem نوشتن سطرها رو با کد خودم با رنگهای مختلف انجام میدم که باعث میشه ترسیم کند بشه و پرش تصویر مشخص تر باشه.
اگه میشد از چیزی مثل RitchEdit با امکان بررسی سطر به سطر و نه کارکتر به کارکتر و با کنترل کامل بر کیفیت لبه قلم و رنگ پس زمینه استفاده کرد خوب بود!
tanha_mkh
سه شنبه 13 تیر 1391, 11:22 صبح
شما داخل برنامه تایمر این تابع رو بنویسید application.ProcessMessages;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.