اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

اطار واجهة Ms Access


alsihran
إذهب إلى أفضل إجابة Solved by jjafferr,

الردود الموصى بها

تمام 

الله يعطيك العافية 

هل بالامكان عدم تكبير النافذة مادام البرنامج مفتوح 

لان الموضوع مرتبط بفتح النموذج على شاشات مختلفة المقاسات 

وتظهر العناصر في غير اماكنها 

 

رابط هذا التعليق
شارك

2 ساعات مضت, alsihran said:

هل بالامكان عدم تكبير النافذة

نعم ممكن ،

كل شغل الحجم موجود في حدث "عند فتح النموذج" ، فإحذف DoCmd.Maximize

 

اما اذا كنت تريد ترتب النماذج داخل شاشة الاكسس ، فيمكنك استعمال الامر docmd.MoveSize(Right, Down, Width, Height)

 

جعفر

  • Like 3
رابط هذا التعليق
شارك

3 ساعات مضت, jjafferr said:

كل شغل الحجم موجود في حدث "عند فتح النموذج" ، فإحذف DoCmd.Maximize

الله يعطيك العافية 

المقصود عدم تمكين المستخدم من سحب الاطار لتكبير او تصغيره 

صراحه الكود جدا ممتاز واعتقد راح يحل لي مشكلة بعثرة الادوات داخل النموذج عند اختلاف مقاس الشاشات 

ياليت كان موجود بالكود حساب مقاس الشاشة للعرض والطول ليفتح بالمنتصف بالضبط 

لاني لاحظت انه يفتح اقصى اليسار واقصى ارتفاع الشاشة 

غيرت  بالارقام وتغير موقع فتحه لكن المشكلة لو اختلف مقاس الشاشة ما اعرف ايش راح تكون النتيجة لاني ما بعد اجربه على شاشة مقاس 21 

رابط هذا التعليق
شارك

1 ساعه مضت, alsihran said:

1. لمقصود عدم تمكين المستخدم من سحب الاطار لتكبير او تصغيره 

2. ياليت كان موجود بالكود حساب مقاس الشاشة للعرض والطول ليفتح بالمنتصف بالضبط 

3. لاني لاحظت انه يفتح اقصى اليسار واقصى ارتفاع الشاشة 

4. غيرت  بالارقام وتغير موقع فتحه لكن المشكلة لو اختلف مقاس الشاشة ما اعرف ايش راح تكون النتيجة لاني ما بعد اجربه على شاشة مقاس 21

 

1. يمكنك تغيير نوع اطار النموذج من اعدادات النموذج ، فلن يستطيع المستخدم تغيير حجم او مكان النموذج ،

2. كذلك من اعدادات النموذج ، اختار "نعم" ، حتى يفتح لك النموذج في منتصف شاشة الاكسس ،

image.png.665fd3e3f6466649d39371a489ed1336.png

.

3. لأني انا طلبت منه يفتح البرنامج من مسافة صفر من يسار شاشة الوندوز ، وترك مسافة صفر من اعلى شاشة الوندوز ، مع ملاحظة ان حساب المسافة بقياس Twips (سنتيمتر 1 = 567 تويب ، وبوصة واحدة =  1440 تويب)

image.png.ec9ef870ce4b0695508ee54bcb0b63e6.png

4. الرابط التالي فيه الكود المطلوب لمعرفة حجم شاشة الوندوز :

.

او بإختصار تنادي هذه الدالة:

Declare ptrsafe Function GetSystemMetrics32 Lib "User32" _
    Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long

Sub ScreenRes()
Dim w As Long, h As Long
    w = GetSystemMetrics32(0) ' width in points
    h = GetSystemMetrics32(1) ' height in points

End Sub

.

** رجاء الملاحظة:

شاشة الوندوز : هي الشاشة اللي لما تفتح الكمبيوتر وترى سطح المكتب : Screen/Display Resolution

the-best-monitor-resolution-and-diagonal

 

شاشة الاكسس : لما تفتح برنامج الاكسس ، المربع الاحمر هو شاشة الاكسس ، سواء اللي تشوفه في الصورة ، او لما تفتحه بدون اشرطة الاوامر العلوية ، وشريط بدون قائمة الكائنات من جداول و استعلامات وو ويعبئ حجم شاشة الوندوز

image.png.a0b03b535c8e6e8dc4c8ead2813bdba1.png

.

وبهذه الدالة تستطيع معرفة حجم شاشة الاكسس:

'https://www.tek-tips.com/viewthread.cfm?qid=1475779

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowRect Lib "user32" Alias "GetWindowRect" (ByVal hwnd As Long, lpRect As RECT) As Long
Public Type RECT
        Left As Long
        Top As Long
        Right As Long
        Bottom As Long
End Type

Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, _
  ByVal hdc As Long) As Long
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, _
  ByVal nIndex As Long) As Long

Public Const WU_LOGPIXELSX = 88
Public Const WU_LOGPIXELSY = 90

Public Function TwipsPerPixel(strDirection As String) As Long

    'Handle to device
    Dim lngDC                       As Long
    Dim lngPixelsPerInch            As Long
    Const nTwipsPerInch = 1440
    lngDC = GetDC(0)

    If (Left$(strDirection, 1) = "X") Then                       'Horizontal
        lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSX)
    Else                                              'Vertical
        lngPixelsPerInch = GetDeviceCaps(lngDC, WU_LOGPIXELSY)
    End If
    lngDC = ReleaseDC(0, lngDC)
    TwipsPerPixel = nTwipsPerInch / lngPixelsPerInch

End Function


Public Sub WindowSize(ByRef Height As Long, ByRef Width As Long)

    Dim hwnd                        As Long
    Dim rct                         As RECT

    hwnd = FindWindow(vbNullString, "Microsoft Access")
    If hwnd <> 0 And GetWindowRect(hwnd, rct) <> 0 Then
        Height = (rct.Bottom - rct.Top) * TwipsPerPixel("Y")
        Width = (rct.Right - rct.Left) * TwipsPerPixel("X")
    End If
End Sub

 

جعفر

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

1 ساعه مضت, jjafferr said:

4. الرابط التالي فيه الكود المطلوب لمعرفة حجم شاشة الوندوز :

بالنسبة لهذا الموضوع 

مريت عليه سابقا لكن حصلت انه مش منطقي اغير دقة الشاشة بالكامل 

بالاضافة اذا كان جهاز المستخدم مرتبط بسيرفر ما راح يسمح له يغير دقة الشاشة ( لاتوجد صلاحيات )

2 ساعات مضت, jjafferr said:

شاشة الاكسس : لما تفتح برنامج الاكسس ، المربع الاحمر هو شاشة الاكسس ، سواء اللي تشوفه في الصورة ، او لما تفتحه بدون اشرطة الاوامر العلوية ، وشريط بدون قائمة الكائنات من جداول و استعلامات وو ويعبئ حجم شاشة الوندوز

انا افتح برنامجي مثل ما تفتح برنامجك اللي وضعت رابطه وقلت ما تستغني عنه 

بالنسبه لجميع مواضيع حجم الشاشة بالمنتدى تقريبا جربتها كلها ومع الاسف الاخوان وضعوها على انها تعمل 

ولمى جربتها الى شاشة مقاس 21 كلها فشلت وظهرت ادوات النماذج متبعثره 

اعتقد كودك اللي تحدد فيه حجم نافذة الاكسس عند بدء تشغيل اول نموذج راح يساعد قي ضبط الامور نوعا ما 

مع تحديد الارتساء الافقي  لادوات النموذج يمين / يسار    الى كليهما  

image.png.7b0ac89067e7ffbaa9c377a23cece867.png

ان شاء الله باكر لمى اجرب على الشاشة الكبيرة اضع النتيجة 

شاكر ومقدر لك 

 

رابط هذا التعليق
شارك

22 دقائق مضت, alsihran said:

انه مش منطقي اغير دقة الشاشة بالكامل

انا ما قلت هذا الشيء ، ومن معارضي تغيير اعدادات الوندوز حقي ، او اضافة شيء في الريجستري ،

انا قلت

2 ساعات مضت, jjafferr said:

الرابط التالي فيه الكود المطلوب لمعرفة حجم شاشة الوندوز

.

 

25 دقائق مضت, alsihran said:

بالنسبه لجميع مواضيع حجم الشاشة بالمنتدى تقريبا جربتها كلها ومع الاسف الاخوان وضعوها على انها تعمل 

ولمى جربتها الى شاشة مقاس 21 كلها فشلت وظهرت ادوات النماذج متبعثره

.

كل موضوع له خصوصيته لعمل شيء معين ، لهذا السبب يمكنك اخذ ولو جزء منه حتى يفيدك ،

ولكن ، وهذه الطريقة اللي اعمل عليها انا:

  1. شبه مستحيل ان اكون انا اول شخص في العالم يريد عمل هذا العمل ، لذا ،
  2. اول شيء اعمله هو البحث عن الطرق اللي استعملها الآخرين ، وآخذ منها حاجتي ، سواء العمل كله او كود معين ، ثم اعدل عليه ليلائم طلبي.

 

وعلى حسب سؤال الموضوع ، فاعتقد بأنك حصلت على الاجابة المطلوبة ،

اما قولك :

35 دقائق مضت, alsihran said:

وظهرت ادوات النماذج متبعثره 

 

فيجب ان تشرحه وبتفصيل ، وبصور ، وتخبرنا طلبك ، ولكن في موضوع جديد 🙂

 

جعفر

  • Like 2
رابط هذا التعليق
شارك

12 ساعات مضت, jjafferr said:

وعلى حسب سؤال الموضوع ، فاعتقد بأنك حصلت على الاجابة المطلوبة ،

نعم والحمد لله نجحت على الشاشة مقاس 21

شاكر ومقدر لك تقبل خالص التحية 

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information