PDA

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



vahidm
پنج شنبه 15 فروردین 1387, 22:17 عصر
سلام دوستان عزیز
یه سوال دارم
من می خوام توی برنامم یه قسمتی بزارم به نام بستن تمام پنجره های باز همین طور که از اسمش مشخصه می خوام تمام
پنجره های داخل برنامه خودم رو ببندم البته یه چیزایی می دونم که باید با استفاده از hWnd این کار انجام شود ولی اصلا بلد نیستم
لذا از اساتید محترم درخواست می کنم که در این مورد همکاری کنند
با تشکر

vahidm
پنج شنبه 15 فروردین 1387, 22:20 عصر
سلامی مجدد
ببخشید دوستان فقط سریع راه حل رو بنویسن
ببخشید

Bahram0110
پنج شنبه 15 فروردین 1387, 22:30 عصر
راحت ترین راهش اینه که فرم ها رو یکی یکی unload کنی

mpmsoft
پنج شنبه 15 فروردین 1387, 22:35 عصر
من خودم از این کد استفاده می کنم


For i=0 to Forms.Count -1
Unload Forms(i)
Next

vbhamed
پنج شنبه 15 فروردین 1387, 23:33 عصر
سلام
البته اگر از داخل فرم جاری می خوای این کار رو کنی با اجازه mpmsoft عزیز من کدشونو یکم تغییر می دم
چون اول باید بقیه فرم ها Unload بشن بعد فرم جاری



Dim i%

For i = 0 To Forms.Count - 1
If Forms(i).Name <> Me.Name Then Unload Forms(i)
Next

Unload Me
دستور آخر رو در صورتی بزار که بخوای فرم جاری هم Unload بشه

pars.engineer
پنج شنبه 15 فروردین 1387, 23:42 عصر
برای بستن تمامی پنجره ها من فکر میکنم راه حل آقای mpsoft بهترین راه حل و در توابع API که منظور شماست من چنین تابعی ندیده ام. اما یه تابع API فنی تر به نام ShowWindow وجود دارد که فرم را ماکزیمایز، مینیمایز و ری استور می کند.
برای این منظور عبارت زیر را در یک ماژول کپی کنید:



Public Declare Function ShowٌWindow Lib "User32" Alias "ShowWindow" (ByVal hwnd AS Long, ByVal
nCmdshow As Long) As Long


سپس کد زیر را در یک ‍Command بنویسید:




Dim rVal As Long
rVal=ShowWindow(Form1.hwnd,Ncmd)


لازم به ذکر است که به جای Ncmd باید یکی از اعداد 1(Restor) یا 2(Minimize) یا 3(Maximize) را قرار دهید.

Mr'Jamshidy
جمعه 16 فروردین 1387, 01:02 صبح
اگر از MDIForm استفاده میکنی میتونی برای بستن فرم های Child از این کد استفاده کنی
یک تایمر میزاری تو فرم به اسم trmCloseAll بعد داخلش مینویسی


If ActiveForm Is Nothing Then
TrmCloseAll.Enabled = False
Else
Unload ActiveForm
End If

هر موقع تایمر فعال شه تمام پنجره ها بسته میشه و بنظر من از Do و For هم بهتره

vahidm
جمعه 16 فروردین 1387, 06:53 صبح
سلام
با تشکر از همه دوستانی که زحمت کشیدن و راهنمایی کردن