Ctrl+Z

geo_vahid

Member
با سلام خدمت اساتید
چطوری میشه تو یک برنامه که دارای کلاس های مختلف و زیاد هستش CTRL+Z رو تعریف کرد تا کاربر هربار که می خواد برنامه رو آندو کنه.
این سوال از دو جنبه هستش: 1 چجوری تعریف کنیم که هر وقت دکمه ctrl+z زده شد برنامه آندو شود با توجه به اینکه برنامه صدها دیالوگ و کنترل دارد و دوم اینکه چگونه تغریف کنیم که آندو برای تغییرات ما اعمال شود.
لطفا جواب رو خیلی ابتدایی توضیح بدین

البته برای این دو من راهی رو رفتم که مطمئن هستم هر دو اشتباه هستند
1- در هنگام باز شدن برنامه کل کنترلر ها سرچ شده و به آنهایی که texbox یا ... نیستند رویداد keydown اضافه می شود.
2- برنامه ctrl+z رو بصورت دستی نوشتم که این کار برای کل کلاسهای برنامه کار واقعا طاقت فرسایی هستش و در صورت اضافه شدن برنامه از توان من خارج میشود. میدونم که راهی هست که اتومات Ctrl+z را حساب کنه. برای مثال در برنامه تریدی مکس حتی زمانی که کاربر برنامه ای می نویسد ctrl+Z برای برنامه کاربر هم کار می کند.

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

the_king

مدیرکل انجمن
با سلام خدمت اساتید
چطوری میشه تو یک برنامه که دارای کلاس های مختلف و زیاد هستش CTRL+Z رو تعریف کرد تا کاربر هربار که می خواد برنامه رو آندو کنه.
این سوال از دو جنبه هستش: 1 چجوری تعریف کنیم که هر وقت دکمه ctrl+z زده شد برنامه آندو شود با توجه به اینکه برنامه صدها دیالوگ و کنترل دارد و دوم اینکه چگونه تغریف کنیم که آندو برای تغییرات ما اعمال شود.
لطفا جواب رو خیلی ابتدایی توضیح بدین

البته برای این دو من راهی رو رفتم که مطمئن هستم هر دو اشتباه هستند
1- در هنگام باز شدن برنامه کل کنترلر ها سرچ شده و به آنهایی که texbox یا ... نیستند رویداد keydown اضافه می شود.
2- برنامه ctrl+z رو بصورت دستی نوشتم که این کار برای کل کلاسهای برنامه کار واقعا طاقت فرسایی هستش و در صورت اضافه شدن برنامه از توان من خارج میشود. میدونم که راهی هست که اتومات Ctrl+z را حساب کنه. برای مثال در برنامه تریدی مکس حتی زمانی که کاربر برنامه ای می نویسد ctrl+Z برای برنامه کاربر هم کار می کند.

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

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

اصولا در برنامه شما به یک حافظه مخصوص نگهداری عملیات ها احتیاج دارید. این حافظه لیستی از عملیات هایی است که به ترتیب در برنامه شما انجام شده اند.
هر بار که عمل جدیدی انجام می شود به این لیست اضافه خواهد شد. وجود جزئیات عمل اهمیت زیادی داره چون بدون آنها اجرای مجدد عمل ممکن نیست.
هر کدام از اعضاء لیست جزئیات کامل یک عمل رو ثبت کرده اند، بطوریکه انجام مجدد اون عمل با استفاده از این جزئیات میسر باشه.
اگر این لیست در برنامه وجود داشته باشه، می توانید Undo و Redo رابا پیمایش این لیست پیاده سازی کنید.

رجوع شود به :
ثبت وقایع
 

جدیدترین ارسال ها

بالا