آخرين پست هاي ارسالي انجمن ايران دلفي

تماشای رایگان فیلم ایرانی ، خارجی و کودک آکادمی دلفی
نمایش نتایج: از 1 به 66 از 66

موضوع: شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

Hybrid View

  1. #1
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    با سلام
    پروژه تمرینی : تولید یک وب اپلیکیشن توسط اینتراوب و دلفی با محتوای بازی کلمات
    مواد لازم:
    Delphi XE5
    Intraweb 14.0.32
    TMS IntraWeb Components Pro v5.4.1.1
    SQL Server 2008R2 or 2012 or 2014
    ----------------------------
    Host & Domain :
    OS : Windows
    Disk Space : 100 MB
    Traffic : 2 GB
    One DB SQL : 2008 R2 or 2012 or 2014 Min 10 MB
    برای نام دامین لطفا پیشنهاد دهید
    ----------------------------
    مستندات پروژه
    ----------------------------
    تیم کاری شامل:
    تعدادی برنامه نویس دلفی
    تعدادی گرافیست
    تعدادی طراح صفحات وب (صرفا آشنا به HTML , CSS)
    ----------------------------
    فعلا برای شروع همینا کافیه . ببینیم کیا میان جلو و یا علی میگن!
    ویرایش توسط مجید : 19 / May / 2015 در ساعت 05:35 PM

  2. 3 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    b_e_shamlu (05 / June / 2015),Lazarus (05 / August / 2015),meyti (20 / May / 2015)

  3. #2
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    تا این لحظه 18 بار این موضوع مشاهده شده . و از این 18 بازدید هیچ کس ابراز علاقه نکرده . لطفا اگه کسی به این موضوع علاقه داره به مشاهده اکتفا نکنه و یه نظری ، انتقادی ، پیشنهادی ، اعتراضی ، دادی فریادی چیزی بکنه ما بفهمیم اینجا تنها نیستیم!

  4. کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده است:

    admin (22 / May / 2015)

  5. #3
    مدیرکل سایت admin آواتار ها
    تاریخ عضویت
    September 2008
    محل سکونت
    تهران ، آیسک
    سن
    39
    نوشته ها
    522
    تشکر ها
    247
    تشکر شده 250 بار در 160 ارسال.
    Blog Entries
    1

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام و درود.
    ابتدا تشکر از وقتی که گذاشتید و همچنین ایده ی زیبای پروژه رو مطرح کردید.
    بحث بازی آنلاین ، بحث سنگینیه، ولی امکان پذیر...
    نام دامین رو به نظر من طوری انتخاب کنید که حداقل Intra داخلش باشه ...
    بچه ها عادت دارند ابتدا قسمتی از کار رو ببینند، بعدا بیان جلو اگه امکان داره ابتدا خودتون پروژه رو استارت بزنید تا بقیه هم راغب بشوند ...
    بازم تشکر از ایده ی خوبتون
    دلفی ،*جذاب ترین زبان طراحی نرم افزار ...

  6. 3 کاربر مقابل از admin عزیز به خاطر این پست مفید تشکر کرده اند .

    b_e_shamlu (05 / June / 2015),meyti (23 / May / 2015),مجید (22 / May / 2015)

  7. #4
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    اگه کسی باشه که بتونه در زمینه هاست کمکمون کنه خیلی عالی میشه. دامنه را هم میتونیم به صورت subdomain از همین هاست کمک شده استفاده کنیم. البته اگه کسی پیدا نشه مجبوریم برای خرید هاست پول جمع کنیم (که فکر میکنم تقریبا محال باشه)

    ضمنا با Intraweb 14.0.32 نیازی نیست حتما سراغ ISAPI بریم
    سرور های معمولی که دات نت را هم ساپورت میکنند پشتیبانی میشوند
    اینجا رو ببینید :
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    ویرایش توسط مجید : 22 / May / 2015 در ساعت 02:54 PM

  8. کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده است:

    meyti (23 / May / 2015)

  9. #5
    مدیر انجمن meyti آواتار ها
    تاریخ عضویت
    August 2013
    نوشته ها
    143
    تشکر ها
    134
    تشکر شده 78 بار در 55 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    هزینه هاست و دامنه تقریبا چقدرمیشه ؟ بعد حتما اول باید هاست و دومین باشه بعد پروژه شروع بشه !؟ یا میشه شروع کرد بعد به سرور انتقال داد ؟؟

  10. #6
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    من از دو جا قیمت گرفتم که لینکشو میذارم شما هم برید ببینید :
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    پلن W001 از همش ارزون تره قیمیت سالانه اش 48 هزار تومان و قیمت شش ماهه اش هم 24 هزار تومانه
    قیمت های ایران هاست هم که خیلی بالا بود و امکان تغییر به دلخواه کاربر را نداشت . واسه همین هم سراغ ایران هاست نرفتم.
    یک قیمت هم از رادکام گرفتم که تصویرشو براتون میذارم :
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    شما هم از جاهایی که سراغ دارید قیمت بگیرید ببینیم کی ارزون تر میده
    دقت داشته باشید که هاست نباید لینوکس باشه . ممکنه ارزونتر باشه ولی به کار ما نمیاد.
    ضمنا در مورد الزامی بودن هاست و دامین باید خدمتتون عرض کنم که هیچ الزامی برای وجود هاست و دامین در ابتدا وجود نداره . فقط داشتنشون باعث تسریع در پیشرفت پروژه میشه . فرض کنید هر کدام از اعضاء گروه که بخواد میتونه توی فولدر خودش با کد خودش تست هایی انجام بده و با سرعت بیشتری نتیجه را در اختیار هم تیمی هاش بذاره ضمن اینکه اینطوری افراد جدیدی که مایل باشند نتیجه کار ما رو ببینند دیگه نیازی نیست که سورس پروژه را در اختیار داشته باشند و مثلا دنبال حل کردن مشکلاتی باشند که هر کدام از ما ممکنه درگیرشون بشیم . ضمنا ممکنه این وسط هم کسی پیدا بشه که از کار تیمی ما خوشش بیاد و سفارش یه پروژه قابل توجه بهمون بده . البته محسنات دیگه ای هم داره که الان وقتش نیست دربارش حرف بزنیم . ولی در هر حال تصمیم گیری باید با خرد جمعی باشه و بنده فقط نظر خودمو گفتم .

  11. کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده است:

    meyti (05 / August / 2015)

  12. #7
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    خب ظاهرا دیگه کسی پا پیش نمیذاره . خرید یا هدیه هاست هم به نظر میاد که منتفی باشه .
    اشکالی نداره یه خورده دیگه صبر میکنیم ببینیم واقعا این بحث چقدر طرفدار داره . اگه موضوع انتخاب شده طرفدار نداشته باشه دلیلی برای کلید خوردن وجود نداره .

  13. کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده است:

    meyti (27 / May / 2015)

  14. #8
    مدیر انجمن meyti آواتار ها
    تاریخ عضویت
    August 2013
    نوشته ها
    143
    تشکر ها
    134
    تشکر شده 78 بار در 55 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام -
    اگه اشتباه نکنم با ایران سرور 6 ماهه و دومین حدود 30 هزار هزینش بشه که فک کنم بین 3 یا 4 نفری که عضو شدن تا حالا رقم بالایی نباشه .
    من موافق شروع پروژه ام - حتی اگه 2 نفری هم باشه !

  15. کاربر مقابل از meyti عزیز به خاطر این پست مفید تشکر کرده است:

    مجید (27 / May / 2015)

  16. #9
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    نقل قول نوشته اصلی توسط meyti نمایش پست ها
    سلام -
    اگه اشتباه نکنم با ایران سرور 6 ماهه و دومین حدود 30 هزار هزینش بشه که فک کنم بین 3 یا 4 نفری که عضو شدن تا حالا رقم بالایی نباشه .
    من موافق شروع پروژه ام - حتی اگه 2 نفری هم باشه !
    ممنون که همراهی می کنید . اگه اجازه بدید چند روز دیگه هم صبر کنیم شاید گرافیست و وب دیزاینر هم پیدا شد. اینطوری سرعت و کیفیت پیشرفت پروژه خیلی بهتر میشه.
    ضمنا میتونیم خرید هاست و دامنه را هم به زمانی موکول کنیم که پروژه به مرحله قابل قبولی رسیده باشه .
    بنده هم تو این فرصت سعی میکم مستندات پروژه را آماده کرده و در پست های بعدی قرار بدم.
    راستی در مورد ورژن دلفی و اینتراوب و ... که مشکلی ندارید؟ منظورم اینه که بهتره تمام اعضاء روی یک محیط مشترک فعالیت کنند . اگه نرم افزار ها یکسان نباشند ممکنه در آینده به مشکلاتی برخورد کنیم که بازگشتن به نقطه قبلی کمی سخت باشه.

  17. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (08 / July / 2015),meyti (27 / May / 2015)

  18. #10
    مدیر انجمن mrtr0101 آواتار ها
    تاریخ عضویت
    April 2014
    نوشته ها
    20
    تشکر ها
    1
    تشکر شده 18 بار در 11 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    به نظر من اینتراوب بیشتر برای اتوماسیون های اداری و وب اپلیکیشن هایی مناسب است که کار با دیتابیس دارند . حالا کسی هم بتونه بازی آنلاین بنویسه جالبه
    در مورد هزینه سرور اصلا سراغ این هاست ها نرید . اولا شما در این هاست ها دسترسی کامل به iis ندارید که بتونید تغییرات انجام بدید . و اونها هم چنین اجازه ای به شما نخواهند داد . باید سرور مجازی یا اختصاصی اجاره کنید که هزینه اش بالاست . برای یه پروژه با 20 نفر کاربر آنلاین یه سرور با رم یک گیگ می خواد که هزینه سالیانه اشت 500 هزار تومان است . حالا کاربر ها برن بالا هزینه اش نجومی می شه . من خودم سرور تا 2 میلیون هم اجاره کرده ام .
    در کل برای بازی آنلاین شاید انتراوب مناسب نباشد . شاید هم من اطلاع ندارم .
    پیشنهاد من اینه بچه ها با هم جمع بشید یه اتوماسیون اداری دبیرخانه بدون کاغذ ویا برنامه هتل داری یا .... بنویسید برای آموزش
    با تشکر

  19. 4 کاربر مقابل از mrtr0101 عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (08 / July / 2015),b_e_shamlu (05 / June / 2015),meyti (27 / May / 2015),مجید (27 / May / 2015)

  20. #11
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    نقل قول نوشته اصلی توسط mrtr0101 نمایش پست ها
    سلام
    به نظر من اینتراوب بیشتر برای اتوماسیون های اداری و وب اپلیکیشن هایی مناسب است که کار با دیتابیس دارند . حالا کسی هم بتونه بازی آنلاین بنویسه جالبه
    در مورد هزینه سرور اصلا سراغ این هاست ها نرید . اولا شما در این هاست ها دسترسی کامل به iis ندارید که بتونید تغییرات انجام بدید . و اونها هم چنین اجازه ای به شما نخواهند داد . باید سرور مجازی یا اختصاصی اجاره کنید که هزینه اش بالاست . برای یه پروژه با 20 نفر کاربر آنلاین یه سرور با رم یک گیگ می خواد که هزینه سالیانه اشت 500 هزار تومان است . حالا کاربر ها برن بالا هزینه اش نجومی می شه . من خودم سرور تا 2 میلیون هم اجاره کرده ام .
    در کل برای بازی آنلاین شاید انتراوب مناسب نباشد . شاید هم من اطلاع ندارم .
    پیشنهاد من اینه بچه ها با هم جمع بشید یه اتوماسیون اداری دبیرخانه بدون کاغذ ویا برنامه هتل داری یا .... بنویسید برای آموزش
    با تشکر
    سلام و ممنون که نظر دادید
    قصد ما از اجرای پروژه بازی آنلاین ، فقط کسب یک تجربه هست . ممکنه با اجرای این پروژه یک تیم خوب و یکدست تشکیل بشه که بتونه پروژه های بزرگتری را هم اجرا کنه . البته شاید هم همه چیز طوری که دلمون میخواد پیش نره ولی به هر حال قصد داریم با یک پروژه تمرینی کوچک تلاش کنیم تا اولا از هم چیزی یاد بگیریم و دوما اگه شد یک تیم تشکیل بدیم . به امید خدا اگه همه چیز خوب پیش بره بعد از این پروژه میریم سراغ یه پروژه بزرگتر.
    در مورد هزینه های هاست که فرمودید حق با شماست . در نسخه های قبلی اینتراوب ، برای انتشار یک وب اپلیکیشن باید سروری در اختیار می بود که حتما از ISAPI پشتیبانی میکرد .و تمامی گفته های شما در مورد IIS , دسترسی ها و هزینه های سرور اختصاصی درسته. اما در نسخه های جدید تر امکان Intraweb Library اضافه شده که ادعا میکنه نیازی به ISAPI نداره و میشه مثل فایل های DLL که حاصل پابلیش یک پروژه C#.net است روی یک هاست معمولی ویندوز اجرا بشه.
    لطفا لینک زیر را مطالعه کنید
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    در همون دو سطر اول توضیح داده که موضوع چیه
    فکر میکنم اگه این موضوع صحت داشته باشه و در عمل هم بشه اثباتش کرد دیگه برای اجرای یک وب اپلیکیشن با کیفیت نیازی نیست سراغ سی شارپ و محصولات مایکروسافت رفت . بنده معتقدم امکاناتی که دلفی در اختیار برنامه نویس میذاره قابل قیاس با محصولات مایکروسافت نیست . بنده مدتی (حدودا 2 تا 3 سال) با Visual Studio کلنجار رفتم و چند تا پروژه هم انجام دادم . اما به دلیل فرسایشی بودن کار با محصولات مایکروسافت به دلفی برگشتم و حالا که اینتروب مشکل وابستگی خودشو به ISAPI برطرف کرده دیگه دلیلی نمیبینم که برای اجرای یک وب اپلیکیشن سراغ سی شارپ برم . البته با تواضع کامل به همه برنامه نویسان سی شارپ احترام میذارم . فکر میکنم عده زیادی از دلفی کارها به همین دلیل مدتی را صرف کار با ویژوال استودیو کردند و ممکنه تجربیاتی شبیه بنده داشته باشند . امیدوارم علاقمندان به این موضوع به جمع ما ملحق بشوند.

  21. #12
    مدیر انجمن meyti آواتار ها
    تاریخ عضویت
    August 2013
    نوشته ها
    143
    تشکر ها
    134
    تشکر شده 78 بار در 55 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    منم با اتوماسیون بیشتر موافقم چون چیزی هست که احتمال هست که روزی سفارش داده بشه - اما بازی رو فک نکنم : البته بازی حتما باید گرافیست و خیلی تخصص های دیگه هم باشه تا چیز خوبی دربیاد .
    درضمن اگه به جنبه آموزش نگاه داشته باشیم فک کنم بشه با آی پی استاتیک یه کارایی کرد ! و احتیاجی به سرور و دومین نباشه -

  22. کاربر مقابل از meyti عزیز به خاطر این پست مفید تشکر کرده است:

    b_e_shamlu (05 / June / 2015)

  23. #13
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    اگه مستندات یک پروژه اتوماسیون را دارید لطفا منتشر کنید تا برای پروژه بعدی درباره اش تصمیم گیری کنیم .
    البته اگه عمری بود و اگه تیم شکل گرفت و اگه به مشکل اساسی برخورد نکردیم و ............

  24. کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده است:

    admin (28 / May / 2015)

  25. #14
    مدیر انجمن meyti آواتار ها
    تاریخ عضویت
    August 2013
    نوشته ها
    143
    تشکر ها
    134
    تشکر شده 78 بار در 55 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    یه خرده در مورد خود بازی توضیح میدین !؟ چطوریه ؟

  26. #15
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    عنوان پروژه : بازی آنلاین کلمات

    عناصر بازی :
    1- کلمه رمز
    2- کاربر یا کاربرانی که تلاش میکنند رمز را پیدا کنند
    3- کلمات پیشنهادی کاربران
    4- امتیازی که بازی به کلمات کاربران میدهد

    هدف :
    کاربران در این بازی برای یافتن کلمه رمز با یکدیگر رقابت میکنند . در صورتیکه کاربری کلمه رمز را پیدا کند بازی امتیازی را به حساب کاربر اضافه میکند .

    روش بازی :

    کاربران پس از ثبت نام در بازی (ثبت نام سریع و بدون نیاز به تایید ایمیل) وارد بازی میشوند . کاربران در هنگام ثبت نام نمیتوانند از نام های ثبت شده ی قبلی استفاده کنند . در صورتیکه قبلا ثبت نام کرده باشند میتوانند با وارد کردن نام کاربری و رمز عبور وارد بازی شوند .
    پس از ورود به بازی جدولی را مشاهده میکنند که دارای 3 ستون است :
    ستون اول نام کاربر
    ستون دوم کلمه پیشنهادی
    ستون سوم امتیاز کلمه
    ---------------------------------------
    در بالای جدول قسمتی قرار دارد که کاربر میتواند کلمه پیشنهادی خود را در آن وارد کرده و از این لحظه وارد بازی شود.
    بازی به کلمه پیشنهادی هر کاربر با یک امتیاز دو قسمتی پاسخ میدهد و کاربر باید با بررسی امتیازات دریافت شده حدس بزند که چه حروفی در کلمه رمز وجود دارد و در نهایت حدس بزند کلمه رمز چیست.
    درصورتیکه رمز توسط کاربری پیدا شد ابتدا امتیاز جایزه به حساب کابر پیدا کننده ی رمز واریز میشود و سپس بازی به صورت خودکار رمز دیگری را انتخاب میکند و بازی با رمز جدید ادامه پیدا خواهد کرد و از این لحظه کاربران باید بدنبال رمز جدید باشند.

    مثال
    کلمه رمز : دلفی
    توضیح اینکه : د ل ف ی - چهار حرف کلمه رمز هستند . کلمه رمز نباید حروف تکراری داشته باشد . مثال های غلط : لک لک ، فلفل ، دلیل . وجود حروف تکراری باعث گمراه شدن کاربران خواهد شد. از این رو تمام کلماتی که به عنوان رمز یا کلمه پیشنهادی در بازی استفاده خواهند شد حروف غیر تکراری دارند.
    کلمه رمز از یک جدول فراخوانی می شود (این جدول هم اکنون موجود است)

    کلمه پیشنهادی یکی از کاربران بطور مثال : دانش
    بازی حروف کلمه پیشنهادی (د ا ن ش) را با کلمه رمز (د ل ف ی) مقایسه میکند و امتیازی که بازی به کلمات پیشنهادی کاربران میدهد به شرح زیر است:
    1+0
    که عدد اول یعنی 1 نشان دهنده ی تعداد حروف مشترک دو کلمه است و عدد دوم یعنی 0 نشان دهنده ی تعداد حروف مشترکی است که سر جای خود قرار گرفته اند.
    مثال پیشنهادی دوم : فیله
    بازی حروف کلمه پیشنهادی (ف ی ل ه) را با کلمه رمز (د ل ف ی) مقایسه میکند و امتیازی که بازی به کلمات پیشنهادی کاربران میدهد به شرح زیر است:
    3+0
    مثال پیشنهادی سوم : دلیر
    بازی حروف کلمه پیشنهادی (د ل ی ر) را با کلمه رمز (د ل ف ی) مقایسه میکند و امتیازی که بازی به کلمات پیشنهادی کاربران میدهد به شرح زیر است:
    3+2

    نکته 1 : ممکن است بعضی کلمات امتیاز 0+0 بگیرند . در این صورت کاربرمیتواند حروف کلمه پیشنهادی خود را از دامنه حروف احتمالی رمز حذف کرده و در کلمات پیشنهادی بعدی خود از آنها استفاده نکند
    نکته 2 : کاربر میتواند برای خود حروف الفبای فارسی را در محلی یادداشت کرده و پس از برخورد به کلماتی که امتیاز 0+0 گرفته اند حروف مورد نظر را علامت بزند.
    نکته 3 : کلمات پیشنهادی کابران نیز نباید حروف تکراری داشته باشد.
    نکته 4 : طول کلمه پیشنهادی نباید بیشتر یا کمتر از طول کلمه رمز باشد.
    نکته 5 : فاصله (space) جزء کاراکتر های غیر مجاز در کلمات پیشنهادی است .

    امتیازات :
    امتیاز هر کلمه پیشنهادی به صورت خودکار به حساب کاربر واریز میشود
    مثال : کلمه دلیر در مثال سوم (2+3) 5 امتیاز را به حساب کاربر واریز خواهد کرد
    امتیاز پیدا کردن رمز 500 است
    -------------------------------------------------
    کلمه رمز میتواند 3 حرفی ، 4 حرفی و یا 5 حرفی باشد که این مورد باید در سطح بازی انتخاب شود . یعنی می توان بازی را مثلا در سه سطح ساده (رمز 3 حرفی) ، متوسط (رمز 4 حرفی) و سخت (رمز 5 حرفی) طراحی و در اختیار کاربر قرار داد
    و به همین نسبت هم امتیازات رمز پیدا شده میتواند برای 3 حرفی 200 امتیاز ، 4 حرفی 500 امتیاز و 5 حرفی 800 امتیاز باشد
    -------------------------------------------------
    می توان محیطی برای کابران در حین بازی در نظر گرفت که با هم گفتگو کنند . چیزی شبیه چت هیجان بیشتری به بازی خواهد داد.
    -------------------------------------------------

    این خلاصه ای از مستندات پروژه بازی آنلاین کلمات بود که تقدیم شد . البته مطالب فوق میتواند بنا بر خلاقیت شما هر تغییری که لازم داشته باشد را بپذیرد
    ویرایش توسط مجید : 09 / June / 2015 در ساعت 01:35 PM

  27. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    b_e_shamlu (05 / June / 2015),meyti (31 / May / 2015)

  28. #16
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    امروز خودم Windowes Server 2008 R2 نصب کردم و مراحل گفته شده در لینک [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] را انجام دادم . نتیجه قابل قبول بود.
    فقط یک نکته باقی مونده . اونم اینکه آیا تنظیمات خواسته شده در لینک بالا توسط فروشندگان یا بخش پشتیبانی هاست ها انجام میشه یا باید برای انجام این کارها هزینه ای جدا گانه پرداخت کرد و یا شاید هم اصلا با زدن یک تیکت براحتی و بدون درد سر برامون انجامش میدن؟
    پاسخ این سوال را فقط در عمل میشه فهمید!
    ویرایش توسط مجید : 09 / June / 2015 در ساعت 01:35 PM

  29. #17
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    من روزی چند بار به اینجا سر میزنم ببینم نظری حرفی انتقادی پیشنهادی یا هر چیز جدیدی اضافه شده یا نه!
    ولی متاسفانه پست های جدید خیلی کمه. شاید دلیلش این باشه که دلفی کاران عزیز سرشون خیلی شلوغه.
    به هر حال من هنوز دلسرد نشدم . امیدوارم اشتیاق بیشتری (وقت آزاد بیشتری برای سر شلوغ ها) بوجود بیاد .
    ویرایش توسط مجید : 09 / June / 2015 در ساعت 01:35 PM

  30. #18
    مدیر انجمن meyti آواتار ها
    تاریخ عضویت
    August 2013
    نوشته ها
    143
    تشکر ها
    134
    تشکر شده 78 بار در 55 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    طرح بازی جالب بود - از جایی دیدین یا خلاقیت خودشماست ؟

  31. #19
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    نقل قول نوشته اصلی توسط meyti نمایش پست ها
    طرح بازی جالب بود - از جایی دیدین یا خلاقیت خودشماست ؟
    راستش این بازی خیلی وقت پیش توی یه مسابقه تلوزیونی انجام میشد .

  32. #20
    مدیر انجمن meyti آواتار ها
    تاریخ عضویت
    August 2013
    نوشته ها
    143
    تشکر ها
    134
    تشکر شده 78 بار در 55 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    با سلام
    از همه اعضا مخصوصا مدیران عزیز خواهش میکنم که شرکت کنند - حتی اگرم وقت ندارند که تو خود پروژه باشند یه نظری پیشنهادی و.... بدهند که این سایت که تنها فروم اختصاصی دلفیه از رونق نیافته .

  33. کاربر مقابل از meyti عزیز به خاطر این پست مفید تشکر کرده است:

    مجید (31 / May / 2015)

  34. #21
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    یک هفته از آخرین پست میگذره و تا الان 496 بازدید از این موضوع انجام شده . جالب اینجاست اغلب بازدید های این موضوع توسط کاربران میهمان انجام میشه و از بین این همه بازدید گروه Intraweb فقط 4 عضو گرفته
    تا این لحظه بنده به همراه 3 عزیز دیگر ( meyti و admin و mrtr0101 ) عضو این گروه هستیم. از اعضاء گروه خواهشمندم اگر امکان داره به دوستان و همکاران خودشون اطلاع رسانی کنند. جای گرافیست و طراح وب تو گروه خالیه.
    به امید خدا سعی میکنم هفته آینده یک تحلیل سر پایی از پروژه بذارم .

  35. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (06 / June / 2015),meyti (04 / June / 2015)

  36. #22
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

  37. کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده است:

    admin (06 / June / 2015)

  38. #23
    مدیر انجمن b_e_shamlu آواتار ها
    تاریخ عضویت
    July 2013
    محل سکونت
    کرج
    سن
    56
    نوشته ها
    123
    تشکر ها
    149
    تشکر شده 94 بار در 46 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام دوستان منهم موافق هستم اما باید عرض کنم که خیلی آشنایی نداشته و همینکه وقت زیادی هم ندارم اما تا آنجایی که بتوانم و توان داشته باشم در خدمت شما هستم

    دوستان یک پیشنهاد
    تقریبا همه جا اتوماسین اداری وجود دارد .
    من یک پیشنهاد دارم و اون اینکه برنامه بودجه (تامین اعتبار - درخواست وجه - هزینه و ...) چراکه فقط مورد استفاده ادارات دولتی میباشد و کمتر شرکتی به آن پرداخته .
    اگه شد کمی در موردش فکر کنید شاید خوب بود؟؟؟؟!!!!!!
    ویرایش توسط b_e_shamlu : 05 / June / 2015 در ساعت 03:58 AM
    دلفی کاران را دوست دارم [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



  39. 3 کاربر مقابل از b_e_shamlu عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (06 / June / 2015),meyti (05 / August / 2015),مجید (05 / June / 2015)

  40. #24
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    نقل قول نوشته اصلی توسط b_e_shamlu نمایش پست ها
    سلام دوستان منهم موافق هستم اما باید عرض کنم که خیلی آشنایی نداشته و همینکه وقت زیادی هم ندارم اما تا آنجایی که بتوانم و توان داشته باشم در خدمت شما هستم

    دوستان یک پیشنهاد
    تقریبا همه جا اتوماسین اداری وجود دارد .
    من یک پیشنهاد دارم و اون اینکه برنامه بودجه (تامین اعتبار - درخواست وجه - هزینه و ...) چراکه فقط مورد استفاده ادارات دولتی میباشد و کمتر شرکتی به آن پرداخته .
    اگه شد کمی در موردش فکر کنید شاید خوب بود؟؟؟؟!!!!!!
    سلام و ممنون که نظر دادید
    تخصص های مورد نیاز ما شامل :

    • برنامه نویس دلفی
    • گرافیست (آشنا به فتوشاپ و سایر برنامه های گرافیکی و ...)
    • طراح وب (آشنا به HTML و CSS و ...)
    • مدیر تیم تولید جهت هماهنگی بین اعضاء
    • مدیر روابط عمومی (در صورت نیاز به گفتگو با مشتریان احتمالی نظیر شرکت های دولتی و ...)


    حالا شما ببینید تو کدام یک از این موارد میتونید به ما کمک کنید.

    البته ممکنه تخصص های دیگری هم مورد نیاز باشه که بنده حضور ذهن ندارم .

    در مورد پیشنهادتون هم قبل از هر چیز باید گردش کار یا همون Workflow (لطفا [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] و یا [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] را ببینید) سیستم مورد نظرتون را به صورت مستندات در اختیار داشته باشید تا بتونیم بررسیش کنیم و در موردش تصمیم گیری کنیم . این اصطلاحاتی که شما فرمودید (تامین اعتبار و درخواست بودجه و هزینه و ... ) برای بنده نا آشناست و هر چقدر هم که دربارشون فکر کنم حاصلش چیزی نمیشه . اگه شما مستندات یا مطالبی دارید که برای درک سیستم مورد نظر مفیده لطفا بعد از عضویت توی گروه [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]منتشر کنید تا بقیه هم اطلاعات هم سطح شما داشته باشند.


    با تشکر فراوان

  41. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (06 / June / 2015),meyti (05 / August / 2015)

  42. #25
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    چند توصیه و پیشنهاد دارم که فکر میکنم ممکنه برای دوستان مفید باشه . البته حرف جدیدی نیست . فقط جهت هماهنگی بیشتر عرض میکنم.

    پیشنهاد اول (بهینه سازی IDE دلفی) : نرم افزار [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] را دانلود و نصب کنید.
    پیشنهاد دوم (تهیه تصاویر همراه با توضیحات از محیط کاری شامل فرم ها ، دیاگرام ها ، خطا ها و ...) : نرم افزار [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] را دانلود و نصب کنید.
    پیشنهاد سوم (یکسان سازی IDE دلفی) : برای استفاده بیشتر از دسکتاپ دلفی در زمان کار بهتر است تغییراتی در محیط آن داده شود . بنده تغییرات دلخواه خود را روی دلفی تنظیم کردم و فایل config آنرا ضمیمه همین پست میکنم . استفاده از یک محیط کاری بین اعضاء یک گروه باعث هماهنگی بیشتر خواهد شد . مثلا فایل های کدی که بین اعضا رد و بدل خواهد شد شکل و شمایل متحدی خواهد داشت و کاربران نیازی ندارند که کد های یکدیگر را فرمت کنند تا برایشان خوانا تر شود . این موضوع در formatting سورس کد بسیار به چشم می آید.

    فایل دیگری که ضمیه شده است را باید پس از نصب نرم افزار cnPack استفاده کنید . این فایل یک Backup از محیط دلفی بنده است که توسط cnPack تهیه شده و پس از Restore کردن آن محیط دلفی شما شبیه به دلفی بنده خواهد شد.
    فايل هاي پيوست شده فايل هاي پيوست شده

  43. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (10 / June / 2015),meyti (05 / August / 2015)

  44. #26
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    امروز رسما پروژه استارت میخوره
    امیدوارم همه چیز خوب پیش بره و اعضاء گروه هم کمک کنند تا سریعتر به نتیجه برسیم

    برای شروع تصاویر فرم های پیش بینی شده را بوسیله نرم افزار SnagIt که در پست های قبلی معرفی شد تهیه کردم که به شرح زیر نمایش داده میشوند :

    فرم ورود کاربران
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    فرم ثبت نام
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    فرم تغییر رمز عبور
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    فرم پروفایل کاربر
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    فرم فراموشی رمز عبور
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    فرم انتخاب سطح دشواری بازی
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    فرم بازی
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    و در انتها هم تصویری از دیاگرام دیتابیس بازی
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    حالا از دوستان عزیز خواهش میکنم برای ساخت فرم ها پا پیش بگذارند و هر طوری که میتونند یه گوشه کار را بگیرند
    در این مرحله هیچ کدی در فرم ها نوشته نمیشه و فقط باید عناصر فرم شامل TIWEdit ها و TIWGradButton ها در فرم ها قرار بگیرند
    میتونید یک BaseForm بسازید و تمام فرم ها را از اون ارث بری کنید . اینطوری فرم ها یکدست خواهند بود . البته همه اساتید به این مسائل وارد تر از بنده هستند .
    بنده هم سعی میکنم کلاس های مربوط به بازی را آماده کنم و در پست های بعدی تقدیم کنم .
    بعد از این مرحله وارد کد نویسی فرم ها و عناصر آنها میشیم.
    ویرایش توسط مجید : 23 / June / 2015 در ساعت 12:44 AM

  45. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (10 / June / 2015),meyti (05 / August / 2015)

  46. #27
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    این پست اختصاص داره به طرز ساخت کلاس TUser که در بازی ازش استفاده خواهیم کرد.

    دلفی را اجرا کرده و یک پروژه جدید اینتراوب ایجاد کنید


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    بعدش این شکلی میشه


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



    حالا روی IntraWeb_WordGame کلیک راست کنید و از منویی که ظاهر میشه Add و از منوی بعدی Namespace را انتخاب کنید



    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



    با استفاده از Modeling میتونیم کلاس ها را ایجاد کنیم . البته بدون استفاده از این ابزار هم میشه کلاس درست کرد ولی هم سخت تر است و هم ضریب خطا در حین کار بالا میره . در کل این ابزار بسیار مفید هست . اگه تا حالا سراغش نرفتین حتما تستش کنید .

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    Namespace1 را به WordGame_Namespace تغییر بدهید


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    روی WordGame_Namespace دبل کلیلک کنید تا محیط ایجاد کلاس باز شود
    سپس در فضای خالی کلیک راست کرده و از منویی که ظاهر میشود Add و سپس Class را انتخاب کنید.


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    ادامه در پست بعد



    ویرایش توسط مجید : 16 / June / 2015 در ساعت 06:33 PM

  47. 4 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),b_e_shamlu (16 / July / 2015),meyti (05 / August / 2015),moj127 (04 / September / 2017)

  48. #28
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    Class1 ایجاد میشه . در همین مرحله نام Class1 را به TUser تغییر بدید
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    روی کلاس TUser کلیلک راست کنید و از منویی که ظاهر میشود Add و سپس Property را انتخاب کنید
    Property ها در زمان کد نویسی در اختیار شما خواهند بود و میتوانید مقادیر آنها را تغییر دهید . همچنین میتوانید آنها را با مقادیر متناظر خود در بانک اطلاعاتی مقدار دهی کنید

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    Property1 را به UserID تغییر دهید
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    دقت کنید که مقدار SetProperty1 در تصویر بالا تبدیل به SetUserID در تصویر پایین شد.
    همچنین مقدار FProperty1 در تصویر بالا تبدیل به FUserID در تصویر پایین شد
    دلفی وظیفه این تغییرات را به عهده میگیرد تا خطای کاربر به حداقل برسد.
    حالا وقت آن رسیده که نگاهی به کد ایجاد شده بیاندازیم
    روی کلاس TUser دبل کلیک کنید تا فایل کد آن باز شود :
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    همانطور که میبینید بین Begin و End در procedure TUser.SetUserID هیچ کدی نوشته نشده است
    اینجا شما باید وارد عمل شوید و کد دلخواه خود را وارد کنید
    در این مثال دستور زیر را وارد میکنیم :
    FUserID := val;
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    کار این پروسیجر مقدار دهی به فیلد FUserID است و با کدی که وارد آن کردیم این عملیات تکمیل میشود . توجه داشته باشید که اگر این کد ها را وارد نکنید کلاس به درستی عمل نخواهد کرد.
    به همین ترتیب Property های دیگر را نیز اظافه میکنیم :


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



    به نوع Property ها دقت کنید . بعضی عددی و بعضی رشته ای هستند. تغییر نوع Property ها را میتوانید در زمان تغییر نام آنها انجام دهید


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]




    ادامه در پست بعد
    ویرایش توسط مجید : 17 / June / 2015 در ساعت 01:01 AM

  49. 3 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),meyti (05 / August / 2015),moj127 (04 / September / 2017)

  50. #29
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    هر کلاس میتواند دو پروسیجر Create و Destroy داشته باشه . این دو پروسیجر به ترتیب در زمان ساخت و حذف از حافظه ، فراخوانی میشوند . میتوانید در Create مقادیر اولیه برای فیلد ها در نظر بگیرید .

    نکته : فیلد ها همان قسمتهایی از کلاس هستند که با Property ها هم نام هستند و با حرف F شروع میشوند مانند Property UserID = Field FUserID
    Peroperty ها مقادیر خود را در فیلد ها نگهداری میکنند و از آنها فراخوانی میکنند. به بیانی دیگر Property ها واسطه ای میان کاربر و فیلد ها هستند


    برای ساخت پروسیجر Create روی کلاس کلیک راست کرده و از منویی که ظاهر میشود Add و سپس Constructor را انتخاب کنید
    و
    برای ساخت پروسیجر Destroy روی کلاس کلیک راست کرده و از منویی که ظاهر میشود Add و سپس Destructor را انتخاب کنید

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    حالا در کد مربوط به پروسیجر Create فیلد های کلاس را با مقادیر پیشفرض مقدار دهی میکنیم . پروسیجر Destroy در این کلاس بدون تغییر باقی خواهد ماند

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    در این مرحله توابع مورد نیاز را به کلاس اضافه میکنیم
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    و در انتها هم یک ADOConnection به ServerController اضافه میکنیم و به دیتابیس SQL وصلش میکنیم
    نام ADOConnection را به ADOConnectionMain تغییر بدید و خصوصیاتشو هم مثل تصویر تنظیم کنید

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    و در انتها کد کلاس به شکل زیر خواهد شد . البته با کمی تغییر که خودتون متوجه میشید

    کد:
      type
        TUser = class
          public
          private
          var
            FUserID     : Integer;
            FUsername   : string;
            FPassword   : string;
            FFullName   : string;
            FTotalPoint : Integer;
            FEMail      : string;
            procedure SetUserID(val: Integer);
            procedure SetUsername(val: string);
            procedure SetPassword(val: string);
            procedure SetFulName(val: string);
            procedure SetTotalPoint(val: Integer);
            procedure SetEMail(val: string);
            function SendMail(aSMTP: TIdSMTP; aMailMessage: TIdMessage; aSubject, aBody: WideString): string;
          public
            property UserID     : Integer read FUserID write SetUserID;
            property Username   : string read FUsername write SetUsername;
            property Password   : string read FPassword write SetPassword;
            property FullName   : string read FFullName write SetFulName;
            property TotalPoint : Integer read FTotalPoint write SetTotalPoint;
            property EMail      : string read FEMail write SetEMail;
            constructor Create;
            destructor Destroy; override;
            function Login: TUser;
            function GetUserInfo(aUsername: string; aUserID: Integer = 0; aEMail: string = ''): TUser;
            function RegisterUser: TUser;
            function UpdateUser: boolean;
            function ChangePassword(NewPassword: string): boolean;
            procedure SendNewPasswordEmail(aSMTP: TIdSMTP; aMailMessage: TIdMessage);
        end;
    
      procedure TUser.SetUserID(val: Integer);
        begin
          FUserID := val;
        end;
    
      procedure TUser.SetUsername(val: string);
        begin
          FUsername := val;
        end;
    
      procedure TUser.SetPassword(val: string);
        begin
          FPassword := val;
        end;
    
      procedure TUser.SetFulName(val: string);
        begin
          FFullName := val;
        end;
    
      procedure TUser.SetTotalPoint(val: Integer);
        begin
          FTotalPoint := val;
        end;
    
      procedure TUser.SetEMail(val: string);
        begin
          FEMail := val;
        end;
    
      constructor TUser.Create;
        begin
          inherited Create;
          FUserID             := 0;
          FUsername           := '';
          FPassword           := '';
          FFullName           := '';
          FTotalPoint         := 0;
          FEMail              := '';
        end;
    
      destructor TUser.Destroy;
        begin
          inherited Destroy;
        end;
    
      function TUser.Login: TUser;
        var
          V: Integer;
        begin
          Result := nil;
          V      := fOpenReturnInt('Select Count(*) from Users where Username = ' + QuotedStr(Username) + ' and Password = ' +
              QuotedStr(Password));
          if V > 0 then
            Result := GetUserInfo(Username);
        end;
    
      function TUser.GetUserInfo(aUsername: string; aUserID: Integer = 0; aEMail: string = ''): TUser;
        var
          WHR_Clause: String;
          V         : TADOQuery;
          I         : Integer;
        begin
          Result := nil;
          if aUserID <> 0 then
            WHR_Clause := ' UserID = ' + IntToStr(aUserID)
          else if aUsername <> '' then
            WHR_Clause := ' Username = ' + QuotedStr(aUsername)
          else if aEMail <> '' then
            WHR_Clause := ' EMail = ' + QuotedStr(aEMail);
          V            := fOpen('Select * from Users where ' + WHR_Clause);
          if V.RecordCount > 0 then
            begin
              Result := TUser.Create;
              with Result do
                begin
                  UserID     := V.FieldByName('UserID').AsInteger;
                  FullName   := V.FieldByName('FullName').AsString;
                  Username   := V.FieldByName('Username').AsString;
                  Password   := V.FieldByName('Password').AsString;
                  TotalPoint := V.FieldByName('TotalPoint').AsInteger;
                  EMail      := V.FieldByName('EMail').AsString;
                end;
            end;
          FreeAndNil(V);
        end;
    
      function TUser.RegisterUser: TUser;
        var
          V: Integer;
        begin
          Result := nil;
          V      := fOpenReturnInt('Select Count(*) from Users where Username = ' + QuotedStr(Username));
          if V = 0 then
            begin
              V := fOpenReturnInt('INSERT INTO Users (Username, Password, FullName, TotalPoint, EMail) VALUES (' +
                  QuotedStr(Username) + ',' + QuotedStr(Password) + ', N' + QuotedStr(FullName) + ',0,' +
                  QuotedStr(EMail) + '); Select Scope_Identity();');
              if V > 0 then
                begin
                  Result := Self.GetUserInfo(Self.Username);
                  Self   := Result;
                end;
            end;
        end;
    
      function TUser.UpdateUser: boolean;
        var
          V: Integer;
        begin
          Result := False;
          V      := fRun('Update Users SET FullName = N' + QuotedStr(FullName) + ' where UserID = ' + IntToStr(UserID));
          if V > 0 then
            Result := True;
        end;
    
      function TUser.ChangePassword(NewPassword: string): boolean;
        var
          V: Integer;
        begin
          Result := False;
          V      := fRun('Update Users set Password = ' + QuotedStr(NewPassword) + ' where UserID = ' + IntToStr(UserID));
          if V > 0 then
            Result := True;
        end;
    
      procedure TUser.SendNewPasswordEmail(aSMTP: TIdSMTP; aMailMessage: TIdMessage);
        var
          Subject, Body: WideString;
          NewPass      : String;
        begin
          NewPass := RandomPassword(10);
          Subject := '::  ' + IWServerController.AppName + '  :: تغییر رمز عبور  ::';
          Body    := 'کاربر گرامی ، ' + FullName + 'اقدام به درخواست رمز عبور جدید کرده اید . ' + IWServerController.AppName +
            '  شما از طریق کنترل پنل خود در سایت <br>' +
            'رمز عبور جدید شما : ' + NewPass;
          Self.ChangePassword(NewPass);
          SendMail(aSMTP, aMailMessage, Subject, Body);
        end;
    
      function TUser.SendMail(aSMTP: TIdSMTP; aMailMessage: TIdMessage; aSubject, aBody: WideString): string;
        var
          S: String;
        begin
          // setup SMTP
          aSMTP.Host := 'smtp.gmail.com';
          aSMTP.Port := 25; // for smtp.gmail.com
          // setup mail message
          aMailMessage.From.Address              := 'Email@gmail.com';
          aMailMessage.Recipients.EMailAddresses := EMail;
          aMailMessage.ContentType               := 'text/html';
          aMailMessage.Subject                   := 'Subject Email';
          S := '<table style="FONT-SIZE: 12px; font-name: Tahoma" dir="rtl" border="1" cellspacing="1" cellpadding="1" width="100%">';
          S                      := S + '<tr><td>' + aBody + '</td></tr>';
          S                      := S + '</table>';
          aMailMessage.CharSet   := 'UTF-8';
          aMailMessage.Body.Text := S;
          // send mail
          try
            try
              aSMTP.Connect;
              aSMTP.Send(aMailMessage);
            except
              on E: Exception do
                // Error Handling
            end;
          finally
            if aSMTP.Connected then
              aSMTP.Disconnect;
          end;
        end;

    اگر عمری بود در پست های بعدی کلاس های دیگر برنامه را قرار میدم
    ویرایش توسط مجید : 27 / June / 2015 در ساعت 08:27 PM

  51. 3 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),meyti (05 / August / 2015),moj127 (04 / September / 2017)

  52. #30
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    امروز کلاس TUserProfile را میسازیم
    روی قسمت خالی محیط دیاگرام کلیک راست کرده و از منویی که ظاهر میشود Add و سپس Structure را انتخاب کنید .

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    یک Structure ایجاد میشود

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    نام Structure1 را به TUserProfile تغییر بدید

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    مانند کلاس TUser خصوصیات (Peroperty ها) را به کلاس اضافه میکنیم
    Point3 و Count3 برای امتیاز بازی و تعداد رمز های پیدا شده در سطح ساده
    Point4 و Count4 برای امتیاز بازی و تعداد رمز های پیدا شده در سطح متوسط
    Point5 و Count5 برای امتیاز بازی و تعداد رمز های پیدا شده در سطح سخت

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    به کلاس TUser یک Property با نام UserProfile از نوع TUserProfile اضافه میکنیم

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    به ارتباطی که بین دوکلاس برقرار شده است توجه کنید

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    یک Procedure به کلاس TUserProfile اضافه کنید و نام آن را Initial بگذارید

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    و بدنه Procedure را به شکل زیر کد نویسی کنید

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    مانند شکل زیر کلاس TUser را ویرایش کنید
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    کلاس TUserProfile اطلاعات مربوط به امتیازات و تعداد رمز های پیدا شده توسط کاربر را در اختیار شما میگذارد
    کد:
    unit WordGame_Namespace;
    
    interface
    
      uses
        IdComponent,
        IdTCPConnection,
        IdTCPClient,
        IdSSLOpenSSL,
        IdIOHandler,
        IdIOHandlerSocket,
        IdIOHandlerStack,
        IdSSL,
        IdMessageClient,
        IdSMTP,
        IdBaseComponent,
        IdMessage,
        IdExplicitTLSClientServerBase,
        IdSMTPBase,
        Forms,
        System.Classes,
        ServerController,
        StrUtils,
        Data.DB,
        Data.Win.ADODB,
        SysUtils;
    
      type
        TUserProfile = record
          private
            FPoint3: Integer;
            FPoint4: Integer;
            FPoint5: Integer;
            FCount3: Integer;
            FCount4: Integer;
            FCount5: Integer;
            procedure SetPoint3(val: Integer);
            procedure SetPoint4(val: Integer);
            procedure SetPoint5(val: Integer);
            procedure SetCount3(val: Integer);
            procedure SetCount4(val: Integer);
            procedure SetCount5(val: Integer);
            procedure Initial(aUserID: Integer);
          public
            property Point3: Integer read FPoint3 write SetPoint3;
            property Point4: Integer read FPoint4 write SetPoint4;
            property Point5: Integer read FPoint5 write SetPoint5;
            property Count3: Integer read FCount3 write SetCount3;
            property Count4: Integer read FCount4 write SetCount4;
            property Count5: Integer read FCount5 write SetCount5;
        end;
    
        TUser = class
          public
          private
          var
            FUserID     : Integer;
            FUsername   : string;
            FPassword   : string;
            FFullName   : string;
            FTotalPoint : Integer;
            FEMail      : string;
            FUserProfile: TUserProfile;
            procedure SetUserID(val: Integer);
            procedure SetUsername(val: string);
            procedure SetPassword(val: string);
            procedure SetFulName(val: string);
            procedure SetTotalPoint(val: Integer);
            procedure SetEMail(val: string);
            function SendMail(aSMTP: TIdSMTP; aMailMessage: TIdMessage; aSubject, aBody: WideString): string;
            procedure SetUserProfile(val: TUserProfile);
          public
            property UserID     : Integer read FUserID write SetUserID;
            property Username   : string read FUsername write SetUsername;
            property Password   : string read FPassword write SetPassword;
            property FullName   : string read FFullName write SetFulName;
            property TotalPoint : Integer read FTotalPoint write SetTotalPoint;
            property EMail      : string read FEMail write SetEMail;
            property UserProfile: TUserProfile read FUserProfile write SetUserProfile;
            constructor Create;
            destructor Destroy; override;
            function Login: TUser;
            function GetUserInfo(aUsername: string; aUserID: Integer = 0; aEMail: string = ''): TUser;
            function RegisterUser: TUser;
            function UpdateUser: boolean;
            function ChangePassword(NewPassword: string): boolean;
            procedure SendNewPasswordEmail(aSMTP: TIdSMTP; aMailMessage: TIdMessage);
        end;
    
      function RandomPassword(PLen: Integer): string;
      function fOpen(aQry: WideString): TADOQuery;
      function fOpenReturnInt(aQry: WideString): Integer;
      function fOpenReturnStr(aQry: WideString): String;
      function fRun(aQry: WideString): Integer;
    
    implementation
    
      function RandomPassword(PLen: Integer): string;
        var
          str: string;
        begin
          Randomize;
          str    := '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
          Result := '';
          repeat
            Result := Result + str[Random(Length(str)) + 1];
          until (Length(Result) = PLen);
        end;
    
      function fOpen(aQry: WideString): TADOQuery;
        var
          A: TADOQuery;
        begin
          try
            A            := TADOQuery.Create(Application);
            A.Connection := IWServerController.ADOConnectionMain;
            A.Close;
            A.SQL.Text := aQry;
            A.Open;
            Result := A;
          except
            on E: Exception do
              begin
                // Error Handling
              end;
          end;
        end;
    
      function fOpenReturnInt(aQry: WideString): Integer;
        var
          A: TADOQuery;
        begin
          try
            try
              A            := TADOQuery.Create(Application);
              A.Connection := IWServerController.ADOConnectionMain;
              A.Close;
              A.SQL.Text := aQry;
              A.Open;
              Result := A.Fields[0].AsInteger;
            except
              on E: Exception do
                begin
                  // Error Handling
                end;
            end;
          finally
            FreeAndNil(A);
          end;
        end;
    
      function fOpenReturnStr(aQry: WideString): String;
        var
          A: TADOQuery;
        begin
          try
            try
              A            := TADOQuery.Create(Application);
              A.Connection := IWServerController.ADOConnectionMain;
              A.Close;
              A.SQL.Text := aQry;
              A.Open;
              Result := A.Fields[0].AsString;
            except
              on E: Exception do
                begin
                  // Error Handling
                end;
            end;
          finally
            FreeAndNil(A);
          end;
        end;
    
      function fRun(aQry: WideString): Integer;
        var
          A: TADOQuery;
        begin
          try
            try
              A            := TADOQuery.Create(Application);
              A.Connection := IWServerController.ADOConnectionMain;
              A.Close;
              A.SQL.Text := aQry;
              Result     := A.ExecSQL;
            except
              on E: Exception do
                begin
                  // Error Handling
                end;
            end;
          finally
            FreeAndNil(A);
          end;
        end;
    
      procedure TUserProfile.SetPoint3(val: Integer);
        begin
          FPoint3 := val;
        end;
    
      procedure TUserProfile.SetPoint4(val: Integer);
        begin
          FPoint4 := val;
        end;
    
      procedure TUserProfile.SetPoint5(val: Integer);
        begin
          FPoint5 := val;
        end;
    
      procedure TUserProfile.SetCount3(val: Integer);
        begin
          FCount3 := val;
        end;
    
      procedure TUserProfile.SetCount4(val: Integer);
        begin
          FCount4 := val;
        end;
    
      procedure TUserProfile.SetCount5(val: Integer);
        begin
          FCount5 := val;
        end;
    
      procedure TUserProfile.Initial(aUserID: Integer);
        var
          V: TADOQuery;
          I: Integer;
        begin
          if aUserID <> 0 then
            begin
              V := fOpen('Exec sp_UserProfile ' + IntToStr(aUserID));
              if V.RecordCount > 0 then
                begin
                  Point3 := V.FieldByName('Point3').AsInteger;
                  Point4 := V.FieldByName('Point4').AsInteger;
                  Point5 := V.FieldByName('Point5').AsInteger;
                  Count3 := V.FieldByName('Count3').AsInteger;
                  Count4 := V.FieldByName('Count4').AsInteger;
                  Count5 := V.FieldByName('Count5').AsInteger;
                end;
              FreeAndNil(V);
            end;
        end;
    
      procedure TUser.SetUserID(val: Integer);
        begin
          FUserID := val;
        end;
    
      procedure TUser.SetUsername(val: string);
        begin
          FUsername := val;
        end;
    
      procedure TUser.SetPassword(val: string);
        begin
          FPassword := val;
        end;
    
      procedure TUser.SetFulName(val: string);
        begin
          FFullName := val;
        end;
    
      procedure TUser.SetTotalPoint(val: Integer);
        begin
          FTotalPoint := val;
        end;
    
      procedure TUser.SetEMail(val: string);
        begin
          FEMail := val;
        end;
    
      constructor TUser.Create;
        begin
          inherited Create;
          FUserID             := 0;
          FUsername           := '';
          FPassword           := '';
          FFullName           := '';
          FTotalPoint         := 0;
          FEMail              := '';
          FUserProfile.Point3 := 0;
          FUserProfile.Point4 := 0;
          FUserProfile.Point5 := 0;
          FUserProfile.Count3 := 0;
          FUserProfile.Count4 := 0;
          FUserProfile.Count5 := 0;
        end;
    
      destructor TUser.Destroy;
        begin
          inherited Destroy;
        end;
    
      function TUser.Login: TUser;
        var
          V: Integer;
        begin
          Result := nil;
          V      := fOpenReturnInt('Select Count(*) from Users where Username = ' + QuotedStr(Username) + ' and Password = ' +
              QuotedStr(Password));
          if V > 0 then
            Result := GetUserInfo(Username);
        end;
    
      function TUser.GetUserInfo(aUsername: string; aUserID: Integer = 0; aEMail: string = ''): TUser;
        var
          WHR_Clause: String;
          V         : TADOQuery;
          I         : Integer;
        begin
          Result := nil;
          if aUserID <> 0 then
            WHR_Clause := ' UserID = ' + IntToStr(aUserID)
          else if aUsername <> '' then
            WHR_Clause := ' Username = ' + QuotedStr(aUsername)
          else if aEMail <> '' then
            WHR_Clause := ' EMail = ' + QuotedStr(aEMail);
          V            := fOpen('Select * from Users where ' + WHR_Clause);
          if V.RecordCount > 0 then
            begin
              Result := TUser.Create;
              with Result do
                begin
                  UserID     := V.FieldByName('UserID').AsInteger;
                  FullName   := V.FieldByName('FullName').AsString;
                  Username   := V.FieldByName('Username').AsString;
                  Password   := V.FieldByName('Password').AsString;
                  TotalPoint := V.FieldByName('TotalPoint').AsInteger;
                  EMail      := V.FieldByName('EMail').AsString;
                  UserProfile.Initial(UserID);
                end;
            end;
          FreeAndNil(V);
        end;
    
      function TUser.RegisterUser: TUser;
        var
          V: Integer;
        begin
          Result := nil;
          V      := fOpenReturnInt('Select Count(*) from Users where Username = ' + QuotedStr(Username));
          if V = 0 then
            begin
              V := fOpenReturnInt('INSERT INTO Users (Username, Password, FullName, TotalPoint, EMail) VALUES (' +
                  QuotedStr(Username) + ',' + QuotedStr(Password) + ', N' + QuotedStr(FullName) + ',0,' +
                  QuotedStr(EMail) + '); Select Scope_Identity();');
              if V > 0 then
                begin
                  fRun('INSERT INTO UserProfile (UserID, DifficultyLevel, Point, PasswordCount) VALUES (' + IntToStr(V) +
                      ', 3, 0, 0)');
                  fRun('INSERT INTO UserProfile (UserID, DifficultyLevel, Point, PasswordCount) VALUES (' + IntToStr(V) +
                      ', 4, 0, 0)');
                  fRun('INSERT INTO UserProfile (UserID, DifficultyLevel, Point, PasswordCount) VALUES (' + IntToStr(V) +
                      ', 5, 0, 0)');
                  Result := Self.GetUserInfo(Self.Username);
                  Self   := Result;
                end;
            end;
        end;
    
      function TUser.UpdateUser: boolean;
        var
          V: Integer;
        begin
          Result := False;
          V      := fRun('Update Users SET FullName = N' + QuotedStr(FullName) + ' where UserID = ' + IntToStr(UserID));
          if V > 0 then
            Result := True;
        end;
    
      function TUser.ChangePassword(NewPassword: string): boolean;
        var
          V: Integer;
        begin
          Result := False;
          V      := fRun('Update Users set Password = ' + QuotedStr(NewPassword) + ' where UserID = ' + IntToStr(UserID));
          if V > 0 then
            Result := True;
        end;
    
      procedure TUser.SendNewPasswordEmail(aSMTP: TIdSMTP; aMailMessage: TIdMessage);
        var
          Subject, Body: WideString;
          NewPass      : String;
        begin
          NewPass := RandomPassword(10);
          Subject := '::  ' + IWServerController.AppName + '  :: تغییر رمز عبور  ::';
          Body    := 'کاربر گرامی ، ' + FullName + 'اقدام به درخواست رمز عبور جدید کرده اید . ' + IWServerController.AppName +
            '  شما از طریق کنترل پنل خود در سایت <br>' +
            'رمز عبور جدید شما : ' + NewPass;
          Self.ChangePassword(NewPass);
          SendMail(aSMTP, aMailMessage, Subject, Body);
        end;
    
      function TUser.SendMail(aSMTP: TIdSMTP; aMailMessage: TIdMessage; aSubject, aBody: WideString): string;
        var
          S: String;
        begin
          // setup SMTP
          aSMTP.Host := 'smtp.gmail.com';
          aSMTP.Port := 25; // for smtp.gmail.com
          // setup mail message
          aMailMessage.From.Address              := 'Email@gmail.com';
          aMailMessage.Recipients.EMailAddresses := EMail;
          aMailMessage.ContentType               := 'text/html';
          aMailMessage.Subject                   := 'Subject Email';
          S := '<table style="FONT-SIZE: 12px; font-name: Tahoma" dir="rtl" border="1" cellspacing="1" cellpadding="1" width="100%">';
          S                      := S + '<tr><td>' + aBody + '</td></tr>';
          S                      := S + '</table>';
          aMailMessage.CharSet   := 'UTF-8';
          aMailMessage.Body.Text := S;
          // send mail
          try
            try
              aSMTP.Connect;
              aSMTP.Send(aMailMessage);
            except
              on E: Exception do
                // Error Handling
            end;
          finally
            if aSMTP.Connected then
              aSMTP.Disconnect;
          end;
        end;
    
      procedure TUser.SetUserProfile(val: TUserProfile);
        begin
          FUserProfile := val;
        end;

    در پست بعدی یک فایل Backup از دیتابیس بازی را قرار میدم تا بتونید نگاه دقیقتری به جزئیات داشته باشید


    ویرایش توسط مجید : 27 / June / 2015 در ساعت 08:30 PM

  53. #31
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    آخرین فایل Backup دیتابیس بازی ضمیمه شده است
    فايل هاي پيوست شده فايل هاي پيوست شده
    ویرایش توسط مجید : 27 / June / 2015 در ساعت 08:34 PM

  54. کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده است:

    meyti (05 / August / 2015)

  55. #32
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    ایجاد کلاس TWordGame
    از این کلاس برای درج رمز جدید ، ثبت کلمه پیشنهادی کاربران در حین بازی و نمایش اطلاعات بازی استفاده میشه
    به همان روشی که در پست های قبلی توضیح داده شد یک کلاس جدید ایجاد کرده و نام آن را TWordGame بگذارید
    و مانند تصویر متد های مورد نظر را اضافه کنید

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    کد:
      type
        TWordGame = class
          public
            function GetSecretWordID(aDifficultyLevel: Integer): Integer;
            function GetSecretWord(aDifficultyLevel: Integer): string;
            function GetLastWinner(aDifficultyLevel: Integer): string;
            function GetLastFoundSecretWord(aDifficultyLevel: Integer): string;
            function AddNewSecretWord(aDifficultyLevel: Integer): Integer;
            function AddNewSuggestionWord(aUserID, agsID: Integer; aSuggestionWord: string;
              aPoint1, aPoint2, aDifficultyLevel: Integer): boolean;
            function GetWordGameData(aDifficultyLevel: Integer): TADOQuery;
        end;
    کد:
      function TWordGame.GetSecretWordID(aDifficultyLevel: Integer): Integer;
        begin
          Result := fOpenReturnInt('select gsID from GameSecrets where IsFound = 0 and DifficultyLevel = ' +
              IntToStr(aDifficultyLevel));
        end;
    
      function TWordGame.GetSecretWord(aDifficultyLevel: Integer): string;
        begin
          Result := fOpenReturnStr('SELECT Word FROM GameSecrets GS inner join Words' + IntToStr(aDifficultyLevel) +
              ' W on GS.SecretWordID = W.wID where IsFound = 0 and DifficultyLevel = ' +
              IntToStr(aDifficultyLevel));
        end;
    
      function TWordGame.GetLastWinner(aDifficultyLevel: Integer): string;
        begin
          Result := fOpenReturnStr('Select FullName from GameSecrets GS '
              + ' inner join GameWords GW on GW.gsID = GS.gsID and GW.DifficultyLevel = GS.DifficultyLevel '
              + ' inner join Users U on U.UserID = GW.UserID '
              + ' where GW.Point1 = GW.Point2 and GW.Point2 = GW.DifficultyLevel and GW.DifficultyLevel = ' +
              IntToStr(aDifficultyLevel) + ' Order by GW.gwID Desc ');
        end;
    
      function TWordGame.GetLastFoundSecretWord(aDifficultyLevel: Integer): string;
        begin
          Result := fOpenReturnStr('Select SuggestionWord from GameSecrets GS '
              + ' inner join GameWords GW on GW.gsID = GS.gsID and GW.DifficultyLevel = GS.DifficultyLevel '
              + ' inner join Users U on U.UserID = GW.UserID '
              + ' where GW.Point1 = GW.Point2 and GW.Point2 = GW.DifficultyLevel and GW.DifficultyLevel = ' +
              IntToStr(aDifficultyLevel) + ' Order by GW.gwID Desc ');
        end;
    
      function TWordGame.AddNewSecretWord(aDifficultyLevel: Integer): Integer;
        begin
          Result := fOpenReturnInt('declare @Result int;'
              + ' Exec sp_AddNewSecretWord ' + IntToStr(aDifficultyLevel) + ' , @Result output'
              + ' Select @Result;');
        end;
    
      function TWordGame.AddNewSuggestionWord(aUserID, agsID: Integer; aSuggestionWord: string;
        aPoint1, aPoint2, aDifficultyLevel: Integer): boolean;
        var
          SuggestedCount: Integer;
          aDataSet      : TADOQuery;
        begin
          SuggestedCount := 0;
          aDataSet       := fOpen('Select SuggestionWord, Count(*) from GameWords '
              + ' where SuggestionWord = N' + QuotedStr(aSuggestionWord) + ' and gsid = ' + IntToStr(agsID)
              + ' Group By SuggestionWord ');
          SuggestedCount := aDataSet.Fields[1].AsInteger;
          FreeAndNil(aDataSet);
          if SuggestedCount = 0 then
            fRun('Exec sp_AddNewSuggestionWord ' + IntToStr(aUserID) + ',N' + QuotedStr(aSuggestionWord) + ',' +
                IntToStr(aPoint1) +
                ',' + IntToStr(aPoint2) + ',' + IntToStr(aDifficultyLevel));
          Result := SuggestedCount = 0;
        end;
    
      function TWordGame.GetWordGameData(aDifficultyLevel: Integer): TADOQuery;
        begin
          Result := fOpen('Select U.FullName, GW.SuggestionWord, Cast(Point1 as Varchar(1))+'' + ''+Cast(Point2 as Varchar(1)) as Point from GameWords GW '
              + 'inner join GameSecrets GS on GS.gsID = GW.gsID and GS.DifficultyLevel = GW.DifficultyLevel '
              + 'inner join Users U on GW.UserID = U.UserID '
              + 'where GS.IsFound = 0 and GS.DifficultyLevel = ' + IntToStr(aDifficultyLevel)
              + ' Order By GW.gwID Desc ');
        end;

    این آخرین کلاس بازی بود
    در پست های بعدی فرم های بازی طراحی خواهد شد
    ویرایش توسط مجید : 25 / June / 2015 در ساعت 11:47 PM

  56. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),meyti (05 / August / 2015)

  57. #33
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    امروز در این پست ساخت فرم های بازی را انجام خواهیم داد

    دلفی را اجرا کرده و پروژه بازی را باز کنید . در لیست Unit های بازی روی Unit3 کلیک راست کرده و گزینه Remove From Project را انتخاب کنید. این Unit به صورت پیش فرض همراه با پروژه ایجاد شده است.
    سپس از منوی File گزینه New و سپس از منویی که ظاهر میشود گزینه ...Other را انتخاب کنید .
    مانند تصویر گزینه NewForm را از زیر شاخه IntraWeb انتخاب کرده و روی OK کلیلک کنید تا فرم جدیدی به پروژه اضافه شود.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    نام فرم جدید را به BaseForm تغییر داده و یک TIWTemplateProcessorHTML به فرم اضافه کنید . خصوصیت LayoutMgr فرم را به IWTemplateProcessorHTML1 تغییردهید.

    مانند تصویر Unit1 را به BaseUnit تغییر نام دهید و از منوی File گزینه SaveAll را انتخاب کنید.


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



    ویرایش توسط مجید : 22 / June / 2015 در ساعت 06:42 PM

  58. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),meyti (05 / August / 2015)

  59. #34
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    فرم ثبت عضویت (RegisterForm)
    از منوی File گزینه New و سپس ...Other را انتخاب کنید. و مانند تصویر یک فرم جدید که از همان BaseForm ارث بری میکند ایجاد کنید.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]




    نام فرم را به RegisterForm تغییر داده و Unit آنرا با نام RegisterUnit ذخیره کنید.
    روی فرم 4 عدد TIWEdit و یک عدد TTIWEmailEdit و یک عدد TIWGradButton قرار دهید و مشخصات آنها را به ترتیب زیر تغییر دهید :


    کد:
      object IWEditUsername: TIWEdit [0]
        Left = 24
        Top = 16
        Width = 120
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEditUsername'
        MaxLength = 0
        ReadOnly = False
        Required = False
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 0
        PasswordPrompt = False
      end
      object IWEmailEdit: TTIWEmailEdit [1]
        Left = 24
        Top = 43
        Width = 121
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEmailEdit'
        MaxLength = 0
        ReadOnly = False
        Required = True
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 1
        Flat = False
        ErrorMessage = #1604#1591#1601#1575' '#1740#1705' '#1570#1583#1585#1587' '#1575#1740#1605#1740#1604' '#1605#1593#1578#1576#1585' '#1608#1575#1585#1583' '#1705#1606#1740#1583'.'
        WarnOnly = False
      end
      object IWEditFullName: TIWEdit [2]
        Left = 24
        Top = 70
        Width = 120
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEditFullName'
        MaxLength = 0
        ReadOnly = False
        Required = False
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 2
        PasswordPrompt = False
      end
      object IWEditPassword: TIWEdit [3]
        Left = 24
        Top = 99
        Width = 120
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEditPassword'
        MaxLength = 0
        ReadOnly = False
        Required = False
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 3
        PasswordPrompt = True
      end
      object IWEditConfirmPassword: TIWEdit [4]
        Left = 24
        Top = 126
        Width = 120
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEditConfirmPassword'
        MaxLength = 0
        ReadOnly = False
        Required = False
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 4
        PasswordPrompt = True
      end
      object IWGradButtonRegister: TIWGradButton [5]
        Left = 24
        Top = 153
        Width = 120
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Style.Border.Color = 818394
        Style.Border.Width = 1
        Style.BorderDisabled.Color = clWebGRAY
        Style.BorderDisabled.Width = 1
        Style.Button.Alignment = taCenter
        Style.Button.Font.Color = clWebWHITE
        Style.Button.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.Button.Font.Size = 10
        Style.Button.Font.Style = []
        Style.Button.FromColor = 1746426
        Style.Button.ToColor = 2128628
        Style.ButtonHover.Alignment = taCenter
        Style.ButtonHover.Font.Color = clWebWHITE
        Style.ButtonHover.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonHover.Font.Size = 10
        Style.ButtonHover.Font.Style = []
        Style.ButtonHover.FromColor = 1150712
        Style.ButtonHover.ToColor = 1401072
        Style.ButtonActive.Alignment = taCenter
        Style.ButtonActive.Font.Color = clWebWHITE
        Style.ButtonActive.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonActive.Font.Size = 10
        Style.ButtonActive.Font.Style = []
        Style.ButtonActive.FromColor = 2128628
        Style.ButtonActive.ToColor = 1746426
        Style.ButtonDisabled.Alignment = taCenter
        Style.ButtonDisabled.Font.Color = clWebWHITE
        Style.ButtonDisabled.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonDisabled.Font.Size = 10
        Style.ButtonDisabled.Font.Style = []
        Style.ButtonDisabled.FromColor = clWebLIGHTGRAY
        Style.ButtonDisabled.ToColor = 7368816
        Style.ColorScheme = csOrange
        Style.BoxShadow.ColorTransparency = 0.500000000000000000
        Style.TextShadow.ColorTransparency = 0.500000000000000000
        Caption = #1579#1576#1578
        Color = clBtnFace
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWGradButtonRegister'
        ScriptEvents = <>
        TabOrder = 5
        OnClick = IWGradButtonRegisterClick
        OnAsyncClick = IWGradButtonRegisterAsyncClick
      end




    ویرایش توسط مجید : 23 / June / 2015 در ساعت 12:35 AM

  60. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),meyti (05 / August / 2015)

  61. #35
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    فرم ورود (LoginForm)
    از منوی File گزینه New و سپس ...Other را انتخاب کنید. و مانند تصویر یک فرم جدید که از همان BaseForm ارث بری میکند ایجاد کنید.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



    نام فرم را به LoginForm تغییر داده و Unit آنرا با نام LoginUnit ذخیره کنید.
    روی فرم 2 عدد TIWEdit و 2 عدد TIWLink و یک عدد TIWGradButton قرار دهید و مشخصات آنها را به ترتیب زیر تغییر دهید :


    کد:
      object IWEditUsername: TIWEdit [0]
        Left = 24
        Top = 16
        Width = 121
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEditUsername'
        MaxLength = 0
        ReadOnly = False
        Required = False
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 0
        PasswordPrompt = False
      end
      object IWEditPassword: TIWEdit [1]
        Left = 24
        Top = 40
        Width = 121
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEditPassword'
        MaxLength = 0
        ReadOnly = False
        Required = False
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 1
        PasswordPrompt = True
      end
      object IWGradButtonLogin: TIWGradButton [2]
        Left = 24
        Top = 67
        Width = 121
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Style.Border.Color = 1213267
        Style.Border.Width = 1
        Style.BorderDisabled.Color = clWebGRAY
        Style.BorderDisabled.Width = 1
        Style.Button.Alignment = taCenter
        Style.Button.Font.Color = clWebWHITE
        Style.Button.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.Button.Font.Size = 10
        Style.Button.Font.Style = []
        Style.Button.FromColor = 3127165
        Style.Button.ToColor = 949582
        Style.ButtonHover.Alignment = taCenter
        Style.ButtonHover.Font.Color = clWebWHITE
        Style.ButtonHover.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonHover.Font.Size = 10
        Style.ButtonHover.Font.Style = []
        Style.ButtonHover.FromColor = 2661739
        Style.ButtonHover.ToColor = 813891
        Style.ButtonActive.Alignment = taCenter
        Style.ButtonActive.Font.Color = clWebWHITE
        Style.ButtonActive.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonActive.Font.Size = 10
        Style.ButtonActive.Font.Style = []
        Style.ButtonActive.FromColor = 949582
        Style.ButtonActive.ToColor = 3127165
        Style.ButtonDisabled.Alignment = taCenter
        Style.ButtonDisabled.Font.Color = clWebWHITE
        Style.ButtonDisabled.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonDisabled.Font.Size = 10
        Style.ButtonDisabled.Font.Style = []
        Style.ButtonDisabled.FromColor = clWebLIGHTGRAY
        Style.ButtonDisabled.ToColor = 7368816
        Style.ColorScheme = csGreen
        Style.BoxShadow.ColorTransparency = 0.500000000000000000
        Style.TextShadow.ColorTransparency = 0.500000000000000000
        Caption = #1608#1585#1608#1583
        Color = clBtnFace
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWGradButtonLogin'
        ScriptEvents = <>
        TabOrder = 2
        OnClick = IWGradButtonLoginClick
        OnAsyncClick = IWGradButtonLoginAsyncClick
      end
      object IWLinkForgetPassword: TIWLink [3]
        Left = 33
        Top = 94
        Width = 105
        Height = 17
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        Color = clNone
        Font.Color = clWebBLUE
        Font.Size = 10
        Font.Style = []
        ScriptEvents = <>
        DoSubmitValidation = False
        FriendlyName = 'IWLinkForgetPassword'
        OnClick = IWLinkForgetPasswordClick
        TabOrder = 3
        RawText = False
        Caption = #1601#1585#1575#1605#1608#1588#1740' '#1585#1605#1586' '#1593#1576#1608#1585
      end
      object IWLinkRegister: TIWLink [4]
        Left = 69
        Top = 110
        Width = 49
        Height = 17
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        Color = clNone
        Font.Color = clWebRED
        Font.Size = 10
        Font.Style = []
        ScriptEvents = <>
        DoSubmitValidation = False
        FriendlyName = 'IWLinkRegister'
        OnClick = IWLinkRegisterClick
        TabOrder = 4
        RawText = False
        Caption = #1579#1576#1578' '#1606#1575#1605
      end
    ویرایش توسط مجید : 25 / June / 2015 در ساعت 05:11 PM

  62. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),meyti (05 / August / 2015)

  63. #36
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    فرم تغییر رمز عبور (ChangePasswordForm)
    از منوی File گزینه New و سپس ...Other را انتخاب کنید. و مانند تصویر یک فرم جدید که از همان BaseForm ارث بری میکند ایجاد کنید.


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    نام فرم را به ChangePasswordForm تغییر داده و Unit آنرا با نام ChangePasswordUnit ذخیره کنید.
    روی فرم 3 عدد TIWEdit و یک عدد TIWGradButton قرار دهید و مشخصات آنها را به ترتیب زیر تغییر دهید :


    کد:
      object IWEditCurrentPassword: TIWEdit [0]
        Left = 24
        Top = 19
        Width = 120
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEditCurrentPassword'
        MaxLength = 0
        ReadOnly = False
        Required = False
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 0
        PasswordPrompt = True
      end
      object IWEditNewPassword: TIWEdit [1]
        Left = 24
        Top = 46
        Width = 120
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEditNewPassword'
        MaxLength = 0
        ReadOnly = False
        Required = False
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 1
        PasswordPrompt = True
      end
      object IWEditConfirmNewPassword: TIWEdit [2]
        Left = 24
        Top = 73
        Width = 120
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEditConfirmNewPassword'
        MaxLength = 0
        ReadOnly = False
        Required = False
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 2
        PasswordPrompt = True
      end
      object IWGradButtonChangePassword: TIWGradButton [3]
        Left = 24
        Top = 100
        Width = 120
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Style.Border.Color = 818394
        Style.Border.Width = 1
        Style.BorderDisabled.Color = clWebGRAY
        Style.BorderDisabled.Width = 1
        Style.Button.Alignment = taCenter
        Style.Button.Font.Color = clWebWHITE
        Style.Button.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.Button.Font.Size = 10
        Style.Button.Font.Style = []
        Style.Button.FromColor = 1746426
        Style.Button.ToColor = 2128628
        Style.ButtonHover.Alignment = taCenter
        Style.ButtonHover.Font.Color = clWebWHITE
        Style.ButtonHover.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonHover.Font.Size = 10
        Style.ButtonHover.Font.Style = []
        Style.ButtonHover.FromColor = 1150712
        Style.ButtonHover.ToColor = 1401072
        Style.ButtonActive.Alignment = taCenter
        Style.ButtonActive.Font.Color = clWebWHITE
        Style.ButtonActive.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonActive.Font.Size = 10
        Style.ButtonActive.Font.Style = []
        Style.ButtonActive.FromColor = 2128628
        Style.ButtonActive.ToColor = 1746426
        Style.ButtonDisabled.Alignment = taCenter
        Style.ButtonDisabled.Font.Color = clWebWHITE
        Style.ButtonDisabled.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonDisabled.Font.Size = 10
        Style.ButtonDisabled.Font.Style = []
        Style.ButtonDisabled.FromColor = clWebLIGHTGRAY
        Style.ButtonDisabled.ToColor = 7368816
        Style.ColorScheme = csOrange
        Style.BoxShadow.ColorTransparency = 0.500000000000000000
        Style.TextShadow.ColorTransparency = 0.500000000000000000
        Caption = #1579#1576#1578' '#1585#1605#1586' '#1593#1576#1608#1585' '#1580#1583#1740#1583
        Color = clBtnFace
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWGradButtonChangePassword'
        ScriptEvents = <>
        TabOrder = 3
      end

    ----------------------------------------------------------------------------------------------------------------------------
    فرم فراموشی رمز عبور (ForgetPasswordForm)
    یک بار دیگر از منوی File گزینه New و سپس ...Other را انتخاب کنید. و یک فرم جدید که از همان BaseForm ارث بری میکند ایجاد کنید.
    نام فرم را به ForgetPasswordForm تغییر داده و Unit آنرا با نام ForgetPasswordUnit ذخیره کنید.
    روی فرم 1 عدد TTIWEmailEdit و یک عدد TIWGradButton قرار دهید و مشخصات آنها را به ترتیب زیر تغییر دهید :

    کد:
      object IWEmailEdit: TTIWEmailEdit [0]
        Left = 24
        Top = 19
        Width = 161
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEmailEdit'
        MaxLength = 0
        ReadOnly = False
        Required = True
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 0
        Flat = False
        ErrorMessage = #1604#1591#1601#1575' '#1740#1705' '#1570#1583#1585#1587' '#1575#1740#1605#1740#1604' '#1605#1593#1578#1576#1585' '#1608#1575#1585#1583' '#1705#1606#1740#1583'.'
        WarnOnly = False
      end
      object IWGradButtonSendPassword: TIWGradButton [1]
        Left = 25
        Top = 46
        Width = 160
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Style.Border.Color = 818394
        Style.Border.Width = 1
        Style.BorderDisabled.Color = clWebGRAY
        Style.BorderDisabled.Width = 1
        Style.Button.Alignment = taCenter
        Style.Button.Font.Color = clWebWHITE
        Style.Button.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.Button.Font.Size = 10
        Style.Button.Font.Style = []
        Style.Button.FromColor = 1746426
        Style.Button.ToColor = 2128628
        Style.ButtonHover.Alignment = taCenter
        Style.ButtonHover.Font.Color = clWebWHITE
        Style.ButtonHover.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonHover.Font.Size = 10
        Style.ButtonHover.Font.Style = []
        Style.ButtonHover.FromColor = 1150712
        Style.ButtonHover.ToColor = 1401072
        Style.ButtonActive.Alignment = taCenter
        Style.ButtonActive.Font.Color = clWebWHITE
        Style.ButtonActive.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonActive.Font.Size = 10
        Style.ButtonActive.Font.Style = []
        Style.ButtonActive.FromColor = 2128628
        Style.ButtonActive.ToColor = 1746426
        Style.ButtonDisabled.Alignment = taCenter
        Style.ButtonDisabled.Font.Color = clWebWHITE
        Style.ButtonDisabled.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonDisabled.Font.Size = 10
        Style.ButtonDisabled.Font.Style = []
        Style.ButtonDisabled.FromColor = clWebLIGHTGRAY
        Style.ButtonDisabled.ToColor = 7368816
        Style.ColorScheme = csOrange
        Style.BoxShadow.ColorTransparency = 0.500000000000000000
        Style.TextShadow.ColorTransparency = 0.500000000000000000
        Caption = #1575#1585#1587#1575#1604' '#1585#1605#1586' '#1593#1576#1608#1585' '#1576#1607' '#1575#1740#1605#1740#1604
        Color = clBtnFace
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWGradButtonSendPassword'
        ScriptEvents = <>
        TabOrder = 1
      end

    ویرایش توسط مجید : 23 / June / 2015 در ساعت 12:55 AM دلیل: افزودن ForgetPassword

  64. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),meyti (05 / August / 2015)

  65. #37
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    فرم پروفایل کاربر (UserProfileForm)
    از منوی File گزینه New و سپس ...Other را انتخاب کنید. و مانند تصویر یک فرم جدید که از همان BaseForm ارث بری میکند ایجاد کنید.


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    نام فرم را به UserProfileForm تغییر داده و Unit آنرا با نام UserProfileUnit ذخیره کنید.
    روی فرم 9 عدد TIWLabel قرار دهید و مشخصات آنها را به ترتیب زیر تغییر دهید :


    کد:
      object IWLabelUsername: TIWLabel [0]
        Left = 40
        Top = 16
        Width = 114
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelUsername'
        Caption = 'IWLabelUsername'
        RawText = False
      end
      object IWLabelTotalPoint: TIWLabel [1]
        Left = 40
        Top = 48
        Width = 113
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelTotalPoint'
        Caption = 'IWLabelTotalPoint'
        RawText = False
      end
      object IWLabelEMail: TIWLabel [2]
        Left = 40
        Top = 32
        Width = 83
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelEMail'
        Caption = 'IWLabelEMail'
        RawText = False
      end
      object IWLabelPoint3: TIWLabel [3]
        Left = 40
        Top = 64
        Width = 89
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelPoint3'
        Caption = 'IWLabelPoint3'
        RawText = False
      end
      object IWLabelPoint4: TIWLabel [4]
        Left = 40
        Top = 80
        Width = 89
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelPoint4'
        Caption = 'IWLabelPoint4'
        RawText = False
      end
      object IWLabelPoint5: TIWLabel [5]
        Left = 40
        Top = 96
        Width = 89
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelPoint5'
        Caption = 'IWLabelPoint5'
        RawText = False
      end
      object IWLabelCount3: TIWLabel [6]
        Left = 40
        Top = 112
        Width = 94
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelCount3'
        Caption = 'IWLabelCount3'
        RawText = False
      end
      object IWLabelCount4: TIWLabel [7]
        Left = 40
        Top = 128
        Width = 94
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelCount4'
        Caption = 'IWLabelCount4'
        RawText = False
      end
      object IWLabelCount5: TIWLabel [8]
        Left = 40
        Top = 144
        Width = 94
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelCount5'
        Caption = 'IWLabelCount5'
        RawText = False
      end





  66. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),meyti (05 / August / 2015)

  67. #38
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    فرم انتخاب سطح دشواری بازی (SelectDifficultyLevelForm)
    از منوی File گزینه New و سپس ...Other را انتخاب کنید. و مانند تصویر یک فرم جدید که از همان BaseForm ارث بری میکند ایجاد کنید.


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    نام فرم را به SelectDifficultyLevelForm تغییر داده و Unit آنرا با نام SelectDifficultyLevelUnit ذخیره کنید.
    روی فرم 3 عدد TIWGradButton قرار دهید و مشخصات آنها را به ترتیب زیر تغییر دهید :


    کد:
      object IWGradButtonEasy: TIWGradButton [0]
        Left = 24
        Top = 20
        Width = 130
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Style.Border.Color = 105166
        Style.Border.Width = 1
        Style.BorderDisabled.Color = clWebGRAY
        Style.BorderDisabled.Width = 1
        Style.Button.Alignment = taCenter
        Style.Button.Font.Color = clWebBLACK
        Style.Button.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.Button.Font.Size = 10
        Style.Button.Font.Style = []
        Style.Button.FromColor = 6215423
        Style.Button.ToColor = 311294
        Style.ButtonHover.Alignment = taCenter
        Style.ButtonHover.Font.Color = clWebWHITE
        Style.ButtonHover.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonHover.Font.Size = 10
        Style.ButtonHover.Font.Style = []
        Style.ButtonHover.FromColor = 105166
        Style.ButtonHover.ToColor = 2869759
        Style.ButtonActive.Alignment = taCenter
        Style.ButtonActive.Font.Color = clWebWHITE
        Style.ButtonActive.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonActive.Font.Size = 10
        Style.ButtonActive.Font.Style = []
        Style.ButtonActive.FromColor = 311294
        Style.ButtonActive.ToColor = 6215423
        Style.ButtonDisabled.Alignment = taCenter
        Style.ButtonDisabled.Font.Color = clWebWHITE
        Style.ButtonDisabled.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonDisabled.Font.Size = 10
        Style.ButtonDisabled.Font.Style = []
        Style.ButtonDisabled.FromColor = clWebLIGHTGRAY
        Style.ButtonDisabled.ToColor = 7368816
        Style.ColorScheme = csYellow
        Style.BoxShadow.ColorTransparency = 0.500000000000000000
        Style.TextShadow.ColorTransparency = 0.500000000000000000
        Caption = #1587#1575#1583#1607' - '#1587#1607' '#1581#1585#1601#1740
        Color = clBtnFace
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWGradButtonEasy'
        ScriptEvents = <>
        TabOrder = 0
      end
      object IWGradButtonMiddle: TIWGradButton [1]
        Left = 24
        Top = 44
        Width = 130
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Style.Border.Color = 818394
        Style.Border.Width = 1
        Style.BorderDisabled.Color = clWebGRAY
        Style.BorderDisabled.Width = 1
        Style.Button.Alignment = taCenter
        Style.Button.Font.Color = clWebWHITE
        Style.Button.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.Button.Font.Size = 10
        Style.Button.Font.Style = []
        Style.Button.FromColor = 1746426
        Style.Button.ToColor = 2128628
        Style.ButtonHover.Alignment = taCenter
        Style.ButtonHover.Font.Color = clWebWHITE
        Style.ButtonHover.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonHover.Font.Size = 10
        Style.ButtonHover.Font.Style = []
        Style.ButtonHover.FromColor = 1150712
        Style.ButtonHover.ToColor = 1401072
        Style.ButtonActive.Alignment = taCenter
        Style.ButtonActive.Font.Color = clWebWHITE
        Style.ButtonActive.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonActive.Font.Size = 10
        Style.ButtonActive.Font.Style = []
        Style.ButtonActive.FromColor = 2128628
        Style.ButtonActive.ToColor = 1746426
        Style.ButtonDisabled.Alignment = taCenter
        Style.ButtonDisabled.Font.Color = clWebWHITE
        Style.ButtonDisabled.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonDisabled.Font.Size = 10
        Style.ButtonDisabled.Font.Style = []
        Style.ButtonDisabled.FromColor = clWebLIGHTGRAY
        Style.ButtonDisabled.ToColor = 7368816
        Style.ColorScheme = csOrange
        Style.BoxShadow.ColorTransparency = 0.500000000000000000
        Style.TextShadow.ColorTransparency = 0.500000000000000000
        Caption = #1605#1578#1608#1587#1591' - '#1670#1607#1575#1585' '#1581#1585#1601#1740
        Color = clBtnFace
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWGradButtonMiddle'
        ScriptEvents = <>
        TabOrder = 1
      end
      object IWGradButtonHard: TIWGradButton [2]
        Left = 24
        Top = 68
        Width = 130
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Style.Border.Color = 1051800
        Style.Border.Width = 1
        Style.BorderDisabled.Color = clWebGRAY
        Style.BorderDisabled.Width = 1
        Style.Button.Alignment = taCenter
        Style.Button.Font.Color = clWebWHITE
        Style.Button.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.Button.Font.Size = 10
        Style.Button.Font.Style = []
        Style.Button.FromColor = 2366701
        Style.Button.ToColor = 1512362
        Style.ButtonHover.Alignment = taCenter
        Style.ButtonHover.Font.Color = clWebWHITE
        Style.ButtonHover.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonHover.Font.Size = 10
        Style.ButtonHover.Font.Style = []
        Style.ButtonHover.FromColor = 1775049
        Style.ButtonHover.ToColor = 1380769
        Style.ButtonActive.Alignment = taCenter
        Style.ButtonActive.Font.Color = clWebWHITE
        Style.ButtonActive.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonActive.Font.Size = 10
        Style.ButtonActive.Font.Style = []
        Style.ButtonActive.FromColor = 1512362
        Style.ButtonActive.ToColor = 2366701
        Style.ButtonDisabled.Alignment = taCenter
        Style.ButtonDisabled.Font.Color = clWebWHITE
        Style.ButtonDisabled.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonDisabled.Font.Size = 10
        Style.ButtonDisabled.Font.Style = []
        Style.ButtonDisabled.FromColor = clWebLIGHTGRAY
        Style.ButtonDisabled.ToColor = 7368816
        Style.ColorScheme = csRed
        Style.BoxShadow.ColorTransparency = 0.500000000000000000
        Style.TextShadow.ColorTransparency = 0.500000000000000000
        Caption = #1587#1582#1578' - '#1662#1606#1580' '#1581#1585#1601#1740
        Color = clBtnFace
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWGradButtonHard'
        ScriptEvents = <>
        TabOrder = 2
      end





  68. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),meyti (05 / August / 2015)

  69. #39
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    فرم بازی (WordGameForm)
    از منوی File گزینه New و سپس ...Other را انتخاب کنید. و مانند تصویر یک فرم جدید که از همان BaseForm ارث بری میکند ایجاد کنید.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]




    نام فرم را به WordGameForm تغییر داده و Unit آنرا با نام WordGameUnit ذخیره کنید.
    روی فرم 3 عدد TIWLabel
    و 1 عدد TIWEdit
    و 1 عدد TIWGradButton
    و 1 عدد TTIWDBAdvWebGrid
    و 1 عدد TDataSource
    و 1 عدد TIWAJAXNotifier
    و 1 عدد TIWTimer قرار دهید و مشخصات آنها را به ترتیب زیر تغییر دهید :


    کد:
      object IWLabelDifficultyLevel: TIWLabel [0]
        Left = 16
        Top = 16
        Width = 135
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelDifficultyLevel'
        Caption = 'IWLabelDifficultyLevel'
        RawText = False
      end
      object IWEditSuggestionWord: TIWEdit [1]
        Left = 16
        Top = 38
        Width = 121
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        FocusColor = clWebAQUAMARINE
        Editable = True
        NonEditableAsLabel = False
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWEditSuggestionWord'
        MaxLength = 0
        ReadOnly = False
        Required = False
        ScriptEvents = <>
        SubmitOnAsyncEvent = True
        TabOrder = 0
        OnAsyncKeyDown = IWEditSuggestionWordAsyncKeyDown
        PasswordPrompt = False
      end
      object TIWDBAdvWebGridGame: TTIWDBAdvWebGrid [2]
        Left = 191
        Top = 11
        Width = 322
        Height = 377
        Cursor = crPointer
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        ActiveRowColor = clNone
        ActiveRowFontColor = clNone
        AdvanceOnReturn = False
        AutoEdit = False
        AutoHTMLAdapt = False
        Background.GradientDirection = gdHorizontal
        Background.Gradient1 = clNone
        Background.Gradient2 = clNone
        Background.Picture.Stretch = False
        Background.Picture.Frame = 0
        Bands.Active = True
        Bands.PrimaryColor = clInfoBk
        Bands.SecondaryColor = clWebWHITE
        Borders.Inner = ibColumns
        Borders.Outer = obVertical
        Borders.Padding = 0
        Borders.Spacing = 0
        Borders.Width = 1
        Borders.Collapsed = True
        Borders.Color = clNone
        Borders.ColorDark = clNone
        Borders.ColorLight = clNone
        CellComment.BorderColor = 14263350
        CellComment.Color = 15784080
        CellComment.DisplayType = dtMouseOver
        CellComment.Font.Color = 9330453
        CellComment.Font.Size = 10
        CellComment.Font.Style = []
        CheckTruePicture.Stretch = False
        CheckTruePicture.Frame = 1
        CheckTruePictureURL = '/True.png'
        CheckFalsePicture.Stretch = False
        CheckFalsePicture.Frame = 1
        CheckFalsePictureURL = '/False.png'
        Color = clNone
        Columns = <
          item
            Alignment = taCenter
            CanSort = False
            CheckTrue = 'true'
            CheckFalse = 'false'
            ColumnHeaderAlignment = taCenter
            ColumnHeaderClick = False
            ColumnHeaderFont.Color = clNone
            ColumnHeaderFont.Size = 10
            ColumnHeaderFont.Style = []
            DefaultDynEdit = '0'
            DefaultDynText = '0'
            DetailFont.Color = clNone
            DetailFont.Size = 10
            DetailFont.Style = []
            Font.Color = clNone
            Font.Size = 10
            Font.Style = []
            FooterFormat = '%g'
            SpinEditMaxValue = 100
            SpinEditMinValue = 0
            Title = #1575#1605#1578#1610#1575#1586
            Width = 80
            DataField = 'Point'
          end
          item
            Alignment = taCenter
            CanSort = False
            CheckTrue = 'true'
            CheckFalse = 'false'
            ColumnHeaderAlignment = taCenter
            ColumnHeaderClick = False
            ColumnHeaderFont.Color = clNone
            ColumnHeaderFont.Size = 10
            ColumnHeaderFont.Style = []
            DataButtonType = dbtLink
            DefaultDynEdit = '0'
            DefaultDynText = '0'
            DetailFont.Color = clNone
            DetailFont.Size = 10
            DetailFont.Style = []
            Font.Color = clNone
            Font.Size = 10
            Font.Style = []
            FooterFormat = '%g'
            SpinEditMaxValue = 100
            SpinEditMinValue = 0
            Title = #1705#1604#1605#1607' '#1662#1610#1588#1606#1607#1575#1583#1740
            Width = 100
            DataField = 'SuggestionWord'
          end
          item
            Alignment = taCenter
            CanSort = False
            CheckTrue = 'true'
            CheckFalse = 'false'
            ColumnHeaderAlignment = taCenter
            ColumnHeaderClick = False
            ColumnHeaderFont.Color = clNone
            ColumnHeaderFont.Size = 10
            ColumnHeaderFont.Style = []
            DefaultDynEdit = '0'
            DefaultDynText = '0'
            DetailFont.Color = clNone
            DetailFont.Size = 10
            DetailFont.Style = []
            Font.Color = clNone
            Font.Size = 10
            Font.Style = []
            FooterFormat = '%g'
            SpinEditMaxValue = 100
            SpinEditMinValue = 0
            Title = #1705#1575#1585#1576#1585
            Width = 135
            DataField = 'FullName'
          end>
        ColumnHeaderColor = clWebGOLD
        ColumnHeaderFont.Color = clNone
        ColumnHeaderFont.Size = 10
        ColumnHeaderFont.Style = []
        ColumnHeaderBorders.Inner = ibAll
        ColumnHeaderBorders.Outer = obAll
        ColumnHeaderBorders.Padding = 0
        ColumnHeaderBorders.Spacing = 0
        ColumnHeaderBorders.Width = 1
        ColumnHeaderBorders.Collapsed = True
        ColumnHeaderBorders.Color = clNone
        ColumnHeaderBorders.ColorDark = clNone
        ColumnHeaderBorders.ColorLight = clNone
        ColumnSizing = True
        Controller.Alignment = taCenter
        Controller.Borders.Inner = ibAll
        Controller.Borders.Outer = obAll
        Controller.Borders.Padding = 0
        Controller.Borders.Spacing = 0
        Controller.Borders.Width = 0
        Controller.Borders.Collapsed = True
        Controller.Borders.Color = clNone
        Controller.Borders.ColorDark = clNone
        Controller.Borders.ColorLight = clNone
        Controller.Color = clWebMISTYROSE
        Controller.Font.Color = clWebBLACK
        Controller.Font.FontName = 'Tahoma'
        Controller.Font.Size = 10
        Controller.Font.Style = []
        Controller.Gradient1 = clWebWHITE
        Controller.Gradient2 = clWebGREEN
        Controller.GradientDirection = gdVertical
        Controller.Height = 24
        Controller.MaxPages = 10
        Controller.Position = cpTop
        Controller.Pager = cpPrevNextFirstLast
        Controller.PagerType = cptLink
        Controller.IndicatorFormat = '%d of %d'
        Controller.IndicatorType = itNone
        Controller.TextPrev = #1589#1601#1581#1607' '#1602#1576#1604
        Controller.TextNext = #1589#1601#1581#1607' '#1576#1593#1583
        Controller.TextFirst = #1589#1601#1581#1607' '#1575#1608#1604
        Controller.TextLast = #1589#1601#1581#1607' '#1570#1582#1585
        Controller.ImgPrev.Stretch = False
        Controller.ImgPrev.Frame = 0
        Controller.ImgNext.Stretch = False
        Controller.ImgNext.Frame = 0
        Controller.ImgFirst.Stretch = False
        Controller.ImgFirst.Frame = 0
        Controller.ImgLast.Stretch = False
        Controller.ImgLast.Frame = 0
        Controller.RowCountSelect = False
        Controller.HintFind = 'Find'
        Controller.ShowPagersAlways = False
        DateSeparator = '/'
        DateFormat = gdEU
        DecimalPoint = '.'
        DefaultColumnHeaderHeight = 22
        DefaultRowHeight = 22
        DetailRowHeight = 22
        DetailRowShow = dsNormal
        EditColor = clNone
        EditSelectAll = False
        FooterBorders.Inner = ibAll
        FooterBorders.Outer = obAll
        FooterBorders.Padding = 0
        FooterBorders.Spacing = 0
        FooterBorders.Width = 1
        FooterBorders.Collapsed = True
        FooterBorders.Color = clNone
        FooterBorders.ColorDark = clNone
        FooterBorders.ColorLight = clNone
        FooterColor = clBtnFace
        FooterFont.Color = clNone
        FooterFont.Size = 10
        FooterFont.Style = []
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        Glyphs.EditButton.Data = {
          36050000424D3605000000000000360400002800000010000000100000000100
          0800000000000001000000000000000000000001000000000000000000000000
          80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
          A6000020400000206000002080000020A0000020C0000020E000004000000040
          20000040400000406000004080000040A0000040C0000040E000006000000060
          20000060400000606000006080000060A0000060C0000060E000008000000080
          20000080400000806000008080000080A0000080C0000080E00000A0000000A0
          200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0
          200000C0400000C0600000C0800000C0A00000C0C00000C0E00000E0000000E0
          200000E0400000E0600000E0800000E0A00000E0C00000E0E000400000004000
          20004000400040006000400080004000A0004000C0004000E000402000004020
          20004020400040206000402080004020A0004020C0004020E000404000004040
          20004040400040406000404080004040A0004040C0004040E000406000004060
          20004060400040606000406080004060A0004060C0004060E000408000004080
          20004080400040806000408080004080A0004080C0004080E00040A0000040A0
          200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0
          200040C0400040C0600040C0800040C0A00040C0C00040C0E00040E0000040E0
          200040E0400040E0600040E0800040E0A00040E0C00040E0E000800000008000
          20008000400080006000800080008000A0008000C0008000E000802000008020
          20008020400080206000802080008020A0008020C0008020E000804000008040
          20008040400080406000804080008040A0008040C0008040E000806000008060
          20008060400080606000806080008060A0008060C0008060E000808000008080
          20008080400080806000808080008080A0008080C0008080E00080A0000080A0
          200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0
          200080C0400080C0600080C0800080C0A00080C0C00080C0E00080E0000080E0
          200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C000
          2000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C020
          2000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C040
          2000C0404000C0406000C0408000C040A000C040C000C040E000C0600000C060
          2000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C080
          2000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A0
          2000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C0
          2000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0A000808080000000
          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF000707E4E4E4E4
          E4E4E4E4E4E4E4E4E4070707EDF609090909090909090909E4070707EDF60707
          0707070707070709E4070707EDF6F6090909090909090909E4070707EDFFF609
          0909095A09090909E4070707F5FF07070707075200070709E4070707F5FFFFF6
          F609095A00000709E407070707FFFFFFF6F6095AFB360007E407070707FF0707
          070707A4FB360007ED07070709FFFFFFFFF6F6F65BFB3600ED07070709FFFFFF
          FFFFF6F6ACFB36000707070709FF070707070707F652FB360007070709FFFFFF
          FFFFFFFF079A7F360007070709FFFFFFFFFFFFFF08EC51000200070709FFFFFF
          FFFFFFFF07EC9A0202410707090909090909090907E407838307}
        Glyphs.EditHint = 'Edit'
        Glyphs.PostButton.Data = {
          36050000424D3605000000000000360400002800000010000000100000000100
          0800000000000001000000000000000000000001000000000000000000000000
          80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
          A6000020400000206000002080000020A0000020C0000020E000004000000040
          20000040400000406000004080000040A0000040C0000040E000006000000060
          20000060400000606000006080000060A0000060C0000060E000008000000080
          20000080400000806000008080000080A0000080C0000080E00000A0000000A0
          200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0
          200000C0400000C0600000C0800000C0A00000C0C00000C0E00000E0000000E0
          200000E0400000E0600000E0800000E0A00000E0C00000E0E000400000004000
          20004000400040006000400080004000A0004000C0004000E000402000004020
          20004020400040206000402080004020A0004020C0004020E000404000004040
          20004040400040406000404080004040A0004040C0004040E000406000004060
          20004060400040606000406080004060A0004060C0004060E000408000004080
          20004080400040806000408080004080A0004080C0004080E00040A0000040A0
          200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0
          200040C0400040C0600040C0800040C0A00040C0C00040C0E00040E0000040E0
          200040E0400040E0600040E0800040E0A00040E0C00040E0E000800000008000
          20008000400080006000800080008000A0008000C0008000E000802000008020
          20008020400080206000802080008020A0008020C0008020E000804000008040
          20008040400080406000804080008040A0008040C0008040E000806000008060
          20008060400080606000806080008060A0008060C0008060E000808000008080
          20008080400080806000808080008080A0008080C0008080E00080A0000080A0
          200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0
          200080C0400080C0600080C0800080C0A00080C0C00080C0E00080E0000080E0
          200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C000
          2000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C020
          2000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C040
          2000C0404000C0406000C0408000C040A000C040C000C040E000C0600000C060
          2000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C080
          2000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A0
          2000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C0
          2000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0A000808080000000
          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0007070707071D
          1D1D1D1D1D0707070707070707271E1F2727271F1E1D1D07070707071E276FB7
          F6F6F6BF6F271E1D0707072727B7F6FFF6F6F6FFFFBF271E1D070727B7FFF6B7
          6FBF276FF6FFBF271D07276FF6FF6F27F6FF6F1F27F6FF6F1E1D27B7FFBF6FF6
          FFF6B7271F6FFFBF1F1D27B7FFB7BFFFAF6FF6672727F6F6271E67BFFFB76F6F
          2727B7B72727F6F6271E6F08FFB76F6F6F676FB72727F6F6271E67BFFFF66F6F
          6F6F676F6FB7FFB7271D076FF6FFBF6F6F6F6727B7F6F66F1E07076FF6F6FFF6
          B7B7B7BFFFFFB7271E070707AFF6FFFFFFFFFFFFF6B7271F07070707076FBFF6
          F6F6F6B76F272707070707070707076FAFAF6F67270707070707}
        Glyphs.PostHint = 'Post'
        Glyphs.CancelButton.Data = {
          36050000424D3605000000000000360400002800000010000000100000000100
          0800000000000001000000000000000000000001000000000000000000000000
          80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA
          A6000020400000206000002080000020A0000020C0000020E000004000000040
          20000040400000406000004080000040A0000040C0000040E000006000000060
          20000060400000606000006080000060A0000060C0000060E000008000000080
          20000080400000806000008080000080A0000080C0000080E00000A0000000A0
          200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0
          200000C0400000C0600000C0800000C0A00000C0C00000C0E00000E0000000E0
          200000E0400000E0600000E0800000E0A00000E0C00000E0E000400000004000
          20004000400040006000400080004000A0004000C0004000E000402000004020
          20004020400040206000402080004020A0004020C0004020E000404000004040
          20004040400040406000404080004040A0004040C0004040E000406000004060
          20004060400040606000406080004060A0004060C0004060E000408000004080
          20004080400040806000408080004080A0004080C0004080E00040A0000040A0
          200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0
          200040C0400040C0600040C0800040C0A00040C0C00040C0E00040E0000040E0
          200040E0400040E0600040E0800040E0A00040E0C00040E0E000800000008000
          20008000400080006000800080008000A0008000C0008000E000802000008020
          20008020400080206000802080008020A0008020C0008020E000804000008040
          20008040400080406000804080008040A0008040C0008040E000806000008060
          20008060400080606000806080008060A0008060C0008060E000808000008080
          20008080400080806000808080008080A0008080C0008080E00080A0000080A0
          200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0
          200080C0400080C0600080C0800080C0A00080C0C00080C0E00080E0000080E0
          200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C000
          2000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C020
          2000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C040
          2000C0404000C0406000C0408000C040A000C040C000C040E000C0600000C060
          2000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C080
          2000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A0
          2000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C0
          2000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0A000808080000000
          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0007070707071D
          1D1D1D1D1D0707070707070707271E1F2727271F1E1D1D07070707071E276FB7
          F6F6F6BF6F271E1D0707072727B7F6FFF6F6F6FFFFBF271E1D070727B7FFF627
          27271F1FB7F6BF271D07276FF6FFB7B767272727B7B7FF6F1E1D27B7FFBF67B7
          F66767F6B727F6BF1F1D27B7FF6F6F67B7F6F6B72727BFF6271E67BFFF6F6F6F
          6FF6F66F2727B7F6271E6F08FF6F6F6FF6B7B7F66F27F6F6271E67BFFFF66FF6
          B76F6FB7F66FF6B7271D076FF6FFB7AF6F6F6F6FB7F6F66F1E07076FF6F6FFF6
          6F6F6FB7FFFFB7271E070707AFF6FFFFFFFFFFFFF6B7271F07070707076FBFF6
          F6F6F6B76F272707070707070707076FAFAF6F67270707070707}
        Glyphs.CancelHint = 'Cancel'
        Glyphs.SpinEditButtonDownImage.Stretch = False
        Glyphs.SpinEditButtonDownImage.Frame = 0
        Glyphs.SpinEditButtonUpImage.Stretch = False
        Glyphs.SpinEditButtonUpImage.Frame = 0
        HoverColor = clGradientActiveCaption
        HoverFontColor = clDefault
        HeaderStyle = hsRaised
        ID = 2
        Indicators.Browse.Data = {
          F6000000424DF600000000000000760000002800000010000000100000000100
          0400000000008000000000000000000000001000000000000000000000000000
          8000008000000080800080000000800080008080000080808000C0C0C0000000
          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00888888888888
          8888888888888888888888880888888888888888008888888888888800088888
          8888888800008888888888880000088888888888000000888888888800000008
          8888888800000088888888880000088888888888000088888888888800088888
          8888888800888888888888880888888888888888888888888888}
        Indicators.Insert.Data = {
          F6000000424DF600000000000000760000002800000010000000100000000100
          0400000000008000000000000000000000001000000000000000000000000000
          8000008000000080800080000000800080008080000080808000C0C0C0000000
          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00888888888888
          8888888888888888888888888888888888888888888888888888888888088888
          8888888888088888888888800808008888888888800088888888888880008888
          8888888008080088888888888808888888888888880888888888888888888888
          8888888888888888888888888888888888888888888888888888}
        Indicators.Edit.Data = {
          F6000000424DF600000000000000760000002800000010000000100000000100
          0400000000008000000000000000000000001000000000000000000000000000
          8000008000000080800080000000800080008080000080808000C0C0C0000000
          FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00888888888888
          8888888888888888888888888888888888888880080088888888888880888888
          8888888880888888888888888088888888888888808888888888888880888888
          8888888880888888888888888088888888888888808888888888888880888888
          8888888008008888888888888888888888888888888888888888}
        MouseSelect = msRow
        Nodes.NodeOpen.Stretch = False
        Nodes.NodeOpen.Frame = 1
        Nodes.NodeOpen.Data = {
          424DBE0000000000000076000000280000000900000009000000010004000000
          000048000000120B0000120B0000100000001000000000000000000080000080
          00000080800080000000800080008080000080808000C0C0C0000000FF0000FF
          000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000FFF
          FFFF000000000FFF0FFF000000000FFF0FFF000000000F00000F000000000FFF
          0FFF000000000FFF0FFF000000000FFFFFFF000000000000000000000000}
        Nodes.NodeClosed.Stretch = False
        Nodes.NodeClosed.Frame = 1
        Nodes.NodeClosed.Data = {
          424DBE0000000000000076000000280000000900000009000000010004000000
          000048000000120B0000120B0000100000001000000000000000000080000080
          00000080800080000000800080008080000080808000C0C0C0000000FF0000FF
          000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000FFF
          FFFF000000000FFFFFFF000000000FFFFFFF000000000F00000F000000000FFF
          FFFF000000000FFFFFFF000000000FFFFFFF000000000000000000000000}
        NameOfDays.Strings = (
          'Sun'
          'Mon'
          'Tue'
          'Wed'
          'Thu'
          'Fri'
          'Sat')
        NameOfMonths.Strings = (
          'January'
          'February'
          'March'
          'April'
          'May'
          'June'
          'July'
          'August'
          'September'
          'October'
          'November'
          'December')
        OuterBorder.Show = True
        OuterBorder.Color = clWebBLACK
        Page = 0
        RowCount = 15
        RowHeader.Show = False
        RowHeader.Width = 22
        RowHeader.Borders.Inner = ibColumns
        RowHeader.Borders.Outer = obVertical
        RowHeader.Borders.Padding = 0
        RowHeader.Borders.Spacing = 0
        RowHeader.Borders.Width = 1
        RowHeader.Borders.Collapsed = False
        RowHeader.Borders.Color = clNone
        RowHeader.Borders.ColorDark = clNone
        RowHeader.Borders.ColorLight = clNone
        RowHeader.Color = clNone
        RowHeader.Gradient1 = clWebBEIGE
        RowHeader.Gradient2 = clWebGOLD
        RowHeader.GradientDirection = gdHorizontal
        Scroll.Style = scNever
        Scroll.Scrollbar3DLightColor = clNone
        Scroll.ScrollbarArrowColor = clNone
        Scroll.ScrollbarBaseColor = clNone
        Scroll.ScrollbarTrackColor = clNone
        Scroll.ScrollbarDarkshadowColor = clNone
        Scroll.ScrollbarFaceColor = clNone
        Scroll.ScrollbarHighlightColor = clNone
        Scroll.ScrollbarShadowColor = clNone
        SelectColor = clHighlight
        SelectFontColor = clHighlightText
        ShowColumnHeader = True
        ShowFooter = False
        ShowSelect = True
        SortSettings.Show = False
        SortSettings.Column = 0
        SortSettings.Direction = sdAscending
        SortSettings.InitSortDir = sdAscending
        StretchColumn = -1
        TabOrder = 1
        UseFullHeight = False
        UseFullWidth = False
        OnGetCellData = TIWDBAdvWebGridGameGetCellData
        AsyncActiveRowMove = False
        AsyncEdit = False
        AsyncPaging = False
        AsyncSorting = False
        AutoAddAllFields = True
        DataSource = DataSource1
        ShowRowsAlways = True
      end
      object IWGradButtonSubmit: TIWGradButton [3]
        Left = 16
        Top = 65
        Width = 120
        Height = 21
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Style.Border.Color = 818394
        Style.Border.Width = 1
        Style.BorderDisabled.Color = clWebGRAY
        Style.BorderDisabled.Width = 1
        Style.Button.Alignment = taCenter
        Style.Button.Font.Color = clWebWHITE
        Style.Button.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.Button.Font.Size = 10
        Style.Button.Font.Style = []
        Style.Button.FromColor = 1746426
        Style.Button.ToColor = 2128628
        Style.ButtonHover.Alignment = taCenter
        Style.ButtonHover.Font.Color = clWebWHITE
        Style.ButtonHover.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonHover.Font.Size = 10
        Style.ButtonHover.Font.Style = []
        Style.ButtonHover.FromColor = 1150712
        Style.ButtonHover.ToColor = 1401072
        Style.ButtonActive.Alignment = taCenter
        Style.ButtonActive.Font.Color = clWebWHITE
        Style.ButtonActive.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonActive.Font.Size = 10
        Style.ButtonActive.Font.Style = []
        Style.ButtonActive.FromColor = 2128628
        Style.ButtonActive.ToColor = 1746426
        Style.ButtonDisabled.Alignment = taCenter
        Style.ButtonDisabled.Font.Color = clWebWHITE
        Style.ButtonDisabled.Font.FontFamily = 'Arial, Sans-Serif, Verdana'
        Style.ButtonDisabled.Font.Size = 10
        Style.ButtonDisabled.Font.Style = []
        Style.ButtonDisabled.FromColor = clWebLIGHTGRAY
        Style.ButtonDisabled.ToColor = 7368816
        Style.ColorScheme = csOrange
        Style.BoxShadow.ColorTransparency = 0.500000000000000000
        Style.TextShadow.ColorTransparency = 0.500000000000000000
        Caption = #1575#1585#1587#1575#1604
        Color = clBtnFace
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        FriendlyName = 'IWGradButtonSubmit'
        ScriptEvents = <>
        TabOrder = 2
        OnClick = IWGradButtonSubmitClick
        OnAsyncClick = IWGradButtonSubmitAsyncClick
      end
      object IWLabelLastWinner: TIWLabel [4]
        Left = 16
        Top = 96
        Width = 121
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelLastWinner'
        Caption = 'IWLabelLastWinner'
        RawText = False
      end
      object IWLabelFoundSecretWord: TIWLabel [5]
        Left = 16
        Top = 112
        Width = 163
        Height = 16
        Cursor = crAuto
        ParentShowHint = False
        ShowHint = True
        ZIndex = 0
        RenderSize = True
        Alignment = taLeftJustify
        BGColor = clNone
        Font.Color = clNone
        Font.Size = 10
        Font.Style = []
        NoWrap = False
        ConvertSpaces = False
        HasTabOrder = False
        FriendlyName = 'IWLabelFoundSecretWord'
        Caption = 'IWLabelFoundSecretWord'
        RawText = True
      end
      object DataSource1: TDataSource
        Left = 72
        Top = 184
      end
      object IWAJAXNotifier1: TIWAJAXNotifier
        OnNotify = IWAJAXNotifier1Notify
        Left = 72
        Top = 248
      end
      object IWTimer1: TIWTimer
        Enabled = True
        Interval = 5000
        OnAsyncTimer = IWTimer1AsyncTimer
        Left = 72
        Top = 304
      end




    ویرایش توسط مجید : 27 / June / 2015 در ساعت 08:38 PM

  70. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),meyti (05 / August / 2015)

  71. #40
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    در پست های بعدی کد نویسی فرم ها را انجام خواهیم داد


  72. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (21 / June / 2015),meyti (05 / August / 2015)

  73. #41
    مدیرکل سایت admin آواتار ها
    تاریخ عضویت
    September 2008
    محل سکونت
    تهران ، آیسک
    سن
    39
    نوشته ها
    522
    تشکر ها
    247
    تشکر شده 250 بار در 160 ارسال.
    Blog Entries
    1

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام و درود و تشکر بابت وقتی که گذاشتید و میگذارید.
    موفق و موید باشید
    دلفی ،*جذاب ترین زبان طراحی نرم افزار ...

  74. 2 کاربر مقابل از admin عزیز به خاطر این پست مفید تشکر کرده اند .

    meyti (05 / August / 2015),مجید (22 / June / 2015)

  75. #42
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    امروز قصد دارم کد نویسی فرم ها را شروع کنم . امیدوارم تا اینجای پروژه استفاده کرده باشید.

    برای شروع لطفا تمام فرم هایی که ساخته اید را باز کرده و در زیر قسمت implementation کد زیر را وارد کنید :

    کد:
      uses
        ServerController,
        UserSessionUnit;
    همچنین یونیت WordGame_Namespace را به قسمت Uses اصلی واقع در زیر interface تمام یونیت ها اضافه کنید و تمام فرم ها را ذخیره کرده و ببندید.
    -------------------------------------------------------------------------------------------------------------------------------------------------------------------
    یک متغیر عمومی برای نگهداری کد کاربر وارد شده نیاز داریم و باید آن را در UserSessionUnit تعریف کنیم . به قسمت public در یونیت TIWUserSession رفته و متغیر CurrentUserID را مانند کد زیر تعریف کنید :

    کد:
        TIWUserSession = class(TIWUserSessionBase)
          private
            { Private declarations }
          public
            CurrentUserID: Integer;
            { Public declarations }
        end;
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------

    فرم ورود (LoginForm) را باز کنید. فرم شما باید شبیه به تصویر زیر باشد.
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



    کد زیر را در انتهای فایل LoginUnit.pas قبل از .end وارد کنید.

    کد:
    initialization
    
      TLoginForm.SetAsMainForm;
    
    end.

    دقت کنید که .end (بخوانید end نقطه - این عبارت با ;end (بخوانید end سمیکالن) فرق دارد) که در قسمت کد در سطر آخر آمده است برای راهنمایی شماست . نباید آن را کپی کنید . هر فایل pas فقط یک عبارت .end باید داشته باشد و آن هم در انتهای فایل و سطر آخر آن است.


    یونیت های SelectDifficultyLevelUnit و ForgetPasswordUnit و RegisterUnit را به قسمت uses واقع در implementation اضافه کنید.
    و Event های OnAsyncClick و OnClick مربوط به IWGradButtonLogin را مانند نمونه زیر کد نویسی نمایید :



    کد:
      procedure TLoginForm.IWGradButtonLoginAsyncClick(Sender: TObject; EventParams: TStringList);
        begin
          inherited;
          if (Trim(IWEditUsername.Text) = '') or (Trim(IWEditPassword.Text) = '') then
            WebApplication.ShowMessage('درج نام کاربری و رمز عبور الزامی است')
          else
            IWGradButtonLoginClick(Sender);
        end;
    
      procedure TLoginForm.IWGradButtonLoginClick(Sender: TObject);
        var
          aUser: TUser;
        begin
          inherited;
          aUser          := TUser.Create;
          aUser.Username := IWEditUsername.Text;
          aUser.Password := IWEditPassword.Text;
          aUser          := aUser.Login;
          if aUser <> nil then
            begin
              UserSession.CurrentUserID := aUser.UserID;
              TSelectDifficultyLevelForm.Create(WebApplication).Show;
            end
          else
            WebApplication.ShowMessage('نام کاربری یا رمز عبور نادرست است');
          aUser.Free;
        end;

    همچنین Event های OnClick مربوط به IWLinkForgetPassword و IWLinkRegister را به صورت زیر کد نویسی کنید :

    کد:
      procedure TLoginForm.IWLinkForgetPasswordClick(Sender: TObject);
        begin
          inherited;
          TForgetPasswordForm.Create(WebApplication).Show;
        end;
    
      procedure TLoginForm.IWLinkRegisterClick(Sender: TObject);
        begin
          inherited;
          TRegisterForm.Create(WebApplication).Show;
        end;

    نکته مهم
    :
    در Event های موجود آنهایی که دارای عبارت Async هستند ، Event های ClientSide هستند و مابقی ServerSide هستند . Event های ClientSide در کامپیوتر کاربر پردازش و اجرا میشوند و Event های SeverSide سمت سرور اجرا میشوند . Event های ClientSide اغلب برای بررسی شرایط یا داده های تولید شده یا ویرایش شده توسط کاربر بکار میروند تا از اعمال بار اضافی روی سرور بکاهند . مثال : در همین فرم Login در کامپوننت IWGradButtonLogin در قسمت OnAsyncClick بررسی میشود که نام کاربری و رمز عبور وارد شده باشند و پس از اطمینان از وجود داده های فوق Event مربوط به OnClick فراخوانی میگردد.

    در انتها فایل کد LoginUnit.pas باید به شکل زیر باشد :



    کد:
    unit LoginUnit;
    
    interface
    
      uses
        WordGame_Namespace,
        Winapi.Windows,
        Winapi.Messages,
        System.SysUtils,
        System.Variants,
        System.Classes,
        Vcl.Graphics,
        Vcl.Controls,
        Vcl.Forms,
        Vcl.Dialogs,
        BaseUnit,
        IWVCLComponent,
        IWBaseLayoutComponent,
        IWBaseContainerLayout,
        IWContainerLayout,
        IWTemplateProcessorHTML,
        IWVCLBaseControl,
        IWBaseControl,
        IWBaseHTMLControl,
        IWControl,
        IWCompEdit,
        IWCompGradButton,
        IWHTMLControls;
    
      type
        TLoginForm = class(TBaseForm)
          IWEditUsername: TIWEdit;
          IWEditPassword: TIWEdit;
          IWLinkForgetPassword: TIWLink;
          IWLinkRegister: TIWLink;
          IWGradButtonLogin: TIWGradButton;
          procedure IWGradButtonLoginClick(Sender: TObject);
          procedure IWGradButtonLoginAsyncClick(Sender: TObject; EventParams: TStringList);
          procedure IWLinkForgetPasswordClick(Sender: TObject);
          procedure IWLinkRegisterClick(Sender: TObject);
          private
            { Private declarations }
          public
            { Public declarations }
        end;
    
      var
        LoginForm: TLoginForm;
    
    implementation
    
      uses
        ServerController,
        UserSessionUnit,
        SelectDifficultyLevelUnit,
        ForgetPasswordUnit,
        RegisterUnit;
    {$R *.dfm}
    
      procedure TLoginForm.IWGradButtonLoginAsyncClick(Sender: TObject; EventParams: TStringList);
        begin
          inherited;
          if (Trim(IWEditUsername.Text) = '') or (Trim(IWEditPassword.Text) = '') then
            WebApplication.ShowMessage('درج نام کاربری و رمز عبور الزامی است')
          else
            IWGradButtonLoginClick(Sender);
        end;
    
      procedure TLoginForm.IWGradButtonLoginClick(Sender: TObject);
        var
          aUser: TUser;
        begin
          inherited;
          aUser          := TUser.Create;
          aUser.Username := IWEditUsername.Text;
          aUser.Password := IWEditPassword.Text;
          aUser          := aUser.Login;
          if aUser <> nil then
            begin
              UserSession.CurrentUserID := aUser.UserID;
              TSelectDifficultyLevelForm.Create(WebApplication).Show;
            end
          else
            WebApplication.ShowMessage('نام کاربری یا رمز عبور نادرست است');
          aUser.Free;
        end;
    
      procedure TLoginForm.IWLinkForgetPasswordClick(Sender: TObject);
        begin
          inherited;
          TForgetPasswordForm.Create(WebApplication).Show;
        end;
    
      procedure TLoginForm.IWLinkRegisterClick(Sender: TObject);
        begin
          inherited;
          TRegisterForm.Create(WebApplication).Show;
        end;
    
    initialization
    
      TLoginForm.SetAsMainForm;
    
    end.
    ویرایش توسط مجید : 25 / June / 2015 در ساعت 05:13 PM

  76. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (25 / June / 2015),meyti (05 / August / 2015)

  77. #43
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    فرم تغییر رمز عبور (ChangePasswordForm) را باز کنید. فرم شما باید شبیه به تصویر زیر باشد.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    Event های OnAsyncClick و OnClick مربوط به IWGradButtonChangePassword را مانند نمونه زیر کد نویسی نمایید :


    کد:
      procedure TChangePasswordForm.IWGradButtonChangePasswordAsyncClick(Sender: TObject; EventParams: TStringList);
        begin
          inherited;
          if (Trim(IWEditCurrentPassword.Text) = '') or (Trim(IWEditNewPassword.Text) = '') or
            (Trim(IWEditConfirmNewPassword.Text) = '') then
            WebApplication.ShowMessage('درج رمز عبور فعلی و رمز عبور جدید و تکرار رمز عبور جدید الزامی است')
          else if Trim(IWEditNewPassword.Text) <> Trim(IWEditConfirmNewPassword.Text) then
            WebApplication.ShowMessage('رمز عبور جدید و تکرار آن با هم یکسان نیستند')
          else
            IWGradButtonChangePasswordClick(Sender);
        end;
    
      procedure TChangePasswordForm.IWGradButtonChangePasswordClick(Sender: TObject);
        var
          aUser: TUser;
        begin
          inherited;
          aUser := aUser.GetUserInfo('', UserSession.CurrentUserID);
          if aUser <> nil then
            begin
              if aUser.Password = IWEditCurrentPassword.Text then
                begin
                  aUser.ChangePassword(IWEditNewPassword.Text);
                  WebApplication.ShowMessage('رمز عبور جدید با موفقیت ثبت شد');
                end
              else
                WebApplication.ShowMessage('رمز عبور فعلی نادرست است');
              aUser.Free;
            end;
        end;
    در انتها فایل کد ChangePasswordUnit.pas باید به شکل زیر باشد :


    کد:
    unit ChangePasswordUnit;
    
    interface
    
      uses
        WordGame_Namespace,
        Winapi.Windows,
        Winapi.Messages,
        System.SysUtils,
        System.Variants,
        System.Classes,
        Vcl.Graphics,
        Vcl.Controls,
        Vcl.Forms,
        Vcl.Dialogs,
        BaseUnit,
        IWCompGradButton,
        IWVCLBaseControl,
        IWBaseControl,
        IWBaseHTMLControl,
        IWControl,
        IWCompEdit,
        IWVCLComponent,
        IWBaseLayoutComponent,
        IWBaseContainerLayout,
        IWContainerLayout,
        IWTemplateProcessorHTML;
    
      type
        TChangePasswordForm = class(TBaseForm)
          IWEditCurrentPassword: TIWEdit;
          IWEditNewPassword: TIWEdit;
          IWEditConfirmNewPassword: TIWEdit;
          IWGradButtonChangePassword: TIWGradButton;
          procedure IWGradButtonChangePasswordClick(Sender: TObject);
          procedure IWGradButtonChangePasswordAsyncClick(Sender: TObject; EventParams: TStringList);
          private
            { Private declarations }
          public
            { Public declarations }
        end;
    
      var
        ChangePasswordForm: TChangePasswordForm;
    
    implementation
    
      uses
        ServerController,
        UserSessionUnit;
    {$R *.dfm}
    
      procedure TChangePasswordForm.IWGradButtonChangePasswordAsyncClick(Sender: TObject; EventParams: TStringList);
        begin
          inherited;
          if (Trim(IWEditCurrentPassword.Text) = '') or (Trim(IWEditNewPassword.Text) = '') or
            (Trim(IWEditConfirmNewPassword.Text) = '') then
            WebApplication.ShowMessage('درج رمز عبور فعلی و رمز عبور جدید و تکرار رمز عبور جدید الزامی است')
          else if Trim(IWEditNewPassword.Text) <> Trim(IWEditConfirmNewPassword.Text) then
            WebApplication.ShowMessage('رمز عبور جدید و تکرار آن با هم یکسان نیستند')
          else
            IWGradButtonChangePasswordClick(Sender);
        end;
    
      procedure TChangePasswordForm.IWGradButtonChangePasswordClick(Sender: TObject);
        var
          aUser: TUser;
        begin
          inherited;
          aUser := aUser.GetUserInfo('', UserSession.CurrentUserID);
          if aUser <> nil then
            begin
              if aUser.Password = IWEditCurrentPassword.Text then
                begin
                  aUser.ChangePassword(IWEditNewPassword.Text);
                  WebApplication.ShowMessage('رمز عبور جدید با موفقیت ثبت شد');
                end
              else
                WebApplication.ShowMessage('رمز عبور فعلی نادرست است');
              aUser.Free;
            end;
        end;
    
    end.
    ویرایش توسط مجید : 23 / June / 2015 در ساعت 10:03 AM

  78. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (25 / June / 2015),meyti (05 / August / 2015)

  79. #44
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    فرم ثبت عضویت (RegisterForm) را باز کنید. فرم شما باید شبیه به تصویر زیر باشد.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    یونیت SelectDifficultyLevelUnit را به قسمت uses واقع در implementation اضافه کنید.
    Event های OnAsyncClick و OnClick مربوط به IWGradButtonRegister را مانند نمونه زیر کد نویسی نمایید :


    کد:
      procedure TRegisterForm.IWGradButtonRegisterAsyncClick(Sender: TObject; EventParams: TStringList);
        begin
          inherited;
          if (Trim(IWEditUsername.Text) = '') or (Trim(IWEmailEdit.Text) = '') or (Trim(IWEditPassword.Text) = '') or
            (Trim(IWEditConfirmPassword.Text) = '') or (Trim(IWEditFullName.Text) = '') then
            WebApplication.ShowMessage('لطفا تمام قسمت های فرم را کامل کنید')
          else
            if IWEditPassword.Text <> IWEditConfirmPassword.Text then
            WebApplication.ShowMessage('رمز عبور و تکرار آن با هم یکسان نیستند')
          else
            IWGradButtonRegisterClick(Sender);
        end;
    
      procedure TRegisterForm.IWGradButtonRegisterClick(Sender: TObject);
        var
          aUser: TUser;
        begin
          inherited;
          aUser          := TUser.Create;
          aUser.Username := IWEditUsername.Text;
          aUser.EMail    := IWEmailEdit.Text;
          aUser.Password := IWEditPassword.Text;
          aUser.FullName := IWEditFullName.Text;
          aUser          := aUser.RegisterUser;
          if aUser = nil then
            WebApplication.ShowMessage('کاربری قبلا با این نام عضو شده است . لطفا نام کاربری دیگری انتخاب کنید')
          else
            begin
              WebApplication.ShowMessage('ثبت نام با موفقیت انجام شد');
              TSelectDifficultyLevelForm.Create(WebApplication).Show;
            end;
          aUser.Free;
        end;
    در انتها فایل کد RegisterUnit.pas باید به شکل زیر باشد :

    کد:
    unit RegisterUnit;
    
    interface
    
      uses
        WordGame_Namespace,
        Winapi.Windows,
        Winapi.Messages,
        System.SysUtils,
        System.Variants,
        System.Classes,
        Vcl.Graphics,
        Vcl.Controls,
        Vcl.Forms,
        Vcl.Dialogs,
        BaseUnit,
        IWVCLComponent,
        IWBaseLayoutComponent,
        IWBaseContainerLayout,
        IWContainerLayout,
        IWTemplateProcessorHTML,
        IWCompGradButton,
        IWTMSCtrls,
        IWVCLBaseControl,
        IWBaseControl,
        IWBaseHTMLControl,
        IWControl,
        IWCompEdit;
    
      type
        TRegisterForm = class(TBaseForm)
          IWEditUsername: TIWEdit;
          IWEditPassword: TIWEdit;
          IWGradButtonRegister: TIWGradButton;
          IWEditConfirmPassword: TIWEdit;
          IWEmailEdit: TTIWEmailEdit;
          IWEditFullName: TIWEdit;
          procedure IWGradButtonRegisterClick(Sender: TObject);
          procedure IWGradButtonRegisterAsyncClick(Sender: TObject; EventParams: TStringList);
          private
            { Private declarations }
          public
            { Public declarations }
        end;
    
      var
        RegisterForm: TRegisterForm;
    
    implementation
    
      uses
        ServerController,
        UserSessionUnit,
        SelectDifficultyLevelUnit;
    {$R *.dfm}
    
      procedure TRegisterForm.IWGradButtonRegisterAsyncClick(Sender: TObject; EventParams: TStringList);
        begin
          inherited;
          if (Trim(IWEditUsername.Text) = '') or (Trim(IWEmailEdit.Text) = '') or (Trim(IWEditPassword.Text) = '') or
            (Trim(IWEditConfirmPassword.Text) = '') or (Trim(IWEditFullName.Text) = '') then
            WebApplication.ShowMessage('لطفا تمام قسمت های فرم را کامل کنید')
          else
            if IWEditPassword.Text <> IWEditConfirmPassword.Text then
            WebApplication.ShowMessage('رمز عبور و تکرار آن با هم یکسان نیستند')
          else
            IWGradButtonRegisterClick(Sender);
        end;
    
      procedure TRegisterForm.IWGradButtonRegisterClick(Sender: TObject);
        var
          aUser: TUser;
        begin
          inherited;
          aUser          := TUser.Create;
          aUser.Username := IWEditUsername.Text;
          aUser.EMail    := IWEmailEdit.Text;
          aUser.Password := IWEditPassword.Text;
          aUser.FullName := IWEditFullName.Text;
          aUser          := aUser.RegisterUser;
          if aUser = nil then
            WebApplication.ShowMessage('کاربری قبلا با این نام عضو شده است . لطفا نام کاربری دیگری انتخاب کنید')
          else
            begin
              WebApplication.ShowMessage('ثبت نام با موفقیت انجام شد');
              TSelectDifficultyLevelForm.Create(WebApplication).Show;
            end;
          aUser.Free;
        end;
    
    end.
    ویرایش توسط مجید : 23 / June / 2015 در ساعت 10:32 AM

  80. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (25 / June / 2015),meyti (05 / August / 2015)

  81. #45
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    فرم فراموشی رمز عبور (ForgetPasswordForm) را باز کنید. فرم شما باید شبیه به تصویر زیر باشد.
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    کد OnClick مربوط به IWGradButtonSendPassword را مانند نمونه زیر وارد کنید :



    کد:
      procedure TForgetPasswordForm.IWGradButtonSendPasswordClick(Sender: TObject);
        var
          aUser: TUser;
        begin
          inherited;
          aUser := aUser.GetUserInfo('', 0, IWEmailEdit.Text);
          if aUser <> nil then
            begin
              aUser.SendNewPasswordEmail(UserSession.SMTP, UserSession.MailMessage);
              WebApplication.ShowMessage('رمز عبور جدید به ایمیل شما ارسال گردید');
            end
          else
            WebApplication.ShowMessage('ایمیل وارد شده نامعتبر است');
          aUser.Free;
        end;
    در انتها فایل کد ForgetPasswordUnit.pas باید به شکل زیر باشد :


    کد:
    unit ForgetPasswordUnit;
    
    interface
    
      uses
        WordGame_Namespace,
        Winapi.Windows,
        Winapi.Messages,
        System.SysUtils,
        System.Variants,
        System.Classes,
        Vcl.Graphics,
        Vcl.Controls,
        Vcl.Forms,
        Vcl.Dialogs,
        BaseUnit,
        IWVCLComponent,
        IWBaseLayoutComponent,
        IWBaseContainerLayout,
        IWContainerLayout,
        IWTemplateProcessorHTML,
        IWCompGradButton,
        IWVCLBaseControl,
        IWBaseControl,
        IWBaseHTMLControl,
        IWControl,
        IWCompEdit,
        IWTMSCtrls;
    
      type
        TForgetPasswordForm = class(TBaseForm)
          IWEmailEdit: TTIWEmailEdit;
          IWGradButtonSendPassword: TIWGradButton;
          procedure IWGradButtonSendPasswordClick(Sender: TObject);
          private
            { Private declarations }
          public
            { Public declarations }
        end;
    
      var
        ForgetPasswordForm: TForgetPasswordForm;
    
    implementation
    
      uses
        ServerController,
        UserSessionUnit;
    {$R *.dfm}
    
      procedure TForgetPasswordForm.IWGradButtonSendPasswordClick(Sender: TObject);
        var
          aUser: TUser;
        begin
          inherited;
          aUser := aUser.GetUserInfo('', 0, IWEmailEdit.Text);
          if aUser <> nil then
            begin
              aUser.SendNewPasswordEmail(UserSession.SMTP, UserSession.MailMessage);
              WebApplication.ShowMessage('رمز عبور جدید به ایمیل شما ارسال گردید');
            end
          else
            WebApplication.ShowMessage('ایمیل وارد شده نامعتبر است');
          aUser.Free;
        end;
    
    end.


    ------------------------------------------------------------------------------------------------------------------------------------------
    یونیت UserSessionUnit را باز کنید و به حالت طراحی بروید. یک کامپوننت TIdSSLIOHandlerSocketOpenSSL و یک کامپوننت TIdMessage و یک کامپوننت TIdSMTP روی فرم قرار دهید و خصوصیات آنها را مانند کد زیر تغییر دهید :



    کد:
      object IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL
        Destination = 'smtp.gmail.com:467'
        Host = 'smtp.gmail.com'
        MaxLineAction = maException
        Port = 467
        DefaultPort = 0
        SSLOptions.Mode = sslmUnassigned
        SSLOptions.VerifyMode = []
        SSLOptions.VerifyDepth = 0
        Left = 152
        Top = 32
      end
      object MailMessage: TIdMessage
        AttachmentEncoding = 'MIME'
        BccList = <>
        CCList = <>
        Encoding = meMIME
        FromList = <
          item
          end>
        Recipients = <>
        ReplyTo = <>
        ConvertPreamble = True
        Left = 32
        Top = 32
      end
      object SMTP: TIdSMTP
        IOHandler = IdSSLIOHandlerSocketOpenSSL1
        Host = 'smtp.gmail.com'
        Password = 'MyPassword'
        Port = 467
        SASLMechanisms = <>
        UseTLS = utUseRequireTLS
        Username = 'Email@gmail.com'
        Left = 32
        Top = 84
      end
    در انتها فایل کد UserSessionUnit.pas باید به شکل زیر باشد :


    کد:
    unit UserSessionUnit;
    
    {
      This is a DataModule where you can add components or declare fields that are specific to
      ONE user. Instead of creating global variables, it is better to use this datamodule. You can then
      access the it using UserSession.
    }
    interface
    
      uses
        IWUserSessionBase,
        SysUtils,
        Classes,
        IdTCPConnection,
        IdTCPClient,
        IdExplicitTLSClientServerBase,
        IdMessageClient,
        IdSMTPBase,
        IdSMTP,
        IdMessage,
        IdBaseComponent,
        IdComponent,
        IdIOHandler,
        IdIOHandlerSocket,
        IdIOHandlerStack,
        IdSSL,
        IdSSLOpenSSL;
    
      type
        TIWUserSession = class(TIWUserSessionBase)
          IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
          MailMessage: TIdMessage;
          SMTP: TIdSMTP;
          private
            { Private declarations }
          public
            CurrentUserID: Integer;
            { Public declarations }
        end;
    
    implementation
    
    {$R *.dfm}
    
    end.
    دقت کنید که برای ارسال ایمیل باید مقادیر Email@gmail.com و MyPassword را با اطلاعات درست جایگزین نمایید
    ویرایش توسط مجید : 23 / June / 2015 در ساعت 10:43 AM

  82. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (25 / June / 2015),meyti (05 / August / 2015)

  83. #46
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    فرم پروفایل کاربر (UserProfileForm) را باز کنید. فرم شما باید شبیه به تصویر زیر باشد.
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    کد OnCreate مربوط به UserProfileForm را مانند نمونه زیر وارد کنید :



    کد:
      procedure TUserProfileForm.IWAppFormCreate(Sender: TObject);
        var
          aUser: TUser;
        begin
          inherited;
          aUser                     := aUser.GetUserInfo('', UserSession.CurrentUserID);
          IWLabelUsername.Caption   := aUser.Username;
          IWLabelTotalPoint.Caption := IntToStr(aUser.TotalPoint);
          IWLabelEMail.Caption      := aUser.EMail;
          IWLabelPoint3.Caption     := IntToStr(aUser.UserProfile.Point3);
          IWLabelPoint4.Caption     := IntToStr(aUser.UserProfile.Point4);
          IWLabelPoint5.Caption     := IntToStr(aUser.UserProfile.Point5);
          IWLabelCount3.Caption     := IntToStr(aUser.UserProfile.Count3);
          IWLabelCount4.Caption     := IntToStr(aUser.UserProfile.Count4);
          IWLabelCount5.Caption     := IntToStr(aUser.UserProfile.Count5);
          aUser.Free;
        end;
    در انتها فایل کد UserProfileUnit.pas باید به شکل زیر باشد :


    کد:
    unit UserProfileUnit;
    
    interface
    
      uses
        WordGame_Namespace,
        Winapi.Windows,
        Winapi.Messages,
        System.SysUtils,
        System.Variants,
        System.Classes,
        Vcl.Graphics,
        Vcl.Controls,
        Vcl.Forms,
        Vcl.Dialogs,
        BaseUnit,
        IWVCLComponent,
        IWBaseLayoutComponent,
        IWBaseContainerLayout,
        IWContainerLayout,
        IWTemplateProcessorHTML,
        IWVCLBaseControl,
        IWBaseControl,
        IWBaseHTMLControl,
        IWControl,
        IWCompLabel;
    
      type
        TUserProfileForm = class(TBaseForm)
          IWLabelUsername: TIWLabel;
          IWLabelTotalPoint: TIWLabel;
          IWLabelEMail: TIWLabel;
          IWLabelPoint3: TIWLabel;
          IWLabelPoint4: TIWLabel;
          IWLabelPoint5: TIWLabel;
          IWLabelCount3: TIWLabel;
          IWLabelCount4: TIWLabel;
          IWLabelCount5: TIWLabel;
          procedure IWAppFormCreate(Sender: TObject);
          private
            { Private declarations }
          public
            { Public declarations }
        end;
    
      var
        UserProfileForm: TUserProfileForm;
    
    implementation
    
      uses
        ServerController,
        UserSessionUnit;
    {$R *.dfm}
    
      procedure TUserProfileForm.IWAppFormCreate(Sender: TObject);
        var
          aUser: TUser;
        begin
          inherited;
          aUser                     := aUser.GetUserInfo('', UserSession.CurrentUserID);
          IWLabelUsername.Caption   := aUser.Username;
          IWLabelTotalPoint.Caption := IntToStr(aUser.TotalPoint);
          IWLabelEMail.Caption      := aUser.EMail;
          IWLabelPoint3.Caption     := IntToStr(aUser.UserProfile.Point3);
          IWLabelPoint4.Caption     := IntToStr(aUser.UserProfile.Point4);
          IWLabelPoint5.Caption     := IntToStr(aUser.UserProfile.Point5);
          IWLabelCount3.Caption     := IntToStr(aUser.UserProfile.Count3);
          IWLabelCount4.Caption     := IntToStr(aUser.UserProfile.Count4);
          IWLabelCount5.Caption     := IntToStr(aUser.UserProfile.Count5);
          aUser.Free;
        end;
    
    end.

  84. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (25 / June / 2015),meyti (05 / August / 2015)

  85. #47
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    یونیت UserSessionUnit را باز کرده و متغیر عمومی DifficultyLevel را از نوع عددی اضافه کنید:
    کد:
      type
        TIWUserSession = class(TIWUserSessionBase)
          IdSSLIOHandlerSocketOpenSSL1: TIdSSLIOHandlerSocketOpenSSL;
          MailMessage: TIdMessage;
          SMTP: TIdSMTP;
          private
            { Private declarations }
          public
            CurrentUserID, DifficultyLevel: Integer;
            { Public declarations }
        end;
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    فرم انتخاب سطح دشواری (SelectDifficultyLevelForm) را باز کنید. فرم شما باید شبیه به تصویر زیر باشد.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    Prpcedure زیر را به یونیت SelectDifficultyLevelUnit اضافه کنید :

    کد:
      procedure TSelectDifficultyLevelForm.ShowGame(aDifficultyLevel: Integer);
        begin
          UserSession.DifficultyLevel := aDifficultyLevel;
          TWordGameForm.Create(WebApplication).Show;
        end;

    کد OnClick مربوط به IWGradButtonEasy و IWGradButtonMiddle و IWGradButtonHard را مانند نمونه زیر وارد کنید :


    کد:
      procedure TSelectDifficultyLevelForm.IWGradButtonEasyClick(Sender: TObject);
        begin
          inherited;
          ShowGame(3);
        end;
    
      procedure TSelectDifficultyLevelForm.IWGradButtonMiddleClick(Sender: TObject);
        begin
          inherited;
          ShowGame(4);
        end;
    
      procedure TSelectDifficultyLevelForm.IWGradButtonHardClick(Sender: TObject);
        begin
          inherited;
          ShowGame(5);
        end;
    در انتها فایل کد SelectDifficultyLevelUnit.pas باید به شکل زیر باشد :


    کد:
    unit SelectDifficultyLevelUnit;
    
    interface
    
      uses
        WordGame_Namespace,
        Winapi.Windows,
        Winapi.Messages,
        System.SysUtils,
        System.Variants,
        System.Classes,
        Vcl.Graphics,
        Vcl.Controls,
        Vcl.Forms,
        Vcl.Dialogs,
        BaseUnit,
        IWVCLComponent,
        IWBaseLayoutComponent,
        IWBaseContainerLayout,
        IWContainerLayout,
        IWTemplateProcessorHTML,
        IWVCLBaseControl,
        IWBaseControl,
        IWBaseHTMLControl,
        IWControl,
        IWCompGradButton;
    
      type
        TSelectDifficultyLevelForm = class(TBaseForm)
          IWGradButtonEasy: TIWGradButton;
          IWGradButtonMiddle: TIWGradButton;
          IWGradButtonHard: TIWGradButton;
          procedure ShowGame(aDifficultyLevel: Integer);
          procedure IWGradButtonEasyClick(Sender: TObject);
          procedure IWGradButtonMiddleClick(Sender: TObject);
          procedure IWGradButtonHardClick(Sender: TObject);
          private
            { Private declarations }
          public
            { Public declarations }
        end;
    
      var
        SelectDifficultyLevelForm: TSelectDifficultyLevelForm;
    
    implementation
    
      uses
        ServerController,
        UserSessionUnit,
        WordGameUnit;
    {$R *.dfm}
    
      procedure TSelectDifficultyLevelForm.ShowGame(aDifficultyLevel: Integer);
        begin
          UserSession.DifficultyLevel := aDifficultyLevel;
          TWordGameForm.Create(WebApplication).Show;
        end;
    
      procedure TSelectDifficultyLevelForm.IWGradButtonEasyClick(Sender: TObject);
        begin
          inherited;
          ShowGame(3);
        end;
    
      procedure TSelectDifficultyLevelForm.IWGradButtonMiddleClick(Sender: TObject);
        begin
          inherited;
          ShowGame(4);
        end;
    
      procedure TSelectDifficultyLevelForm.IWGradButtonHardClick(Sender: TObject);
        begin
          inherited;
          ShowGame(5);
        end;
    
    end.

  86. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (25 / June / 2015),meyti (05 / August / 2015)

  87. #48
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    فرم بازی (WordGameForm) را باز کنید. فرم شما باید شبیه به تصویر زیر باشد.
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    کد های OnCreate فرم
    و OnClick و OnAsyncClick برای IWGradButtonSubmit
    و OnAsyncKeyDown برای IWEditSuggestionWord
    و OnGetCellData برای TIWDBAdvWebGridGame
    و OnNotify برای IWAJAXNotifier1
    و OnAsyncTimer برای IWTimer1 را مانند زیر کد نویسی کنید :




    کد:
      procedure TWordGameForm.IWAppFormCreate(Sender: TObject);
        begin
          inherited;
          try
            try
              if WordGame.GetSecretWord(UserSession.DifficultyLevel) = '' then
                agsID := WordGame.AddNewSecretWord(UserSession.DifficultyLevel)
              else
                agsID := WordGame.GetSecretWordID(UserSession.DifficultyLevel);
              case UserSession.DifficultyLevel of
                3:
                  IWLabelDifficultyLevel.Caption := 'ساده - سه حرفی';
                4:
                  IWLabelDifficultyLevel.Caption := 'متوسط - چهار حرفی';
                5:
                  IWLabelDifficultyLevel.Caption := 'سخت - پنج حرفی';
              end;
              DataSource1.DataSet            := WordGame.GetWordGameData(UserSession.DifficultyLevel);
              IWEditSuggestionWord.MaxLength := UserSession.DifficultyLevel;
              IWLabelLastWinner.Caption      := WordGame.GetLastWinner(UserSession.DifficultyLevel);
              IWLabelFoundSecretWord.Caption :=
                '<a style=" text-decoration: none" href="http://www.farsilookup.com/p2p/seek.jsp?lang=fa&word=' +
                WordGame.GetLastFoundSecretWord(UserSession.DifficultyLevel) + '" target="_blank">' +
                WordGame.GetLastFoundSecretWord(UserSession.DifficultyLevel) + '</a>';
            except
              on E: Exception do
                begin
                  // Error Handling
                end;
            end;
          finally
    
          end;
        end;
    
      procedure TWordGameForm.IWEditSuggestionWordAsyncKeyDown(Sender: TObject; EventParams: TStringList);
        begin
          inherited;
          if EventParams[7] = 'which=13' then
            IWGradButtonSubmitAsyncClick(Sender, EventParams);
        end;
    
      procedure TWordGameForm.IWGradButtonSubmitAsyncClick(Sender: TObject; EventParams: TStringList);
        var
          I, J: Integer;
          S   : Char;
        begin
          inherited;
          for I := 1 to Length(IWEditSuggestionWord.Text) do
            begin
              S := IWEditSuggestionWord.Text[I];
              if (Pos(S, '`~!@#$%^&*()_+-=[]{}\|":;/?.>,<' + QuotedStr('''')) > 0) or (S = ' ') then
                begin
                  WebApplication.ShowMessage('وجود کاراکتر غیر مجاز');
                  Exit;
                end;
              for J := I + 1 to Length(IWEditSuggestionWord.Text) do
                begin
                  if S = IWEditSuggestionWord.Text[J] then
                    begin
                      WebApplication.ShowMessage('وجود کاراکتر تکراری');
                      Exit;
                    end;
                end;
            end;
    
          if Length(Trim(IWEditSuggestionWord.Text)) = UserSession.DifficultyLevel then
            IWGradButtonSubmitClick(Sender)
          else
            WebApplication.ShowMessage('طول کلمه پیشنهادی با طول رمز یکسان نیست');
        end;
    
      procedure TWordGameForm.IWGradButtonSubmitClick(Sender: TObject);
        var
          I, J, CommonCharsCnt, CompatibleCharsCnt: Integer;
          SecretWord                              : String;
        begin
          inherited;
          try
            try
              SecretWord         := WordGame.GetSecretWord(UserSession.DifficultyLevel);
              SecretWord         := ReplaceStr(SecretWord, 'ي', 'ی');
              SecretWord         := ReplaceStr(SecretWord, 'ك', 'ک');
              CommonCharsCnt     := 0;
              CompatibleCharsCnt := 0;
    
              for I := 1 to Length(IWEditSuggestionWord.Text) do
                begin
                  for J := 1 to Length(SecretWord) do
                    begin
                      if IWEditSuggestionWord.Text[I] = SecretWord[J] then
                        Inc(CommonCharsCnt);
                    end;
                end;
              for I := 1 to Length(SecretWord) do
                begin
                  if SecretWord[I] = IWEditSuggestionWord.Text[I] then
                    Inc(CompatibleCharsCnt);
                end;
    
              if WordGame.AddNewSuggestionWord(UserSession.CurrentUserID, agsID, IWEditSuggestionWord.Text, CommonCharsCnt,
                CompatibleCharsCnt,
                UserSession.DifficultyLevel) then
                begin
                  if (CommonCharsCnt = CompatibleCharsCnt) and (CommonCharsCnt = UserSession.DifficultyLevel) then
                    agsID := WordGame.AddNewSecretWord(UserSession.DifficultyLevel);
    
                  TWordGameForm.Create(WebApplication).Show;
                  Release;
                end
              else
                begin
                  WebApplication.ShowMessage('کلمه پیشنهادی تکراری است');
                  IWEditSuggestionWord.Text := '';
                end;
            except
              on E: Exception do
                begin
                  // Error Handling
                end;
            end;
          finally
    
          end;
        end;
    
      procedure TWordGameForm.IWAJAXNotifier1Notify(Sender: TObject);
        begin
          inherited;
          DataSource1.DataSet            := WordGame.GetWordGameData(UserSession.DifficultyLevel);
          IWEditSuggestionWord.MaxLength := UserSession.DifficultyLevel;
          IWLabelLastWinner.Caption      := WordGame.GetLastWinner(UserSession.DifficultyLevel);
          IWLabelFoundSecretWord.Caption :=
            '<a style=" text-decoration: none" href="http://www.farsilookup.com/p2p/seek.jsp?lang=fa&word=' +
            WordGame.GetLastFoundSecretWord(UserSession.DifficultyLevel) + '" target="_blank">' +
            WordGame.GetLastFoundSecretWord(UserSession.DifficultyLevel) + '</a>';
          TIWDBAdvWebGridGame.AsyncUpdateAllCells;
        end;
    
      procedure TWordGameForm.IWTimer1AsyncTimer(Sender: TObject; EventParams: TStringList);
        begin
          inherited;
          IWAJAXNotifier1.Notify;
        end;
    
      procedure TWordGameForm.TIWDBAdvWebGridGameGetCellData(Sender: TObject; RowIndex, ColumnIndex: Integer;
        var AValue: string);
        var
          S: String;
        begin
          inherited;
          if ColumnIndex = 1 then
            AValue := '<a style=" text-decoration: none" href="http://www.farsilookup.com/p2p/seek.jsp?lang=fa&word=' + AValue +
              '"'' target="_blank">' +
              AValue + '</a>';
        end;
    در انتها فایل کد WordGameUnit.pas باید به شکل زیر باشد :

    کد:
    unit WordGameUnit;
    
    interface
    
      uses
        WordGame_Namespace,
        StrUtils,
        Winapi.Windows,
        Winapi.Messages,
        System.SysUtils,
        BaseUnit,
        IWCompExtCtrls,
        IWBaseComponent,
        IWBaseHTMLComponent,
        IWBaseHTML40Component,
        Data.DB,
        IWCompGradButton,
        IWControl,
        IWWebGrid,
        IWDBAdvWebGrid,
        IWCompEdit,
        Vcl.Controls,
        IWVCLBaseControl,
        IWBaseControl,
        IWBaseHTMLControl,
        IWCompLabel,
        System.Classes,
        IWVCLComponent,
        IWBaseLayoutComponent,
        IWBaseContainerLayout,
        IWContainerLayout,
        IWTemplateProcessorHTML;
    
      type
        TWordGameForm = class(TBaseForm)
          IWLabelDifficultyLevel: TIWLabel;
          IWEditSuggestionWord: TIWEdit;
          TIWDBAdvWebGridGame: TTIWDBAdvWebGrid;
          IWGradButtonSubmit: TIWGradButton;
          DataSource1: TDataSource;
          IWLabelLastWinner: TIWLabel;
          IWLabelFoundSecretWord: TIWLabel;
          IWAJAXNotifier1: TIWAJAXNotifier;
          IWTimer1: TIWTimer;
          procedure IWAppFormCreate(Sender: TObject);
          procedure IWGradButtonSubmitAsyncClick(Sender: TObject; EventParams: TStringList);
          procedure IWGradButtonSubmitClick(Sender: TObject);
          procedure IWEditSuggestionWordAsyncKeyDown(Sender: TObject; EventParams: TStringList);
          procedure TIWDBAdvWebGridGameGetCellData(Sender: TObject; RowIndex, ColumnIndex: Integer; var AValue: string);
          procedure IWTimer1AsyncTimer(Sender: TObject; EventParams: TStringList);
          procedure IWAJAXNotifier1Notify(Sender: TObject);
          private
            { Private declarations }
          public
            WordGame: TWordGame;
            agsID   : Integer;
            { Public declarations }
        end;
    
      var
        WordGameForm: TWordGameForm;
    
    implementation
    
      uses
        ServerController,
        UserSessionUnit;
    {$R *.dfm}
    
      procedure TWordGameForm.IWAppFormCreate(Sender: TObject);
        begin
          inherited;
          try
            try
              if WordGame.GetSecretWord(UserSession.DifficultyLevel) = '' then
                agsID := WordGame.AddNewSecretWord(UserSession.DifficultyLevel)
              else
                agsID := WordGame.GetSecretWordID(UserSession.DifficultyLevel);
              case UserSession.DifficultyLevel of
                3:
                  IWLabelDifficultyLevel.Caption := 'ساده - سه حرفی';
                4:
                  IWLabelDifficultyLevel.Caption := 'متوسط - چهار حرفی';
                5:
                  IWLabelDifficultyLevel.Caption := 'سخت - پنج حرفی';
              end;
              DataSource1.DataSet            := WordGame.GetWordGameData(UserSession.DifficultyLevel);
              IWEditSuggestionWord.MaxLength := UserSession.DifficultyLevel;
              IWLabelLastWinner.Caption      := WordGame.GetLastWinner(UserSession.DifficultyLevel);
              IWLabelFoundSecretWord.Caption :=
                '<a style=" text-decoration: none" href="http://www.farsilookup.com/p2p/seek.jsp?lang=fa&word=' +
                WordGame.GetLastFoundSecretWord(UserSession.DifficultyLevel) + '" target="_blank">' +
                WordGame.GetLastFoundSecretWord(UserSession.DifficultyLevel) + '</a>';
            except
              on E: Exception do
                begin
                  // Error Handling
                end;
            end;
          finally
    
          end;
        end;
    
      procedure TWordGameForm.IWEditSuggestionWordAsyncKeyDown(Sender: TObject; EventParams: TStringList);
        begin
          inherited;
          if EventParams[7] = 'which=13' then
            IWGradButtonSubmitAsyncClick(Sender, EventParams);
        end;
    
      procedure TWordGameForm.IWGradButtonSubmitAsyncClick(Sender: TObject; EventParams: TStringList);
        var
          I, J: Integer;
          S   : Char;
        begin
          inherited;
          for I := 1 to Length(IWEditSuggestionWord.Text) do
            begin
              S := IWEditSuggestionWord.Text[I];
              if (Pos(S, '`~!@#$%^&*()_+-=[]{}\|":;/?.>,<' + QuotedStr('''')) > 0) or (S = ' ') then
                begin
                  WebApplication.ShowMessage('وجود کاراکتر غیر مجاز');
                  Exit;
                end;
              for J := I + 1 to Length(IWEditSuggestionWord.Text) do
                begin
                  if S = IWEditSuggestionWord.Text[J] then
                    begin
                      WebApplication.ShowMessage('وجود کاراکتر تکراری');
                      Exit;
                    end;
                end;
            end;
    
          if Length(Trim(IWEditSuggestionWord.Text)) = UserSession.DifficultyLevel then
            IWGradButtonSubmitClick(Sender)
          else
            WebApplication.ShowMessage('طول کلمه پیشنهادی با طول رمز یکسان نیست');
        end;
    
      procedure TWordGameForm.IWGradButtonSubmitClick(Sender: TObject);
        var
          I, J, CommonCharsCnt, CompatibleCharsCnt: Integer;
          SecretWord                              : String;
        begin
          inherited;
          try
            try
              SecretWord         := WordGame.GetSecretWord(UserSession.DifficultyLevel);
              SecretWord         := ReplaceStr(SecretWord, 'ي', 'ی');
              SecretWord         := ReplaceStr(SecretWord, 'ك', 'ک');
              CommonCharsCnt     := 0;
              CompatibleCharsCnt := 0;
    
              for I := 1 to Length(IWEditSuggestionWord.Text) do
                begin
                  for J := 1 to Length(SecretWord) do
                    begin
                      if IWEditSuggestionWord.Text[I] = SecretWord[J] then
                        Inc(CommonCharsCnt);
                    end;
                end;
              for I := 1 to Length(SecretWord) do
                begin
                  if SecretWord[I] = IWEditSuggestionWord.Text[I] then
                    Inc(CompatibleCharsCnt);
                end;
    
              if WordGame.AddNewSuggestionWord(UserSession.CurrentUserID, agsID, IWEditSuggestionWord.Text, CommonCharsCnt,
                CompatibleCharsCnt,
                UserSession.DifficultyLevel) then
                begin
                  if (CommonCharsCnt = CompatibleCharsCnt) and (CommonCharsCnt = UserSession.DifficultyLevel) then
                    agsID := WordGame.AddNewSecretWord(UserSession.DifficultyLevel);
    
                  TWordGameForm.Create(WebApplication).Show;
                  Release;
                end
              else
                begin
                  WebApplication.ShowMessage('کلمه پیشنهادی تکراری است');
                  IWEditSuggestionWord.Text := '';
                end;
            except
              on E: Exception do
                begin
                  // Error Handling
                end;
            end;
          finally
    
          end;
        end;
    
      procedure TWordGameForm.IWAJAXNotifier1Notify(Sender: TObject);
        begin
          inherited;
          DataSource1.DataSet            := WordGame.GetWordGameData(UserSession.DifficultyLevel);
          IWEditSuggestionWord.MaxLength := UserSession.DifficultyLevel;
          IWLabelLastWinner.Caption      := WordGame.GetLastWinner(UserSession.DifficultyLevel);
          IWLabelFoundSecretWord.Caption :=
            '<a style=" text-decoration: none" href="http://www.farsilookup.com/p2p/seek.jsp?lang=fa&word=' +
            WordGame.GetLastFoundSecretWord(UserSession.DifficultyLevel) + '" target="_blank">' +
            WordGame.GetLastFoundSecretWord(UserSession.DifficultyLevel) + '</a>';
          TIWDBAdvWebGridGame.AsyncUpdateAllCells;
        end;
    
      procedure TWordGameForm.IWTimer1AsyncTimer(Sender: TObject; EventParams: TStringList);
        begin
          inherited;
          IWAJAXNotifier1.Notify;
        end;
    
      procedure TWordGameForm.TIWDBAdvWebGridGameGetCellData(Sender: TObject; RowIndex, ColumnIndex: Integer;
        var AValue: string);
        var
          S: String;
        begin
          inherited;
          if ColumnIndex = 1 then
            AValue := '<a style=" text-decoration: none" href="http://www.farsilookup.com/p2p/seek.jsp?lang=fa&word=' + AValue +
              '"'' target="_blank">' +
              AValue + '</a>';
        end;
    
    end.
    ویرایش توسط مجید : 28 / June / 2015 در ساعت 06:21 PM

  88. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (27 / June / 2015),meyti (05 / August / 2015)

  89. #49
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    در این پست می خواهیم روش های مختلف ایجاد منو برای پروژه را بررسی کنیم .

    روش اول : ساخت منو بوسیله کامپوننت TIWMenu : این کامپوننت در IntraWeb Standard وجود دارد و کامپوننت پایه برای ایجاد منو در اینتراوب است .
    برای ایجاد منو در پروژه به یک Frame نیاز داریم . از منوی File گزینه New و سپس ...Other را انتخاب کنید و مانند تصویر یک Frame جدید به پروژه اضافه کنید. (دقت کنید منظور Frame است نه Form)

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    نام IWFrame1 را به MenuFrame_Intraweb و نام Unit1.pas را به MenuFrame_Intraweb_Unit.pas تغییر دهید .
    یک کامپوننت TMainMenu و یک TIWMenu روی فریم قرار دهید و یونیت های ServerController و UserSessionUnit و LoginUnit و UserProfileUnit و SelectDifficultyLevelUnit و ChangePasswordUnit را به قسمت implementation / uses اضافه کنید .
    کد:
    implementation
    
      uses
        ServerController,
        UserSessionUnit,
        LoginUnit,
        UserProfileUnit,
        SelectDifficultyLevelUnit,
        ChangePasswordUnit;

    مانند تصویر آیتم های منو را برای TMainMenu تعریف کنید.
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    و نام آیتم ها را مانند زیر قرار دهید :

    کد:
          mnuChangePassword: TMenuItem;
          mnuSelectDifficultyLevel: TMenuItem;
          mnuUserProfile: TMenuItem;
          mnuExit: TMenuItem;
          mnuLogin: TMenuItem;
    و کد های زیر را برای Event های OnClick آیتم های منو بنویسید و مقدار OnClick را برای mnuLogin برابر با mnuExitClick قرار دهید :

    کد:
      procedure TMenuFrame_Intraweb.mnuChangePasswordClick(Sender: TObject);
        begin
          TChangePasswordForm.Create(TIWAPPForm(Parent)).Show;
        end;
    
      procedure TMenuFrame_Intraweb.mnuExitClick(Sender: TObject);
        begin
          UserSession.CurrentUserID := 0;
          TLoginForm.Create(TIWAPPForm(Parent)).Show;
        end;
    
      procedure TMenuFrame_Intraweb.mnuSelectDifficultyLevelClick(Sender: TObject);
        begin
          TSelectDifficultyLevelForm.Create(TIWAPPForm(Parent)).Show;
        end;
    
      procedure TMenuFrame_Intraweb.mnuUserProfileClick(Sender: TObject);
        begin
          TUserProfileForm.Create(TIWAPPForm(Parent)).Show;
        end;
    مقدار AttachedMenu از کامپوننت IWMenu1 را به MainMenu1 تغییر دهید تا ارتباط بین دو کامپوننت برقرار شود.
    تا اینجا ساخت منو به روش اول تمام شد . برای اینکه بتوانید منو را در تمام فرم ها ببینید مراحل زیر را دنبال کنید:
    فرم BaseForm را باز کنید .
    مانند تصویر در قسمت Tool Palette عبارت Frame را جستجو کنید و سپس روی Frames کلیک کنید . سپس در محل دلخواه خود روی فرم کلیک کنید تا پنجره ی انتخاب فریم باز شود.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



    MenuFrame_Intraweb را از لیست فریم های موجود انتخاب کرده و OK را کلیک کنید.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    از این پس منو ایجاد شده در تمام فرم ها نمایش داده خواهد شد . بعضی از فرم ها مانند فرم ورود کاربران نیازی به منو ندارند . از این رو فرم نام برده را باز کنید و خصوصیت Visible فریم منو را False کنید.
    ویرایش توسط مجید : 28 / June / 2015 در ساعت 07:54 PM

  90. 3 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (27 / June / 2015),b_e_shamlu (16 / July / 2015),meyti (05 / August / 2015)

  91. #50
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    روش دوم : ساخت منو بوسیله کامپوننت TTIWMainMenu : این کامپوننت در TMS IW وجود دارد .
    برای ایجاد منوی جدید در پروژه به یک Frame دیگر نیاز داریم . از منوی File گزینه New و سپس ...Other را انتخاب کنید و مانند تصویر یک Frame جدید به پروژه اضافه کنید. (دقت کنید منظور Frame است نه Form)

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    نام IWFrame1 را به MenuFrame_TMS و نام Unit1.pas را به MenuFrame_TMS_Unit.pas تغییر دهید .
    یک کامپوننت TMainMenu و یک TTIWMainMenu روی فریم قرار دهید و یونیت های ServerController و UserSessionUnit و LoginUnit و UserProfileUnit و SelectDifficultyLevelUnit و ChangePasswordUnit را به قسمت implementation / uses اضافه کنید .
    کد:
    implementation
    
      uses
        ServerController,
        UserSessionUnit,
        LoginUnit,
        UserProfileUnit,
        SelectDifficultyLevelUnit,
        ChangePasswordUnit;

    مانند تصویر آیتم های منو را برای TMainMenu تعریف کنید.
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    و نام آیتم ها را مانند زیر قرار دهید :

    کد:
          mnuChangePassword: TMenuItem;
          mnuSelectDifficultyLevel: TMenuItem;
          mnuUserProfile: TMenuItem;
          mnuExit: TMenuItem;
          mnuLogin: TMenuItem;
    کد زیر را برای OnCreate کامپوننت IWFrameRegion بنویسید :

    کد:
      procedure TMenuFrame_TMS.IWFrameRegionCreate(Sender: TObject);
        begin
          if (TIWAPPForm(Parent).Name = 'RegisterForm') or (TIWAPPForm(Parent).Name = 'ForgetPasswordForm') then
            begin
              mnuChangePassword.Visible        := False;
              mnuSelectDifficultyLevel.Visible := False;
              mnuUserProfile.Visible           := False;
              mnuExit.Visible                  := False;
            end
          else
            mnuLogin.Visible := False;
        end;
    و کد های زیر را برای Event های OnClick آیتم های منو بنویسید و مقدار OnClick را برای mnuLogin برابر با mnuExitClick قرار دهید :

    کد:
      procedure TMenuFrame_Intraweb.mnuChangePasswordClick(Sender: TObject);
        begin
          TChangePasswordForm.Create(TIWAPPForm(Parent)).Show;
        end;
    
      procedure TMenuFrame_Intraweb.mnuExitClick(Sender: TObject);
        begin
          UserSession.CurrentUserID := 0;
          TLoginForm.Create(TIWAPPForm(Parent)).Show;
        end;
    
      procedure TMenuFrame_Intraweb.mnuSelectDifficultyLevelClick(Sender: TObject);
        begin
          TSelectDifficultyLevelForm.Create(TIWAPPForm(Parent)).Show;
        end;
    
      procedure TMenuFrame_Intraweb.mnuUserProfileClick(Sender: TObject);
        begin
          TUserProfileForm.Create(TIWAPPForm(Parent)).Show;
        end;

    مقدار Menu از کامپوننت TIWMainMenu1 را به MainMenu1 تغییر دهید تا ارتباط بین دو کامپوننت برقرار شود.
    تا اینجا ساخت منو به روش دوم تمام شد . برای اینکه بتوانید منو را در تمام فرم ها ببینید مراحل زیر را دنبال کنید:
    فرم BaseForm را باز کنید .
    مانند تصویر در قسمت Tool Palette عبارت Frame را جستجو کنید و سپس روی Frames کلیک کنید . سپس در محل دلخواه خود روی فرم کلیک کنید تا پنجره ی انتخاب فریم باز شود.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



    MenuFrame_TMS را از لیست فریم های موجود انتخاب کرده و OK را کلیک کنید.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    از این پس منو ایجاد شده در تمام فرم ها نمایش داده خواهد شد . بعضی از فرم ها مانند فرم ورود کاربران نیازی به منو ندارند . از این رو فرم نام برده را باز کنید و خصوصیت Visible فریم منو را False کنید.

  92. 3 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (08 / July / 2015),b_e_shamlu (16 / July / 2015),meyti (05 / August / 2015)

  93. #51
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    آخرين تغييرات و اصلاحات در ظاهر و کد نويسي فرم ها و کلاس ها و ديتابيس انجام شد و پست هاي قبلي نيز متناسب با تغييرات بروز رساني گرديد. فايل هاي ضميمه شده به اين پست نيز حاوي آخرين تغييرات هستند . فکر ميکنم از اين به بعد ديگه تغييري در ظاهر فرم ها و کدنويسي آنها و همچنين در ساختار ديتابيس لازم نباشد . مگر اينکه کاربران عزيز باگي پيدا کنند و اطلاع دهند . از اين پست به بعد طراحي فرم ها با HTML و CSS و هر جا که لازم باشد از JavaScript نيز استفاده خواهيم کرد تا ظاهر بازي زيبا تر شود . البته نتيجه هر چه شود حاصل سليقه و دانش بنده خواهد بود و ممکن است خيلي مطلوب تمام کاربران نباشد . از اين رو شما ميتوانيد پس از مطالعه پست هاي بعدي تغييرات مورد نظر خود را به دلخواه اعمال کنيد و پوسته بازي را براي خود طراحي نماييد .
    فايل هاي پيوست شده فايل هاي پيوست شده

  94. 3 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (08 / July / 2015),b_e_shamlu (16 / July / 2015),meyti (05 / August / 2015)

  95. #52
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    روش سوم : استفاده از نرم افزار طراحی منو Sothink DHTML Menu 9 + استفاده از IWLink
    این روش را بعدا به طور کامل توضیح خواهم داد . پیش نیاز روش سوم ساخت Template برای فرم هاست که در پست های بعدی به آن خواهیم پرداخت


  96. 3 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (08 / July / 2015),b_e_shamlu (16 / July / 2015),meyti (05 / August / 2015)

  97. #53
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    شاید تا حالا این سوال براتون پیش اومده باشه که چرا ظاهر بعضی از فرمها ناقص به نظر میان . مثلا در فرم ثبت نام فقط IWEdit برای ورود اطلاعات وجود داشت و هیچ IWLabel ی برای اینکه کاربر بفهمه کجا باید چی وارد کنه وجو نداشت . دلیل این مساله اینه که ما قصد داریم برای بازی پوسته طراحی کنیم و از اونجایی که تعدادی از این عبارت ها استاتیک هستند نیازی نیست که اونا رو در فرم طراحی کنیم . فقط کافیه هر جا لازم شد متن مورد نظرمونو توی پوسته فرم قرار بدیم . یکی از محسنات این کار سریعتر لود شدن فرم هاست .
    برای ایجاد پوسته نیاز به یک فایل HTML هست و برای کار با فایل های HTML راه های زیادی هست که اگه تجربه کار با این فایل ها را داشته باشید میتونید ابزار مناسب و دلخواه خودتونو انتخاب کنید . برای ویرایش یا ایجاد یک فایل HTML میتونید از notepad ویندوز هم استفاده کنید . نرم افزار های دیگری هم هستند که امکانات بیشتری را در اختیارتون قرار میدهند. مثل Dreamveiwer . بنده توصیه میکنم از نرم افزار Aptana Studio نسخه 3 اش استفاده کنید . این نرم افزار هم رایگان هست و هم امکانات بسیار خوبی داره که در مقایسه با نرم افزار های دیگه یک سر و گردن بالاتره. تصاویری که در پست های بعد خواهید دید از محیط همین نرم افزار خواهد بود . ضمنا اگه خیلی با HTML آشنایی ندارید میتونید معلومات خودتونو با مطالعه این سایت ( [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] ) بالا ببرید.

    اینم آدرس سایت [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] برای دانلود نرم افزار Aptana Studio

    اگه بتونید وقت بیشتری صرف کنید و یه چیزایی هم در مورد CSS یاد بگیرید که دیگه خیلی عالی میشه . اینطوری دیگه نیازی نیست دنبال متخصص HTML و CSS بگردیم
    آدرس سایت آموزش CSS :
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

  98. 3 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (08 / July / 2015),b_e_shamlu (16 / July / 2015),meyti (05 / August / 2015)

  99. #54
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    قبل از شروع ، یک فولدر جدید در مسیر ساخت EXE پروژه ایجاد کنید و نام آن را Templates (به حرف s آخر آن توجه کنید) بگذارید . تمام فایل های HTML در این فولدر قرار خواهند گرفت . اینتراوب به صورت پیش فرض برای استفاده از فایل های قالب در مسیر Templates به دنبال آنها خواهد گشت . شما میتوانید این مسیر را در فرم ServerController تغییر داده و مسیر دیگری را برای این کار انتخاب کنید . ما فعلا با پیش فرض اینتراوب کارمان را پیش خواهیم برد.

    MasterTemplate چیست؟
    MasterTemplate قالب اصلی صفحات را مشخص میکند . اینتراوب سایر فایل های HTML را با MasterTemplate.Html ترکیب کرده و در نهایت به عنوان قالب نهایی فرم ها در Browser ترسیم میکند.
    ایجاد فایل MasterTemplate.Html :

    نرم افزار Aptana Studio را اجرا کنید و مانند تصاویر مراحل را دنبال کنید تا یک فایل MasterTemplate.html ایجاد شود

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    همانطور که در تصویر آخر مشاهده میکنید محتویات پیشفرض فایل MasterTemplate.html مانند زیر خواهد بود که لازم است تغییراتی در آن داده شود:

    کد HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>MasterTemplate</title>
            <meta name="author" content="Admin" />
            <!-- Date: 2015-06-29 -->
        </head>
        <body>
    
        </body>
    </html>
    داخل فایل MasterTemplate.html را به صورت زیر تغییر دهید :

    کد HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>IntraWeb_WordGame</title>
        </head>
        <body dir="rtl" lang="fa">
            <div id="Banner"   style="border: dotted; border-width: 1px; position: fixed; top: 0px;   left: 0px; right: 0px; height: 100px;">&nbsp;</div>
            <div id="UserMenu" style="border: dotted; border-width: 1px; position: fixed; top: 101px; left: 0px; right: 0px; height: 30px;">&nbsp;</div>
            <div id="SiteBody" style="border: dotted; border-width: 1px; position: fixed; top: 131px; left: 0px; right: 0px; bottom: 31px;">
                    $body
            </div>
            <div id="Footer"   style="border: dotted; border-width: 1px; position: fixed; left: 0px; right: 0px; bottom: 0px; height: 30px;">&nbsp;</div>
        </body>
    </html>
    در این فایل 4 تگ "<div>" استفاده شده است . داخل یکی از تگ ها عبارت body$ قرار دادیم تا محتویات ایجاد شده توسط اینتراوب در این قسمت نمایش داده شود . این محتویان همان کامپوننت هایی هستند که در فرم های پروژه گذاشته ایم.


    در پایان باید فایل MasterTemplate.html را به فرم ServerController معرفی کنیم تا این مرحله به اتمام برسد. لطفا مانند تصویر عمل کنید :
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    ویرایش توسط مجید : 30 / June / 2015 در ساعت 06:10 PM

  100. 4 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (08 / July / 2015),b_e_shamlu (16 / July / 2015),meyti (05 / August / 2015),moj127 (04 / September / 2017)

  101. #55
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    بالاخره پروژه به پایان رسید . امشب سورس و فایل های اجرایی + منو ها و Template ها را برای علاقمندان آپلود میکنم تا وظیفه خودمو به انجام رسونده باشم . شرمنده هستم که کمی طول کشید . متاسفانه از این پروژه استقبال خوبی نشد و بنده هم فقط برای اینکه کار را ناتمام رها نکرده باشم پست آخر را بدون هیچ توضیح اضافه ای میگذارم تا هر کس علاقمند بود خودش زحمت بکشد و سورس را دانلود کند و ببیند که بنده چه کرده ام. امیدوارم برای علاقمندان مفید بوده باشد . ضمنا روش سوم ساخت منو ها هم در این سورس آخر لحاظ شده است . خودتون زحمتشو بکشید و ببیید چطوری ساخته شده.
    در ادامه هم تصاویری از محیط بازی را مشاهده خواهید کرد:

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    فايل هاي پيوست شده فايل هاي پيوست شده

  102. 5 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (08 / July / 2015),b_e_shamlu (16 / July / 2015),meyti (05 / August / 2015),moj127 (04 / September / 2017),yanin (09 / July / 2015)

  103. #56
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    عجب پروژه ای شد!
    هنوز هیچکس توش باگی پیدا نکرده !؟
    اصلا فکر نمیکردم اینقدر کارم درست باشه !!!
    بیش از 3500 بازدید و غیر از admin عزیز همه فقط عابر رهگذر بودند و ویترین را تماشا کردند . هیچکس از کالای ما چیزی نپرسید!!!
    ویرایش توسط مجید : 16 / July / 2015 در ساعت 05:15 AM

  104. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (16 / July / 2015),b_e_shamlu (27 / July / 2015)

  105. #57
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام به همه
    برای دوستانی که نتونستند بک آپ دیتابیس را بازیابی کنند : اول عذر خواهی میکنم که اطلاع رسانی نکردم و در ادامه هم اسکریپت های دیتابیس و جداول را قرار میدم تا با هر نسخه ای از sql بتونید آن را ایجاد کنید
    اسکریپت ساخت دیتابیس بازی :
    نکته : مسیر ایجاد دیتابیس را به دلخواه خودتون تغییر بدید



    کد:
    USE [master]
    GO
    
    /****** Object:  Database [IntraWordGameDB]    Script Date: 07/16/2015 05:40:08 ب.ظ ******/
    CREATE DATABASE [IntraWordGameDB]
     CONTAINMENT = NONE
     ON  PRIMARY 
    (  NAME = N'IntraWordGameDB', FILENAME = N'C:\Program Files\Microsoft SQL  Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\IntraWordGameDB.mdf' , SIZE =  4416KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
     LOG ON 
    (  NAME = N'IntraWordGameDB_log', FILENAME = N'C:\Program Files\Microsoft  SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\IntraWordGameDB_log.ldf' ,  SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET COMPATIBILITY_LEVEL = 120
    GO
    
    IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
    begin
    EXEC [IntraWordGameDB].[dbo].[sp_fulltext_database] @action = 'enable'
    end
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET ANSI_NULL_DEFAULT OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET ANSI_NULLS OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET ANSI_PADDING OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET ANSI_WARNINGS OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET ARITHABORT OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET AUTO_CLOSE OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET AUTO_SHRINK OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET AUTO_UPDATE_STATISTICS ON 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET CURSOR_CLOSE_ON_COMMIT OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET CURSOR_DEFAULT  GLOBAL 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET CONCAT_NULL_YIELDS_NULL OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET NUMERIC_ROUNDABORT OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET QUOTED_IDENTIFIER OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET RECURSIVE_TRIGGERS OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET  DISABLE_BROKER 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET DATE_CORRELATION_OPTIMIZATION OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET TRUSTWORTHY OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET ALLOW_SNAPSHOT_ISOLATION OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET PARAMETERIZATION SIMPLE 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET READ_COMMITTED_SNAPSHOT OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET HONOR_BROKER_PRIORITY OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET RECOVERY FULL 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET  MULTI_USER 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET PAGE_VERIFY CHECKSUM  
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET DB_CHAINING OFF 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET FILESTREAM( NON_TRANSACTED_ACCESS = OFF ) 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET TARGET_RECOVERY_TIME = 0 SECONDS 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET DELAYED_DURABILITY = DISABLED 
    GO
    
    ALTER DATABASE [IntraWordGameDB] SET  READ_WRITE 
    GO


    اسکریپت های جداول به تفکیک نسخه SQL Server ضمیمه شده است



    فايل هاي پيوست شده فايل هاي پيوست شده

  106. 4 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    admin (16 / July / 2015),b_e_shamlu (27 / July / 2015),meyti (05 / August / 2015),moj127 (04 / September / 2017)

  107. #58
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    نسخه جدید پروژه بازی به پیوست تقدیم می گردد. admin عزیز در مورد چگونگی اتصال به دیتابیس اشکالی در پروژه پیدا کرده و گزارش دادند و بنده هم در اولین فرصت آن را اصلاح کرده و در این پست تقدیم می کنم.
    اشکال مربوط به ConnectionString پروژه بود . وقتی شما فایل اجرایی را دانلود و اجرا می کردید ، نرم افزار سعی می کرد با ConnectionString استاتیک که مربوط به تنظیمات کامپیوتر بنده بود به دیتابیس وصل شود و در نتیجه کاربر با Error مواجه می شد.
    در نسخه اصلاح شده ، نرم افزار ابتدا در مسیر فایل اجرایی بدنبال فایلی با نام Config.txt می گردد . اگر آن را پیدا کند محتویات آن را خوانده و پس از Decrypt کردن ، به عنوان ConnectionString در پروژه مورد استفاده قرار میدهد. ولی چنانچه این فایل پیدا نشود در فرم ورود کاربران بجای دکمه "ورود" دکمه "Config" نمایش داده خواهد شد که کاربر میتواند بوسیله آن Config.txt مربوط به سیستم خود را تولید کند.

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]


    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    فايل هاي پيوست شده فايل هاي پيوست شده
    ویرایش توسط مجید : 31 / July / 2015 در ساعت 11:35 PM

  108. 3 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    b_e_shamlu (03 / August / 2015),meyti (05 / August / 2015),moj127 (04 / September / 2017)

  109. #59
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    جهت اجرای صحیح پروژه باید فولدر های wwwroot و Templates در کنار فایل اجرایی وجود داشته باشند
    قالب فرم Login تغییر کرده بود که اصلاح شد و در همین پست به همراه Exe مجددا آپلود و در دسترس کاربران عزیز قرار میگیرد
    فايل هاي پيوست شده فايل هاي پيوست شده

  110. 2 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    b_e_shamlu (03 / August / 2015),meyti (05 / August / 2015)

  111. #60
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    لینک بازگشت در فرم ثبت نام و فراموشی رمز عبور و لینک راهنمای بازی به فرم بازی اضافه شد

    آخرین سورس و exe به پیوست تقدیم می گردد

    فايل هاي پيوست شده فايل هاي پيوست شده

  112. 4 کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده اند .

    aftabgardan2006 (06 / September / 2015),b_e_shamlu (03 / August / 2015),meyti (05 / August / 2015),moj127 (04 / September / 2017)

  113. #61
    کاربر سایت Lazarus آواتار ها
    تاریخ عضویت
    August 2015
    نوشته ها
    2
    تشکر ها
    1
    تشکر شده 2 بار در 2 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام به دوستان فعال و خوش فکر
    ایده بسیار جالب و پشتکار شما هم قابل تحسین هست
    فقط یک نکته وجود داره ! چرا Intra Web ؟ چرا یک HTTP Server مثل indy رو انتخاب نکردید ؟

  114. کاربر مقابل از Lazarus عزیز به خاطر این پست مفید تشکر کرده است:

    admin (10 / August / 2015)

  115. #62
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    مرسی از لطفتون
    شما بفرمایید چرا Intraweb نه؟ و چرا indy ?
    البته دلیل بنده اینه که خیلی بلد نیستم با indy کار کنم !!!

    شما اگه می تونید این دو را با هم مقایسه کنید تا اگر indy راه بهتری پیشنهاد میکنه بنده هم برم سراغش
    ممنون میشم اگه وقت بذارید و راهنمایی کنید

  116. کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده است:

    admin (10 / August / 2015)

  117. #63
    کاربر سایت Lazarus آواتار ها
    تاریخ عضویت
    August 2015
    نوشته ها
    2
    تشکر ها
    1
    تشکر شده 2 بار در 2 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    سلام
    خوب نمیشه به صورت کلی گفت کدوم نسبت به دیگری برتری دارند و خیلی بستگی به نحوه پیاده سازی و اهداف پروژه داره ، indy در واقع یک Embedded HTTP Server هست و شما مجبورید همه چیز رو خودتون پیاده سازی کنید
    اما 2 حسن عمده داره ، اول اینکه برنامه شما به وب سرور خارجی وابسته نمیشه و دوم اینکه در سطح پایین قدرت کنترل همه چیز رو خواهید داشت.
    شاید یک جورایی بشه گفت مثل مقایسه php و ASP.net هست.

    ویرایش توسط Lazarus : 06 / August / 2015 در ساعت 12:15 AM

  118. کاربر مقابل از Lazarus عزیز به خاطر این پست مفید تشکر کرده است:

    مجید (06 / August / 2015)

  119. #64
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

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

  120. کاربر مقابل از مجید عزیز به خاطر این پست مفید تشکر کرده است:

    admin (21 / August / 2015)

  121. #65
    مدیر انجمن b_e_shamlu آواتار ها
    تاریخ عضویت
    July 2013
    محل سکونت
    کرج
    سن
    56
    نوشته ها
    123
    تشکر ها
    149
    تشکر شده 94 بار در 46 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    با سلام و دورود ورود سر کار خانم شیر محمدی را خیر مقدم میگوییم .
    دلفی کاران را دوست دارم [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]



  122. کاربر مقابل از b_e_shamlu عزیز به خاطر این پست مفید تشکر کرده است:

    admin (21 / August / 2015)

  123. #66
    مدیر انجمن مجید آواتار ها
    تاریخ عضویت
    January 1970
    محل سکونت
    تهران
    نوشته ها
    167
    تشکر ها
    58
    تشکر شده 201 بار در 100 ارسال.

    پاسخ : شروع پروژه بازی آنلاین - Delphi XE5 & Intaweb 14.0.32 & TMS Intraweb Component & SQL Server - علاقمندان به ما بپیوندند

    به دلیل عدم استقبال اعضاء این گفتگو بسته می شود

موضوعات مشابه

  1. دانلود آخرین نسخه های IntraWeb
    توسط admin در انجمن برنامه نویسی تحت وب در دلفی
    پاسخ: 3
    آخرين نوشته: 25 / February / 2016, 03:27 PM
  2. پاسخ: 2
    آخرين نوشته: 15 / August / 2015, 02:30 AM
  3. طراحی سایت با Intraweb دلفی XE2
    توسط mosa در انجمن Embarcadero RAD Studio تحت وب
    پاسخ: 59
    آخرين نوشته: 19 / May / 2015, 01:51 PM
  4. دانلود یک پروژه ی ساده IntraWeb در دلفی 7
    توسط admin در انجمن دلفی 7 تحت وب
    پاسخ: 3
    آخرين نوشته: 19 / June / 2014, 09:36 PM
  5. قابلیت های جدید SQL Server 2014
    توسط admin در انجمن رادیو نیک آموز
    پاسخ: 0
    آخرين نوشته: 16 / February / 1970, 11:36 AM

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •