ورود

View Full Version : progress رنگي



nilidelphi
سه شنبه 03 فروردین 1389, 13:29 عصر
:بوس:با سلام خدمت دوستان و تبريك نوروز.

مي خوام يه پروگرسبار رو فرمم داشته باشم كه رنگي بجز رنگ پيشفرض داشته باشه؟

البته اينم بگم كه وقتي از كامپوننت XPman استفاده مي كنم كدي كه براي تغيير رنگ نوشته ام اعمال نميشه ولي وقتي از اين كامپوننت استفاده نمي كنم رنگ پروگرسبار عوض ميشه.

حالا روشي هست تا در حالت استفاده از xpman بشه پرگرس رو رنگي كرد.؟

با تشكر

__Genius__
سه شنبه 03 فروردین 1389, 14:43 عصر
برای کامپوننتی که شما دارین استفاده میکنید رو نمیدونم ولی نگاهی به این پست بندازید .

http://barnamenevis.biz/forum/showpost.php?p=933317&postcount=13

nilidelphi
جمعه 06 فروردین 1389, 15:10 عصر
برای کامپوننتی که شما دارین استفاده میکنید رو نمیدونم ولی نگاهی به این پست بندازید .

http://barnamenevis.biz/forum/showpost.php?p=933317&postcount=13
دوست گرامي با تشكر من روشي كه شما لينكش گذاشتين رو خودم مي دونستم
اين روش زماني درست اجرا ميشه كه كه از كامپوننت XPMan كه در صفحه ي Win32 است استفاده نكني.

حالا من ميخوام پروگرسم رنگي باشه در ضمن از style هاي xp هم استفاده كنم مثل پروگرس هاي نرم افزار هايي مثل : Opera,PowerDVD7 حالا كسي هست كه بتونه كمك كنه؟
بازم تشكر.

حمید محمودی
جمعه 06 فروردین 1389, 19:41 عصر
سلام. فکر کنم اون نرم افزار ها از استایل خودشون استفاده میکنن. و شما باید با استایل ها در بارنامتون کار بکنین

Felony
جمعه 06 فروردین 1389, 22:54 عصر
کامپوننت AdvProgressBar از پالت TMS از پکیج سری کامپوننت ها TMS این امکان رو به شما میده ، در ضمن خودتون میتونید یه ProgressBar طراحی کنید یا از کلاس خود ProgressBar یه کامپوننت مشتق کنید و یه حالی بهش بدید ...

nilidelphi
شنبه 07 فروردین 1389, 11:02 صبح
کامپوننت AdvProgressBar از پالت TMS از پکیج سری کامپوننت ها TMS این امکان رو به شما میده ، در ضمن خودتون میتونید یه ProgressBar طراحی کنید یا از کلاس خود ProgressBar یه کامپوننت مشتق کنید و یه حالی بهش بدید ...

خوب عزيزم منم مي خوام خودم اين تغييرات بدم.

حالا چطور ميتونم اين تغييرات بدم و يه كامپوننت از اون چيزي كه ميخوام بسازم؟
لطفا اگه چيزي ميدونيد بزاريد ممنون.
:بوس:

pezhvakco
شنبه 07 فروردین 1389, 11:57 صبح
درود :
شما برای مدیریت ویژگی های ظاهری یک شی باید قسمت Parent های اونا رو False کنی.
مثل : ParentColor , ParentFont و ...
فکر خوش .

SAASTN
یک شنبه 08 فروردین 1389, 02:55 صبح
حالا چطور ميتونم اين تغييرات بدم و يه كامپوننت از اون چيزي كه ميخوام بسازم؟
ترسیم کنترلهایی مثل progressbar توسط خود ویندوز انجام میشه و متد paint ندارن که به راحتی بشه بازنویسیش کرد و تغییر ظاهری توش ایجاد کرد.
در مورد توضیحات بعدی خیلی مطمئن نیستم ولی شاید بتونه کمک کنه.
باید DefaultHandler رو باز نویسی کنید و در صورتی که Message مورد نظر اومده باشه عمل ترسیم انجام بشه.
برای انجام ترسیم هم باید یک TCanvas ایجاد کنید و پروپرتی Handle اون رو با تابع GetDC مقدار دهی کنید.

aCanvas:=TCanvas.Create;
aCanvas.Handle:=GetDC(Self.Handle);
aCanvas. ...
توجه کنید که Self در کد بالا به کلاس مشتق شده از TProgressbar اشاره می کنه.

Felony
یک شنبه 08 فروردین 1389, 07:28 صبح
ترسیم کنترلهایی مثل progressbar توسط خود ویندوز انجام میشه و متد paint ندارن که به راحتی بشه بازنویسیش کرد و تغییر ظاهری توش ایجاد کرد.
در مورد توضیحات بعدی خیلی مطمئن نیستم ولی شاید بتونه کمک کنه.
باید DefaultHandler رو باز نویسی کنید و در صورتی که Message مورد نظر اومده باشه عمل ترسیم انجام بشه.
برای انجام ترسیم هم باید یک TCanvas ایجاد کنید و پروپرتی Handle اون رو با تابع GetDC مقدار دهی کنید.

aCanvas:=TCanvas.Create;
aCanvas.Handle:=GetDC(Self.Handle);
aCanvas. ...
توجه کنید که Self در کد بالا به کلاس مشتق شده از TProgressbar اشاره می کنه.

این هم فایده ای نداره ، چون ترسیم توسط ویندوز انجام میشه و ProgressBar هم یک جلوه گرافیکی داره هر 1 ثانیه به روز رسانی میشه و ترسیم شما از بین میره .

اگر یه ProgressBar معمولی میخواین میتونید به راحتی با شئ Shape بسازیدش ( اگر خواستید بگید تا یک نمونه بزارم ) ، ولی اگر مثل progressBar ویندوز دارای افکت میخواین میتونید با OpenGL خودتون بنویسید یا اینکه یه عکس با فتوشاپ طراحی کنید و تو یک Image بارگزاری کنید و خاصیت Streach شئ Image رو True کنید و بعد به Width شئ Image اضافه کنید ( به عنوان Position ) .

موفق باشید .

SAASTN
یک شنبه 08 فروردین 1389, 09:44 صبح
این هم فایده ای نداره ، چون ترسیم توسط ویندوز انجام میشه و ProgressBar هم یک جلوه گرافیکی داره هر 1 ثانیه به روز رسانی میشه و ترسیم شما از بین میره .
این حالت فقط توی vista و 7 هست که افکت های متحرک داره یا توی xp هم بطور متوالی خود بخود ترسیم میشه؟

nilidelphi
یک شنبه 08 فروردین 1389, 12:57 عصر
با سلام به دوستان گرامي

من پست هاي شمارو خوندم ولي به نتيجه اي كه مي خوام نرسيدم.
در مورد گفته ي دوست گرامي Pezhvakco در مورد اينكه ويژگيهاي ParentColor و ParentFont بگم كه Progressbar اين خاصيت هارو نداره....؟؟؟؟

و در مورد گفته ي دوستمون Silver Soft در مورد قول زدن كاربر و استفاده از Image or shape بگم كه من ميخوام خود پروگرسبار رو تغيير بدم همانجور كه در نرم افزار هايي كه گفته بودم تغيير دادن.

حتما يه روشي هست كه به سيستم عامل خبر داد كه ما يك پروگرسبار داريم و مي خواهيم رنگش رو عوض كنيم.
مثلا تو برنامه Power DVD 7 پروگرس بار به هر رنگي در مياد و من مطمئنم كه مهندسان سازنده ي اين برنامه از يك پروگرسبار استفاده كردن و Styleش رو عوض كردن و از عناصر ديگر مثل عكس استفاده نمي كنند.

البته روشي كه دوست گرامي Silver Soft به اون اشاره كردن بيشتر تو بازي ها بدر ميخوره كه ما براي داشتن يك Loading فانتزي از عكس يا ساير ابزار استفاده كنيم بهتره تا زحمت يك پروگرسبار زيبا.

البته اينم بگم كه روشي باشه كه تو ورژن هاي مختلف ويندوز هم كاآمد باشه؟

با تشكر...
:اشتباه::اشتباه:

SAASTN
دوشنبه 09 فروردین 1389, 19:11 عصر
مثلا تو برنامه Power DVD 7 پروگرس بار به هر رنگي در مياد و من مطمئنم كه مهندسان سازنده ي اين برنامه از يك پروگرسبار استفاده كردن و Styleش رو عوض كردن و از عناصر ديگر مثل عكس استفاده نمي كنند.
سلام
کل صحبتی که شده اینه که شما برای این کار باید یک کنترل جدید بنویسید. در مورد مثالی هم که زدید معلوم نیست که آیا progressbar مورد اشاره استاندارد هست یا توسط خود توسعه دهندگان برنامه نوشته شده . اگر هم نمی گم مطمئن هستم که استاندارد نیست فقط به این دلیله که بعضی از skin ها این کار رو می کنند.
اما مطمئنا تغییر ظاهر کنترل هایی مثل progressbar جزء سخت ترین تغییراته. چون حتی skin های سطح پائین تر با این که به سادگی ظاهر کنترلهایی مثل button, checkbox, radiobutton و ... رو تغییر می دهند اما از ایجاد تغییرات ظاهری در کنترل هایی مثل progressbar , scrollbar و pagecontrol عاجزند و معمولا کنترلهای مشابهی ارائه می کنند که از اون ها باید استفاده کرد.
شما هم می تونید یک کنترل کاملا مشابه progressbar بنویسید و همه مشخصات اون رو در کلاس خودتون پیاده سازی کنید. استفاده از shape و یا عکسهای از پیش آماده شده هم از جمله راههای سهل الوصول تر برای انجام این کار (نوشتن کنترل جدید) هست.

البته روشي كه دوست گرامي Silver Soft به اون اشاره كردن بيشتر تو بازي ها بدر ميخوره كه ما براي داشتن يك Loading فانتزي از عكس يا ساير ابزار استفاده كنيم بهتره تا زحمت يك پروگرسبار زيبا.
شما توی این مطلبتون دو موضوع رو مطرح کردید. یکی اینکه اساسا ایجاد تغییر ظاهری در کنترل ها مخصوص برنامه هایی مثل بازی ها و یا برنامه های عمومی که نیاز به محیط جذاب برای کاربر دارند هست، درست مثل همون power dvd که اشاره کردید. شما هیچ وقت توی برنامه های جدی همچین تغییرات ظاهری نسبت به فرم کلاسیک ارائه شده توسط ویندوز نمی بینید. برنامه های عظیمی مانند 3dMax که اقدام به ایجاد یک GUI سفارشی مخصوص نرم افزار خوشون می کنند معمولا چون کنترل های استاندارد توانایی پاسخگویی به نیازهاشون رو نداره اقدام به همچین کاری می کنند و همیشه ایجاد تغییرات صرف ظاهری در رده دوم و یا چندم دلائل هست. البته این مورد توی ایران رعایت نمیشه و شما به تعداد برنامه های تولید شده در ایران رابط های گرافیکی کاربر مختلفی می بینید و اون هم برمی گرده به این که اینجا به دانشجوها آموزشی در مورد استاندارد های رابط گرافیکی داده نمیشه و بهتره بگم که اینجا اساسا استانداردی برای این موضوع وجود نداره.
موضوع دومی که مطرح کردید بعد زیبایی کار بود که من فکر می کنم این قضیه ربطی به روش پیاده سازی کار نداره و شما از هر روشی که استفاده کنید می تونید یک خروجی زیبا و حرفه ای و کاربر پسند داشته باشد.

موفق باشید

Felony
دوشنبه 09 فروردین 1389, 22:51 عصر
من زیاد Power DVD کار نکردم و این progressBar رو ندیدم ولی در مورد Opera میتونم 99% تضمین کنم که این یک کنترل ProgressBar سفارشی هست که توسط توسعه دهندگان Opera طراحی شده .