PDA

View Full Version : بستن یک فرم و خارج شدن از آن



xrezax
جمعه 20 آبان 1390, 12:58 عصر
یه برنامه دارم که تا فرم داره. چطور یک از یک فرم خارج بشم.
مثلاً اگر فرم رو بستم فقط فرم کامل بسته بشه. نه hide بشه بسته بشه

M.T.P
جمعه 20 آبان 1390, 16:28 عصر
بطور پیش فرض فرم بسته میشه مگه اینکه شما خودتون مخفی یا Hide ش کنید.
اما کلا اینطوری فرم رو نمایش بدید بهتره و کامل هم بسته میشه:


Dim CForm As Form2
CForm.Show vbModal
Set CForm = Nothing

xrezax
جمعه 20 آبان 1390, 17:17 عصر
این کد کار نکرد .
چطور بسته میشه ؟؟؟
من توی کامند این دستورو می زنم

Form2.Show
Form1.Hide

چطور بنویسم فرم1 کامل بسته بشه

محسن واژدی
جمعه 20 آبان 1390, 17:26 عصر
سلام علیکم
با دستور زیر فرم unload میشود:

Unload Form1


و اگر بخواهید فرم را کاملا از حافظه خارج کنید (کلیه اطلاعات مرتبط با فرم) از دستوری که جناب M.T.P در پست 2 قرار دادند استفاده کنید

موفق باشید

xrezax
جمعه 20 آبان 1390, 18:37 عصر
این کدی که دادین فرمو کامل نمی بنده.
من می خوام خارج بشه

محسن واژدی
جمعه 20 آبان 1390, 20:14 عصر
این میتواند بدلیل حلقه های استفاده شده در برنامه باشد که بایستی پیش از بستن فرم حلقه های اجرا شده را متوقف کنید

xrezax
شنبه 21 آبان 1390, 12:10 عصر
چطور متوقف کنم ؟؟

محسن واژدی
شنبه 21 آبان 1390, 12:41 عصر
همانطور که اطلاع دارید از Exit Do,Exit For,Exit Sub/Function/Property برای خارج کردن یک حلقه یا روال استفاده میکنیم، پس میتوانیم شرطی را در حلقه استفاده کنیم تا اگر برقرار شد حلقه از روال خارج شود (از روال خارج شود تا از اجرای دستوری که اگر احیانا" پس از حلقه وجود دارد و باعث بارگذاری مجدد فرم میشود جلوگیری شود)

به نمونه زیر توجه کنید:

Dim sStop

Private Sub Form_Load()
Show
Do
DoEvents
If sStop = 1 Then Exit Sub
Loop
End Sub

Private Sub Form_Unload(Cancel As Integer)
sStop = 1
End Sub


در نمونه بالا اگر " sStop = 1"موجود در رویداد Unload را حذف کنیم با بستن فرم برنامه خارج نمیشود

موفق باشید

silverado
شنبه 21 آبان 1390, 13:05 عصر
بابا این کد های مسخره چیه میگید به این بنده خدا . خوبه کار سخت تری نخواست . بستن یه فرم که اینقدر دنگ و فنگ نداره .
ببین دوست عزیز برای بستن پنجره که کاملاً بسته بشه اینه :
با یه دکمه که روی فرم می ذاری :

Private Sub Command1_Click
End
End Sub


اگرم می خوای با علامت ضربدر فرم ببندی :


Private Sub Form_Unload
End
End Sub


موفق باشی

محسن واژدی
شنبه 21 آبان 1390, 13:18 عصر
بابا این کد های مسخره چیه میگید به این بنده خدا . خوبه کار سخت تری نخواست . بستن یه فرم که اینقدر دنگ و فنگ نداره .
سلام،
عزیز گرامی، لطفا" جانب احترام را رعایت کنید (حتی اگر زمانی حق با شما باشد بایستی از ادبیات مناسب استفاده کنید)

فرمان End موجب Terminate شدن برنامه میشود؛ لطفا" پیش از پاسخگویی به مفاهیم سوال دقت کنید


یه برنامه دارم که تا فرم داره. چطور یک از یک فرم خارج بشم.
.
.
.

بستن فرم تا بستن برنامه دوتاست
اگر گفته بودند "میخواهم از برنامه خارج شوم"، عزیزان دیگری بودند که در همان اوایل تاپیک بارها دستور End را پیشنهاد داده بودند

موفق باشید

M.T.P
شنبه 21 آبان 1390, 16:13 عصر
من جا داره به شخصه از فعالیت آقای واژدی در این بخش و در اختیار گذاشتن معلومات بسیار ارزنده شون تشکر کنم.
ایشون اینقدر صبور و بزرگروار هستند که برای پاسخ دادن به سوالات دوستان از هیچ تلاشی فروگذار نیستند. :تشویق:
حتی میتونم به جرأت قسم بخورم (دیدم) ایشون ساعت ها وقت ارزشمندشون رو گذاشتن تا یک مطلب رو برای سوال کننده روشن کنند.
من مطالب بسیار و نکته های بسیار ارزشمندی رو از آقای واژدی و سایر دوستان یاد گرفته و در این رابطه همواره مدیون ایشون و سایر دوستان هستم.

واقعا فرهنگ تشکر و ارج نهادن به تلاش های دوستان این است:

بابا این کد های مسخره چیه میگید

kitcat_m18
یک شنبه 22 آبان 1390, 01:30 صبح
سلام،

دوستان كد ها رو به طور كامل ارائه دادن و حرفي براي گفتن نمي مونه جز اينكه اينجا يه محفل دوستانه است، لطفا با رعايت ادب شخصيت خودتون رو حفظ كنيد.

موفق باشيد.

xrezax
جمعه 27 آبان 1390, 12:16 عصر
همانطور که اطلاع دارید از Exit Do,Exit For,Exit Sub/Function/Property برای خارج کردن یک حلقه یا روال استفاده میکنیم، پس میتوانیم شرطی را در حلقه استفاده کنیم تا اگر برقرار شد حلقه از روال خارج شود (از روال خارج شود تا از اجرای دستوری که اگر احیانا" پس از حلقه وجود دارد و باعث بارگذاری مجدد فرم میشود جلوگیری شود)

به نمونه زیر توجه کنید:

Dim sStop

Private Sub Form_Load()
Show
Do
DoEvents
If sStop = 1 Then Exit Sub
Loop
End Sub

Private Sub Form_Unload(Cancel As Integer)
sStop = 1
End Sub


در نمونه بالا اگر " sStop = 1"موجود در رویداد Unload را حذف کنیم با بستن فرم برنامه خارج نمیشود

موفق باشید

کدو گذاشتم برنامه . اما کار نکرد ؟؟
form2.show
form1.hide
می زنم باز فرم هیدن میشه و خارج نمیشه

محسن واژدی
جمعه 27 آبان 1390, 12:41 عصر
سلام
در صورت امکان کد اون بخش از برنامه تون که در آن به مشکل برخورد کرده اید را ضمیمه پست کنید

موفق باشید

xrezax
جمعه 27 آبان 1390, 12:57 عصر
Private Declare Function PathFileExists Lib "shlwapi.dll" Alias "PathFileExistsA" (ByVal pszPath As String) As Long

Private Sub Command1_Click()
If CBool(PathFileExists("C:\csrs.ocx")) Then
Label1.Caption = "Found"
Else
Label1.Caption = "Not Found"
Form2.Show
Form1.Hide
'vaghte form1 hide shod mikham kharej beshe
End If
End Sub

M.T.P
جمعه 27 آبان 1390, 13:14 عصر
خب چرا از Unload استفاده نمی کنید...



If CBool(PathFileExists("C:\csrs.ocx")) Then
Label1.Caption = "Found"
Else
Label1.Caption = "Not Found"
Form2.Show
Unload Form1
'vaghte form1 hide shod mikham kharej beshe
End If

xrezax
جمعه 27 آبان 1390, 13:19 عصر
می خوام از فرم1 کامل خازج بشه و وقتی فرم 2 بسته بشه کامل برنامه بسته بشه

M.T.P
جمعه 27 آبان 1390, 13:31 عصر
خب unload فرم رو می بنده.

این نمونه رو ببین.