SajjadKhati
کاربر فعال <A href="http://forum.majidonline.com/f
درست کردن (کد نویسی) دیالوگ دستی با پنجره ی DialogEX :
خوب اساتیدا ، از اونجایی که شما فیلمو دیدین ینی ندیدین ، و جواب سئوال بالای منو هم دادین ینی ندادین و منم خیلی ازتون تشکر میکنم ینی بازم میکنم پس بزارین این قضیه هم بگم
تو فیلم دیدین دیگه ، تو AMS هر جا نامی از دیالوگ برده میشه ینی یه صفه ای که حالا یا پیام داره فقط یا با گزینه هایی که انتخاب میکنین ، میتونین کار خاصی انجام بده مثلا گزینه ی yes یا no داشته باشه یه دیالوگ
تا اینجا دید یو آندرستود؟
خا ، حالا دو نوع دیالوگ داریم تو AMS . یکی پنجره ای هستش که فقط اسمش Dialog هه (البته بازم من منظورم بیشتر کد Dialog.Message هه) که این نوع پنجره ، از پیش تعریف شده هه و چن گزینه ی قابل تغییر بیشتر نداره (Abort و Cancell و Yes و No و ...) اما نپجره ی دیگه ای هست بنام DialogEX هه که میتونین مثل صفه ی اتوران ، حتی گرافیکی کار کنین اینترفیس اش رو و هر جور که خودتون خاستین
اینا رو ول کنین ، بریم سر خاستگاری چی همون اسب Matlab (این قد ممدرضا گفت که ما رو به بی راهه کشوند )
مهم کد نویسی شونه و اینکه چه متغییر که اینجا عدده رو برگردونه
تو کد نویسی Dialog.Message که تو فیلم توضیح داده شد و اینکه دکمه ی Yes چه عددی رو برمیگردونه وبقیه ی کد ها ...
تو کد نویسی برای صفه ی DialogEX ، مثلا 3 تا شی (تصویر یا آیکون یا حتی نوشته) میزارین که اگه طرف آیکون اولی رو انتخاب کرد ، مثل مثال Dialog.Message ، یه عدد رو برگردونه و اگه آیکون دومی رو انتخابید ، یه عدد دیگه و ...
یادتون باشه اولین و تنها استثنایی که تو برگردوندن یا همون ذخیره کردن متغییر ها هست ، تو همین قضیه ی DialogEX هه . این جوری که وقتی تو صفحه ی اصلی پروژه (صفه ی DialogEX منظورم نیست) ، با کد DialogEX.Show ، اون صفه ی دیالوگ (منظورم DialogEX هه) رو نمایش بدین ، وقتی موقه بستن همین صفه ، با کد DialogEX.Close ، تو اون پارامتر یا همون ورودی اول همین کد ، هر عددی رو که بنویسین (انتخاب این عدد ، دلخواهی هه) ، این محتوای متغییر (که از نوع عدد) هست ، توی اون متغییری که باهاش این صفه ی DialogEX نمایش داده شد ، ذخیره میشه
من که میدونم متوجه نشدین
بزارین مثال بزنم :
مثلا تو پروژه ی اصلی تو یه رویدادی ، آیکونی ، چیزی مینویسین :
اینو که میدونین ، باعث میشه که صفه ی DialogEX که طراحی کرده بودیم خودمون رو نمایش بده و متغییر اش هم که اسم شو گرفتیم Message
هر عددی هم موقه خروج تو کد DialogEX.Close که بعدا مینویسیم ، تو این متغییر اش ینی متغییر Message ذخیره میشه
3 تا گزینه یا آیکون تو این صفه ی دیالوگ طراحی کردیم که هر کدوم شون با کد DialogEX.Close ، اون کدی رو که تو پارامتر اول این کد مینویسیم ، برمیگردونه تو متغییر Message
پس باید تو هر 3 تا آیکون کد DialogEX.Close رو بنویسیم
چون عدد پارامترش دلخواهی هه ، اولی رو 1 و دومی رو 2 و سومی رو 3 میگیریم
پس تو آیکون اول مینویسیم :
عدد 1 پارامتر اول این کد رو که توضیح دادم
الان این عدد 1 رو اگه کسی با AMS آشنایی داشته باشه یه خورده ، انتظار داره که تو متغییر خود همین کد DialogEx.Close که اسم این متغییر رو Close گرفتیم ، ذخیره شه
اما گفتم که استثنا داره
این عدد 1 ، تو اون متغییری ذخیره میشه که باعث باز شدن این صفه ی دیالوگ شده بود ینی تو متغییر کد DialogEx.Show که تو اینجا اسمشو Message گرفته بودیم
پس از این به بعد با انتخاب اولین آیکون این صفه ی دیالوگ ، این صفه بسته میشه و عدد 1 (عددی که تو اولین پارامتر کد DialogEx.Close) نوشته بودیم ، تو متغییر Message (متغییر اون کدی که باعث باز شدن اون صفه ی دیالوگ شد) ذخیره میشه
حالا همین کار را برا آیکون دوم صفه ی دیالوگ میکنیم . که قبلا توضیح داده بودم ینی مینویسم :
و همینطور واسه آیکون سوم
حالا برا کد نویسی اصلیش که دیگه اوستایین و از این مثالای پیش دست و پا شکسته و افتاده رو 6000 بار کار کردیم دیگه؟ ها؟
تو ادامه ی کد همونجایی که کد باز شدن صفه ی دیالوگ (DialogEx.Show) رو نوشته بودین ، میگین که اگه این متغییر Message ، 1 بود (ینی اگه گزینه یا آیکون اول تو صفه ی دیالوگ کلیک یا انتخاب شد) ، فلان کار رو کنه و اگه برابر 2 بود ، فلان کار رو کنه و ... ینی تو ادامه :
تو خط اول گفته شد مخالف -1 هر وقت بود این کد ها اجرا شن چون اگه موقه بستن دیالوگ (کد DialogEX.Close) ، اروری اتفاق بیفته ، تو متغییر کد نمایش دیالوگ که تو اینجا Message بود ، -1 (منفی یک) برگردونده میشه
از اونجایی که شما مثل من فراموش کارین ، اگه صفه ی DialogEX ، بصورت استانداردباشه و کاربر قابلیت اینو داشته باشه که از بالا ، گزینه ی ضربدر رو انتخاب کنه و از این طریق ببنده ، در این صورت ، تو همون متغییر صفه ای که دیالوگ رو نمایش میده (در اینجا متغییر Message) عدد مربوط به دکمه ی کنسل که همیشه یا اغلب اوقات عدد 2 هست ، برگردونده میشه پس یادتون باشه که اگه صفه ی دیالوگ بصورت استاندارد هست ، موقه انتخاب عد تو پارامتر اول کد DialogEx.Close ، عدد 2 رو انتخاب نکنین که با این کد کنسل قاتی شه و ندونین قضیه از کجاهه (عدد منفی هم یه وقت نزارین . حالا گفتیم که دلخاهی هه )
دید یو آندرستند بالام جان های گل مهندسین؟
خوب اساتیدا ، از اونجایی که شما فیلمو دیدین ینی ندیدین ، و جواب سئوال بالای منو هم دادین ینی ندادین و منم خیلی ازتون تشکر میکنم ینی بازم میکنم پس بزارین این قضیه هم بگم
تو فیلم دیدین دیگه ، تو AMS هر جا نامی از دیالوگ برده میشه ینی یه صفه ای که حالا یا پیام داره فقط یا با گزینه هایی که انتخاب میکنین ، میتونین کار خاصی انجام بده مثلا گزینه ی yes یا no داشته باشه یه دیالوگ
تا اینجا دید یو آندرستود؟
خا ، حالا دو نوع دیالوگ داریم تو AMS . یکی پنجره ای هستش که فقط اسمش Dialog هه (البته بازم من منظورم بیشتر کد Dialog.Message هه) که این نوع پنجره ، از پیش تعریف شده هه و چن گزینه ی قابل تغییر بیشتر نداره (Abort و Cancell و Yes و No و ...) اما نپجره ی دیگه ای هست بنام DialogEX هه که میتونین مثل صفه ی اتوران ، حتی گرافیکی کار کنین اینترفیس اش رو و هر جور که خودتون خاستین
اینا رو ول کنین ، بریم سر خاستگاری چی همون اسب Matlab (این قد ممدرضا گفت که ما رو به بی راهه کشوند )
مهم کد نویسی شونه و اینکه چه متغییر که اینجا عدده رو برگردونه
تو کد نویسی Dialog.Message که تو فیلم توضیح داده شد و اینکه دکمه ی Yes چه عددی رو برمیگردونه وبقیه ی کد ها ...
تو کد نویسی برای صفه ی DialogEX ، مثلا 3 تا شی (تصویر یا آیکون یا حتی نوشته) میزارین که اگه طرف آیکون اولی رو انتخاب کرد ، مثل مثال Dialog.Message ، یه عدد رو برگردونه و اگه آیکون دومی رو انتخابید ، یه عدد دیگه و ...
یادتون باشه اولین و تنها استثنایی که تو برگردوندن یا همون ذخیره کردن متغییر ها هست ، تو همین قضیه ی DialogEX هه . این جوری که وقتی تو صفحه ی اصلی پروژه (صفه ی DialogEX منظورم نیست) ، با کد DialogEX.Show ، اون صفه ی دیالوگ (منظورم DialogEX هه) رو نمایش بدین ، وقتی موقه بستن همین صفه ، با کد DialogEX.Close ، تو اون پارامتر یا همون ورودی اول همین کد ، هر عددی رو که بنویسین (انتخاب این عدد ، دلخواهی هه) ، این محتوای متغییر (که از نوع عدد) هست ، توی اون متغییری که باهاش این صفه ی DialogEX نمایش داده شد ، ذخیره میشه
من که میدونم متوجه نشدین
بزارین مثال بزنم :
مثلا تو پروژه ی اصلی تو یه رویدادی ، آیکونی ، چیزی مینویسین :
کد:
[/FONT]
[FONT=Tahoma]Message = DialogEx.Show("Dialog1", true, nil, nil);[/FONT]
[FONT=tahoma]
اینو که میدونین ، باعث میشه که صفه ی DialogEX که طراحی کرده بودیم خودمون رو نمایش بده و متغییر اش هم که اسم شو گرفتیم Message
هر عددی هم موقه خروج تو کد DialogEX.Close که بعدا مینویسیم ، تو این متغییر اش ینی متغییر Message ذخیره میشه
3 تا گزینه یا آیکون تو این صفه ی دیالوگ طراحی کردیم که هر کدوم شون با کد DialogEX.Close ، اون کدی رو که تو پارامتر اول این کد مینویسیم ، برمیگردونه تو متغییر Message
پس باید تو هر 3 تا آیکون کد DialogEX.Close رو بنویسیم
چون عدد پارامترش دلخواهی هه ، اولی رو 1 و دومی رو 2 و سومی رو 3 میگیریم
پس تو آیکون اول مینویسیم :
کد:
[/FONT]
[FONT=Tahoma]Close = DialogEx.Close(1);[/FONT]
[FONT=tahoma]
عدد 1 پارامتر اول این کد رو که توضیح دادم
الان این عدد 1 رو اگه کسی با AMS آشنایی داشته باشه یه خورده ، انتظار داره که تو متغییر خود همین کد DialogEx.Close که اسم این متغییر رو Close گرفتیم ، ذخیره شه
اما گفتم که استثنا داره
این عدد 1 ، تو اون متغییری ذخیره میشه که باعث باز شدن این صفه ی دیالوگ شده بود ینی تو متغییر کد DialogEx.Show که تو اینجا اسمشو Message گرفته بودیم
پس از این به بعد با انتخاب اولین آیکون این صفه ی دیالوگ ، این صفه بسته میشه و عدد 1 (عددی که تو اولین پارامتر کد DialogEx.Close) نوشته بودیم ، تو متغییر Message (متغییر اون کدی که باعث باز شدن اون صفه ی دیالوگ شد) ذخیره میشه
حالا همین کار را برا آیکون دوم صفه ی دیالوگ میکنیم . که قبلا توضیح داده بودم ینی مینویسم :
کد:
[/FONT]
[FONT=Tahoma]Close = DialogEx.Close(2);[/FONT]
[FONT=tahoma]
و همینطور واسه آیکون سوم
حالا برا کد نویسی اصلیش که دیگه اوستایین و از این مثالای پیش دست و پا شکسته و افتاده رو 6000 بار کار کردیم دیگه؟ ها؟
تو ادامه ی کد همونجایی که کد باز شدن صفه ی دیالوگ (DialogEx.Show) رو نوشته بودین ، میگین که اگه این متغییر Message ، 1 بود (ینی اگه گزینه یا آیکون اول تو صفه ی دیالوگ کلیک یا انتخاب شد) ، فلان کار رو کنه و اگه برابر 2 بود ، فلان کار رو کنه و ... ینی تو ادامه :
کد:
[/FONT]
[FONT=Tahoma]if Message~=-1 then[/FONT]
[FONT=Tahoma] if Message==1 then[/FONT]
[FONT=Tahoma] Dastorat ro inja benevisin[/FONT]
[FONT=Tahoma] elseif Message==2 then[/FONT]
[FONT=Tahoma] Dastorat ro inja benevisin[/FONT]
[FONT=Tahoma] elseif Message==3 then[/FONT]
[FONT=Tahoma] Dastorat ro inja benevisin[/FONT]
[FONT=Tahoma] end[/FONT]
[FONT=Tahoma]end[/FONT]
[FONT=tahoma]
تو خط اول گفته شد مخالف -1 هر وقت بود این کد ها اجرا شن چون اگه موقه بستن دیالوگ (کد DialogEX.Close) ، اروری اتفاق بیفته ، تو متغییر کد نمایش دیالوگ که تو اینجا Message بود ، -1 (منفی یک) برگردونده میشه
از اونجایی که شما مثل من فراموش کارین ، اگه صفه ی DialogEX ، بصورت استانداردباشه و کاربر قابلیت اینو داشته باشه که از بالا ، گزینه ی ضربدر رو انتخاب کنه و از این طریق ببنده ، در این صورت ، تو همون متغییر صفه ای که دیالوگ رو نمایش میده (در اینجا متغییر Message) عدد مربوط به دکمه ی کنسل که همیشه یا اغلب اوقات عدد 2 هست ، برگردونده میشه پس یادتون باشه که اگه صفه ی دیالوگ بصورت استاندارد هست ، موقه انتخاب عد تو پارامتر اول کد DialogEx.Close ، عدد 2 رو انتخاب نکنین که با این کد کنسل قاتی شه و ندونین قضیه از کجاهه (عدد منفی هم یه وقت نزارین . حالا گفتیم که دلخاهی هه )
دید یو آندرستند بالام جان های گل مهندسین؟