تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مساعدة في تغيير حجم الفورم حسب دقة عرض الشاشة
#1
السلام عليكم اخواني المبرمجين.
ورمضان كريم للجميع

اريد من دوي الاختصاص مساعدتي في اعطائي مثال عن تغيير حجم الفورم حسب دقة عرض الشاشة لكمبيوتر أخر 
و شكرا
الرد }}}
تم الشكر بواسطة:
#2
وعليكم السلام ورحمة الله وبركاته :

لا يوجد كود قياسي لذلك ولكن هناك أكواد تقرب لك الأمر كثيراً وتجعله مقبولاً إلى حد كبير مع أغلب الشاشات
وأهمها الكود الذي شارك به هنا المبرمج (Ahmed_Mansoor) وهو :

من قائمة (Projects)  قم بانشاء (Add Class Module)
اجعل اسم الكلاس (xResizer)
ثم انسخ فيه الكود التالي : 
كود :
Option Explicit
Private nFormHeight      As Integer
Private nFormWidth       As Integer
Private nNumOfControls   As Integer
Private nTop()           As Integer
Private nLeft()          As Integer
Private nHeight()        As Integer
Private nWidth()         As Integer
Private nFontSize()      As Integer
Private nRightMargin()   As Integer
Private bFirstTime       As Boolean

Sub Init(frm As Form, Optional nWindState As Variant)
 
  Dim I          As Integer
  Dim bWinMax    As Boolean
 
  bWinMax = Not IsMissing(nWindState)
 
  nFormHeight = frm.Height
  nFormWidth = frm.Width
  nNumOfControls = frm.Controls.Count - 1
  bFirstTime = True
  ReDim nTop(nNumOfControls)
  ReDim nLeft(nNumOfControls)
  ReDim nHeight(nNumOfControls)
  ReDim nWidth(nNumOfControls)
  ReDim nFontSize(nNumOfControls)
 
  ReDim nRightMargin(nNumOfControls)
  On Error Resume Next
  For I = 0 To nNumOfControls
     If TypeOf frm.Controls(I) Is Line Then
        nTop(I) = frm.Controls(I).Y1
        nLeft(I) = frm.Controls(I).X1
        nHeight(I) = frm.Controls(I).Y2
        nWidth(I) = frm.Controls(I).X2
     Else
        nTop(I) = frm.Controls(I).Top
        nLeft(I) = frm.Controls(I).Left
        nHeight(I) = frm.Controls(I).Height
        nWidth(I) = frm.Controls(I).Width
        nFontSize(I) = frm.FontSize
        nRightMargin(I) = frm.Controls(I).RightMargin
     End If
  Next
 
  If bWinMax Or frm.WindowState = 2 Then ' maxim
     frm.Height = Screen.Height
     frm.Width = Screen.Width
  Else
     frm.Height = frm.Height * Screen.Height / 7290
     frm.Width = frm.Width * Screen.Width / 9690
  End If
 
  bFirstTime = True
 
End Sub

Sub FormResize(frm As Form)
 
  Dim I             As Integer
  Dim nCaptionSize  As Integer
  Dim dRatioX       As Double
  Dim dRatioY       As Double
  Dim nSaveRedraw   As Long
 
  On Error Resume Next
  nSaveRedraw = frm.AutoRedraw
 
  frm.AutoRedraw = True
 
  If bFirstTime Then
     bFirstTime = False
     Exit Sub
  End If
 
  If frm.Height < nFormHeight / 2 Then frm.Height = nFormHeight / 2
 
  If frm.Width < nFormWidth / 2 Then frm.Width = nFormWidth / 2
  nCaptionSize = 400
  dRatioY = 1# * (nFormHeight - nCaptionSize) / (frm.Height - nCaptionSize)
  dRatioX = 1# * nFormWidth / frm.Width
  On Error Resume Next ' for comboboxes, timeres and other nonsizible controls
 
  For I = 0 To nNumOfControls
     If TypeOf frm.Controls(I) Is Line Then
        frm.Controls(I).Y1 = Int(nTop(I) / dRatioY)
        frm.Controls(I).X1 = Int(nLeft(I) / dRatioX)
        frm.Controls(I).Y2 = Int(nHeight(I) / dRatioY)
        frm.Controls(I).X2 = Int(nWidth(I) / dRatioX)
     Else
        frm.Controls(I).Top = Int(nTop(I) / dRatioY)
        frm.Controls(I).Left = Int(nLeft(I) / dRatioX)
        frm.Controls(I).Height = Int(nHeight(I) / dRatioY)
        frm.Controls(I).Width = Int(nWidth(I) / dRatioX)
        frm.Controls(I).FontSize = Int(nFontSize(I) / dRatioX) + Int(nFontSize(I) / dRatioX) Mod 2
        frm.Controls(I).RightMargin = Int(nRightMargin(I) / dRatioY)
     End If
  Next
 
  frm.AutoRedraw = nSaveRedraw
 
End Sub


في كل نافذة تريد أن تتغير حجمها بحسب إعدادت الشاشات التي تستخدمها 
أستخدم الكود التالي : 

كود :
Private R1 As New xResizer

Private Sub Form_Load()
   R1.Init Me
End Sub

Private Sub Form_Resize()
   R1.FormResize Me
End Sub
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة:
#3
الأفضل توفير كود يلائم لغة البرمجة والبيئة التي تستخدمها. في حالتك، يبدو أنك تستخدم Visual Basic (والأمثلة المقدمة لك تناسب هذا السياق).
يقدم الكود الذي قدمه صديقنا Taha Okla حلاً جيدًا لتغيير حجم النموذج بناءً على دقة الشاشة في بيئة Visual Basic. إذا كانت هذه هي اللغة والبيئة التي تعمل بها، فإن هذا الكود هو الأفضل لمتطلباتك. ومع ذلك، يمكنك دائمًا تعديل الكود وتحسينه بناءً على متطلباتك الخاصة.
في حال كنت تستخدم لغة برمجة أو بيئة مختلفة، من فضلك قدم تفاصيل إضافية حول متطلباتك وسنحاول توفير أفضل إجابة ممكنة لتناسب احتياجاتك.
الرد }}}
تم الشكر بواسطة:
#4
شكرا أخي Taha Okla  وكدالك الأخ sanyor77  على دعمكم لي.
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم