ايران ويج

نسخه‌ی کامل: ذخيره اندازه فرم با استفاده از ريجستري
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
مي بخشيد اگه اين موضوع احتمالا مربوط به اين بخش نيست.
با اين دستور بعد از بستن فرم اندازه فرم در ريجستر ذخيره ميشه و هنگام باز كردن فرم اندازه اي كه فرم موقع بستن داشت نمايش داده ميشه.
البته براي دوستاني كه كار با ريجستري رو دوست دارن هم آموزش خيلي خوبيه.
اگه سوالي در موردش داشتين خوشحال ميشم جواب بدم.

Private Sub Form_Load()

On Error GoTo ErrHandler

retvalue = GetSetting(1, 3, "Runcount")
dD$ = (retvalue)
If dD$ = "3" Then
Me.WindowState = 2
Else


retvalue = GetSetting(1, 1, "Runcount")
dD$ = (retvalue)
Me.Width = dD$

retvalue = GetSetting(1, 2, "Runcount")
dD$ = (retvalue)
Me.Height = dD$
End If

ErrHandler:

If Err.Number Then

retvalue = GetSetting(1, 1, "Runcount")
dD$ = Me.Width
SaveSetting 1, 1, "RunCount", dD$

retvalue = GetSetting(1, 2, "Runcount")
dD$ = Me.Height
SaveSetting 1, 2, "RunCount", dD$
If Me.WindowState = 2 Then
retvalue = GetSetting(1, 3, "Runcount")
dD$ = "3"
SaveSetting 1, 3, "RunCount", dD$
Else
retvalue = GetSetting(1, 3, "Runcount")
dD$ = "0"
SaveSetting 1, 3, "RunCount", dD$

End If


Else

retvalue = GetSetting(1, 3, "Runcount")
dD$ = (retvalue)
If dD$ = "3" Then
Me.WindowState = 2
Else


retvalue = GetSetting(1, 1, "Runcount")
dD$ = (retvalue)
Me.Width = dD$

retvalue = GetSetting(1, 2, "Runcount")
dD$ = (retvalue)
Me.Height = dD$
End If


End If


retvalue = GetSetting(1, 3, "Runcount")
dD$ = (retvalue)
If dD$ = "3" Then
Me.WindowState = 2
Else


retvalue = GetSetting(1, 1, "Runcount")
dD$ = (retvalue)
Me.Width = dD$

retvalue = GetSetting(1, 2, "Runcount")
dD$ = (retvalue)
Me.Height = dD$
End If

End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
retvalue = GetSetting(1, 1, "Runcount")
dD$ = Me.Width
SaveSetting 1, 1, "RunCount", dD$

retvalue = GetSetting(1, 2, "Runcount")
dD$ = Me.Height
SaveSetting 1, 2, "RunCount", dD$
If Me.WindowState = 2 Then
retvalue = GetSetting(1, 3, "Runcount")
dD$ = "3"
SaveSetting 1, 3, "RunCount", dD$
Else
retvalue = GetSetting(1, 3, "Runcount")
dD$ = "0"
SaveSetting 1, 3, "RunCount", dD$

End If

End Sub
دستت درد نكنه ولي چرا اينهمه كد ؟
با چهار خط ميشه همه اين كار ها رو انجام داد
کد:
Private Sub Form_Load()
Me.Top = GetSetting("Pname", "Top", Me.Name, 0)
Me.Left = GetSetting("Pname", "Left", Me.Name, 0)
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
SaveSetting "Pname", "Top", Me.Name, Me.Top
SaveSetting "Pname", "Left", Me.Name, Me.Left
End Sub
البته اينجا من فقط محل قرار گيري فرم رو ذخيره كردم
كه ميشه ابعادش رو هم ذخيره كرد
دستت درد نكنه حامد خان
خيلي به درد خورد
سلام
دستور شما فقط محل قرار گرفتن فرم رو ذخيره مي كنه، اين با اندازه فرم فرق مي كنه.
1- براي اولين بار كه برنامه روي يك سيستم ديگه ران ميشه آدرس ريجستري كه برنامه مي خواد اندازه رو از روش بخونه خاليه !!!
2- اگه كاربر فرم رو در حالت ماكزيمم ببنده !!!
3- در ويژوال در هر مرحله اي لازمه كه جلوي هر ارر احتمالي گرفته بشه .
4- يك بار برنامه رو در حالتي كه ميني مايز هست ببنديد . بعد دوباره برنامه رو ران كنيد. چه اتفاقي ميفته ؟؟؟؟
بخاطر اين سه مورد دستور من چند خطي بيشتره.
tanhatarin نوشته است:سلام
دستور شما فقط محل قرار گرفتن فرم رو ذخيره مي كنه، اين با اندازه فرم فرق مي كنه.
1- براي اولين بار كه برنامه روي يك سيستم ديگه ران ميشه آدرس ريجستري كه برنامه مي خواد اندازه رو از روش بخونه خاليه !!!
2- اگه كاربر فرم رو در حالت ماكزيمم ببنده !!!
3- در ويژوال در هر مرحله اي لازمه كه جلوي هر ارر احتمالي گرفته بشه .
4- يك بار برنامه رو در حالتي كه ميني مايز هست ببنديد . بعد دوباره برنامه رو ران كنيد. چه اتفاقي ميفته ؟؟؟؟
بخاطر اين سه مورد دستور من چند خطي بيشتره.
حرف شما متين ولي
وقتي اطلاعات از رجيستري خونده ميشه اگه نبود اطلاعات پيش فرض برگشت داده ميشه يعني 0 پس در مختصات 0.0 باز ميشه

و آخر پستم هم گفتم كه فقط مختصات رو ذخيره م يكنه كه با عوض كردن دو تا تابع ميشه اندازه رو ذخيره كرد
اگر ماكزيمم ببنده مشكلي پيش نمياد چون فرم د رمختصات 0.0 بسته ميشه
برا مي ني مايز حق با شماست ولي خيلي بهتر از اين ميشه تعريف كرد مثلا موقع بستن فرم به حالت عادي برگرده بعد بسته بشه هم بهتر مي شه هم مختصات دستنيافتني از بين ميره
وخطا فكر نكنم باشه

و در ضمن منظور من از اين همه كد پيچيدگيش بود نه اضافه بودنشون Confused

در اخر از شما تشكر ميكنم به خاطر مطلب كاربرديتونHeart
سلام حامد جان
من متوجه منظورتون شدم و مي خواستم بگم كه اين دو برنامه درسته كه يه جور كار مي كنن ولي باهم تفاوتهايي هم دارن.
منظور من از مورد اول (باز كردن برنامه در يك سيستم ديگه ) در مورد اندازه فرم بود نه محل قرار گيريش.مطمئنا فرمي كه طول و عرضش صفر باشه هيچ وقت باز نميشه ( ارر مي ده ).
فكر مي كنين اگه همين برنامه رو براي حالت ميني مايز و ماكزيمم هم تعريف كنيد چند خط ديگه بايد اضافه كني؟
موفق باشي .