PDA

نسخه کامل مشاهده نسخه کامل : يه مشكل خيلي ساده توي وي‍وژال بيسيك دارم كمكم كنيد!!!



tarfand4u
18-07-2008, 09:51
سلام دوستان من يه مشكل خيلي ساده توي وي‍ژوال بيسيك دارم ميشه كمكم كنيد...

دوستان همه شما مي دونيد كه رويداد Unload در هر فرم در وي بي به معناي اين است كه زماني كه ما فرم را مي بنديم تابعي كه در اين رويداد باشد فراخواني گردد.

حالا من يه مشكل دارم اونم اينكه مثلا من مي خوام يه پيغام تائيد خروج از برنامه رو بسازم و كد اون رو داخل رويداد Unload فرم قرار بدم بدين صورت:

Dim Msg As String

Msg = MsgBox("Are You Sure", vbQuestion + vbYesNo + vbDefaultButton1) 'exit message

If Msg = vbYes Then

End

Else

Form1.Show

End If

حالا من زماني كه برنامه رو اجرا مي كنم چه روي دكمه ي Yes بزنم چه روي دكمه ي No در هر دو حالت برنامه ي من بسته ميشه.در حالي كه من مي خوام فقط زماني كه روي دكمه ي Yes مي زنم بسته بشه...

خواهش مي كنم كمكم كنيد...

n.s
18-07-2008, 13:18
شما می تونید این دستورات رو توی یه command button بنویسید ...اینجوری جواب می ده ...

tarfand4u
18-07-2008, 15:21
اي بابا عزيز من منظورم اين بود كه چي كار كنيم توي رويداد Unload فرم استفاده كنيم نه اينكه بيايم و توي رويداد كليك CommandButton استفاده كنيم.:13:

وگرنه اينو كه هر كسي مي دونه!!

ولي بازم به خاطر توجه تون ممنون:20:

tarfand4u
18-07-2008, 15:23
كسي نيست كمك كنه!؟!؟

Smafias
18-07-2008, 15:33
سلام!

مشکلت اینه:

Form1.Show

بجاش بنویس:

Cancel = 1

---------------------------------------

توصیه: به جای استفاده از دستور End از دستور Unload Me استفاده کنید!

--------------------------------------

یعنی کلا اینجوری میشه:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


به همین سادگی! :11:

tarfand4u
18-07-2008, 18:29
سلام!

مشکلت اینه:

Form1.Show

بجاش بنویس:

Cancel = 1

---------------------------------------

توصیه: به جای استفاده از دستور End از دستور Unload Me استفاده کنید!

--------------------------------------

یعنی کلا اینجوری میشه:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


به همین سادگی! :11:

بابا اينقدر كفونديمون كه نفهمديم چي نوشتم.!.!.!:18:

دوست عزيز به خاطر هر سه سوالي كه امروز جواب دادين ازتون متشكرم...

اميدوارم كه موفق باشي!!!:46:

tkd
20-07-2008, 17:37
برای اینکه بتونی فقط وقتی روی دکمه Yes کلیک میشه ، برنامه بسته بشه باید از شرط استفاده کنید .

if msg=yes then unload me else
.
.
. بقیه دستورات

End IF

:10:

Smafias
20-07-2008, 21:41
بابا اينقدر كفونديمون كه نفهمديم چي نوشتم.!.!.!:18:

دوست عزيز به خاطر هر سه سوالي كه امروز جواب دادين ازتون متشكرم...

اميدوارم كه موفق باشي!!!:46:

خواهش میکنم! وظیفم بود :11:



برای اینکه بتونی فقط وقتی روی دکمه Yes کلیک میشه ، برنامه بسته بشه باید از شرط استفاده کنید .

if msg=yes then unload me else
.
.
. بقیه دستورات

End IF

:10:

دوست عزیز این مسئله کاملا حل شده و نیازی به پاسخ دوباره نداشت!
برای اطلاعتون عرض کنم که پاسختون هم اشتباه به نظر میرسه!
اگه دقت میکردید ایشون فرمودن که در رویداد Form_Unload این شرط رو قرار دادن و این رویداد هر کدی که داخلش
باشه اجرا میکنه و بعد فرم Unload میشه -- مگر اینکه -- شما مقدار Cancel رو برابر 1 قرار بدی که در اینصورت
از Unload شدن فرم صرف نظر میشه.

موفق باشید :11:

tarfand4u
22-07-2008, 12:11
خواهش میکنم! وظیفم بود :11:




دوست عزیز این مسئله کاملا حل شده و نیازی به پاسخ دوباره نداشت!
برای اطلاعتون عرض کنم که پاسختون هم اشتباه به نظر میرسه!
اگه دقت میکردید ایشون فرمودن که در رویداد Form_Unload این شرط رو قرار دادن و این رویداد هر کدی که داخلش
باشه اجرا میکنه و بعد فرم Unload میشه -- مگر اینکه -- شما مقدار Cancel رو برابر 1 قرار بدی که در اینصورت
از Unload شدن فرم صرف نظر میشه.

موفق باشید :11:

ای بابا شما بزرگ ما کوچیک...

خیلی ممنون شما اختیار دارین!!!

از توجه شما (tdk) هم ممنونم دوست عزیز...

مشکل من رو دوستمون آقای Smafias حل کردن...

قربان شما Tarfand4u:46:

MrJamshidy
21-08-2008, 17:27
Dim Msg As String
Dim Msg As VbMsgBoxResult


Msg = MsgBox("Are You Sure", vbQuestion + vbYesNo + vbDefaultButton1) 'exit message

If Msg = vbYesvbNo Then

End

Else

Form1.Show
Cancel = 1

End If

درسته مشکل حل شده بود اما اشتباهات کدتون رو نوشتم تا بقیه بتونن استفاده کنن

Smafias
23-08-2008, 10:34
به به!
سلام جناب MrJamshidy !
نمیای نمیای وقتی هم میای دیگه...

خوبی شما؟

بنده عرض کردم که این مسئله حل شده -- هیچ ابهام و مشکلی هم وجود نداره!
با این حال نمیدونم چرا شما اسرار دارین سراغ تاپیک های حل شده برید!!!

کد من مشکل داشت قبول دارم ولی نه اینی که شما گفتید!

درباره خط اول عرض کنم که اگر دقت کنید vbYes یک ثابت است حاوی مقدار 6 -- و براش فرقی نداره که چیزی که باهاش مقایسه میشه از نوع String یا Integer یا Variant یا VbMsgBoxResult و یا ... باشه.
مهم اینه که مقایسه میشه و مشکلی هم نداره. -- فکر کنم این مورد رو با زبانهای دیگه (مثل ++C) اشتباه گرفتین!
پس همون Dim Msg As String درسته (ولی از لحاظ منطقی VbMsgBoxResult درسته).

اگه میخواید بگید که کد باید منطقی باشه باید یه نگاهی بندازید ببینید کد خودتون منطقی هست!! -- استفاده از End برای پایان دادن برنامه چیز جالب و درستی نیست! -- باید از Unload Me یا مثلا Unload Form1 استفاده کنید.
دلیل:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نکته دیگر استفاده از Form1.Show (واقعا تعجب میکنم -- مگه شما VB رو سیستم تون نصب نیست) -- اگه حتی یک بار کد رو امتحان میکردید مشاهده میکردید که هیچ احتیاجی به Form1.Show دیده نمیشه (شایدم سیستم من بهش احتیاج نداره :دی)

بازهم مشکل عجیب و عدیده ای (:دی) که تو کدتون دیده میشه استفاده از شرط در صورت vbNo برای پایان برنامه!!!
فکر کنم خیلی علاقه دارید که از کد ایراد بگیرید ایراد از این بنی اسرائیلی تر (:دی) ندیده بودم!!
یعنی واقعا وقتی کاربر رو Close (یا همون X) کلیک میکنه و از کاربر پرسیده میشه " آیا مطمئن هستید " کاربر باید برای خروج رو کلید No کلیک کنه!!!!!!!!!!!!!!!!!!!!!!!! (یعنی اگه بگه نمیخوام خارج شم - خارج شه!!)

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

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

دقت کنید که در اینجا همون شرط اول کفایت میکنه و نیازی به Else نیست -- و همینطور اینجا برای کنسل کردن خروج vbNo شرط میشه -- نه برای تایید خروج!

به همین سادگی!
در کل شما استاد مایی -- معذرت میخوام اگر لحنم تند بود.

خوب کد من هم که یه ذره غیر منطقی بود تصحیحش کردم. بازهم از دوستان خوبم به خاطر این موضوع معذرت میخوام!

در ضمن جناب redfild هم درست میفرماین -> درسته همینجوری هم کار میکنه ولی برای اینکه منطقی تر باشه بهتره توی Form_QueryUnload قرار بگیره.

ممنون و متشکر!
موفق باشین! :11:

redfild
24-08-2008, 00:48
یه نکته کوچیک دوستان ، سعی بشه برای اینطور فرمانها کدهای ظرطی و کلا کد مربوطه تو رویداد Form_QueryUnload قرار بدید .

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