PDA

View Full Version : سوال: گرفتن تاییدیه قبل از خارج شدن از برنامه



علی اکبر
دوشنبه 15 فروردین 1390, 10:15 صبح
دوستان سلام
چجوری امکان داره زمانی که کاربران برروی دکمه close اسکرین کلیک می کنند بجای خروج بدون پرسش پیغام خاصی پرسیده شود؟
ممنون

Esikhoob
دوشنبه 15 فروردین 1390, 18:45 عصر
سلام
با کمک Event Tracking در موقعی که روی X فرم کلیک میکنی میشد فهمید در اون موقع چه event هایی اجرا میشود.
من هم این کار را کردم و متوجه شدم که:
queryUnload() event جایی است که میتونی از بستن فرم جلو گیری کنی..

binyaz2003
دوشنبه 15 فروردین 1390, 20:32 عصر
همانطور که گفتند در واقعه QueryUnload ميتوانيد با کدي مانند زير خروج از برنامه را کنترل کنيد :

If MessageBox("Are You Sure?",4+32,"Exit")=7
Nodefault
Else
Thisform.Release
Clear Events
Endif

علی اکبر
سه شنبه 16 فروردین 1390, 07:33 صبح
ممنون دوستان
این در فرمها جواب میده
اما منظور من دکمه close
_screen
روی فرم کاری ندارم
ممنون

binyaz2003
سه شنبه 16 فروردین 1390, 08:06 صبح
در اين مورد بايد از دستور ON SHUTDOWN استفاده کنيد، راهنماي اون رو مطالعه کنيد.

علی اکبر
شنبه 20 فروردین 1390, 13:15 عصر
در متد QueryUnload
دستور ذیل را تایپ می کنم بدلیل اینکه نمی خواهم کلا فرم حذف بشه و در موقع مناسب دوباره نمایش بدهم
thisform.hide
اما وقتی X کلیک میشه فرم کلا حذف می کنه
ممنون

binyaz2003
یک شنبه 21 فروردین 1390, 09:58 صبح
وقتي دستور مذکور رو مينويسيد، دليل بر اين نميشه که برنامه روند خودش رو که خارج شدن هست تغيير بده، فقط يک دستور اجرا شده و بعد برنامه بسته ميشود.
کلا در وقايع ويژوال فاکس اگر بخواهيد واقعه اي روند معمولش طي نشود دستور NODEFAULT را بايد در آن قرار دهيد.
روال به اين صورت است که ابتدا دستوراتي که شما در واقعه مورد نظر نوشته ايد اجرا و سپس روند ادامه پيدا ميکند که با اين دستور شما از ادامه اجراي روند جلوگيري ميکنيد.

علی اکبر
یک شنبه 21 فروردین 1390, 11:51 صبح
گفته شما کاملا صحیح اما مشروط بر اینکه از اسکین استفاده نکنیم
من معمولا از کلاس vfpsin3 یا foxface استفاده می کنم
به الگوریتم داخل کلاس هم نگاه کردم ببینم چرا اما متوجه نشدم
دستور NODEFAULT زمانی درست کار می کنه که اسکین نداشته باشیم
چرا وچگونه برطرف کنیم مشکلو؟

rahro
دوشنبه 22 فروردین 1390, 07:25 صبح
گفته شما کاملا صحیح اما مشروط بر اینکه از اسکین استفاده نکنیم
من معمولا از کلاس vfpsin3 یا foxface استفاده می کنم
به الگوریتم داخل کلاس هم نگاه کردم ببینم چرا اما متوجه نشدم
دستور NODEFAULT زمانی درست کار می کنه که اسکین نداشته باشیم
چرا وچگونه برطرف کنیم مشکلو؟
من از اسکين 3 تا حالا استفاده نکردم ولي پيشنهاد دارم تو کلاس يه سرچ بکني اگر از اين اونت تو کلاس استفاده شده محتوي اون رو تو فرم جاريت کپي کرده و از حالت پيش فرض جلوگيري کني.

googoli
یک شنبه 18 اردیبهشت 1390, 18:47 عصر
با سلام
می خواستم این رو بپرسم حالا اگر در صفحه اسکرین ما فرمی در حال اجرا بود و کاربر دکمه کلوز رو فشرد اون وقت تکلیف چی هست ؟

Emir New
سه شنبه 20 اردیبهشت 1390, 11:48 صبح
با سلام
دوست عزیز برای این کاری که شما مد نظرتون هست 2 راه وجود داره
اولیش این هست که شما فقط یک فرم در صفحه باز دارید که می تونید با این کد راحت فر رو ببندید و از برنامه خارج شوید

IF active
_screen.ActiveForm .unload
endif

و روش دوم این هست که شما از فرم های تو در تو استفاده کرده اید چون من راهی برای این روش پیدا نکردم از این کد استفاده کردم

IF active
MESSAGEBOX('لطفا فرم های در حال اجرا را ببندید و سپس از برنامه خارج شوید',0+64,'')
RETURN
ENDIF

امیدوارم کارت با این ها راه بیفته