الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

*كود* تغيير دقة عرض الشاشة بالكود

مغلق
بدأه مصلح الحريصي في 17 ديسمبر 2001 · 21 رد · 4,416 مشاهدة · في قسم الأرشيف و المواضيع المميزه
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأخوة الأفاضل

السلام عليكم ورحمة الله وبركاته

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

الموضوع حول مقاسات الشاشات فكل ما عملت برنامج على شاشة معينة وقمت بتحميله على شاشة أخري أواجه صعوبات وخاصة إذا قمت بإعداد البرنامج على شاشة ذات مقاس كبير مثل 19 وأحمله على شاشة مقاس 14 أو 15 نصف النماذج يختفي في جميع أطراف الشاشة وهذا سببلي قلق وإحباط0

هل يوجد حل حول ملائمة البرنامج على مقاسات جميع الشاشات ؟

أخبروني الله يخلي لكم من تحبون0

عيد سعيد وكل عام وأنتم بخير

#2

ما تذكره ليس له علاقة بمقاس الشاشة ، المشكلة هنا في ما يسمى في الوندوز ناحية الشاشة لوحة التحكم => عرض => إعدادات => ناحية الشاشة وهذه كما هو معروف يمكن تغييرها يدوياً أو بالكود .

ولك تحياتي

#3

شكراً على الرد السريع ولكني لا أعرف الكود فياليت لو تتكرم بكتابة الكود وهل يكتب على كل نموذج أم على قاعدة البيانات ويتم إستدعائه عند بدء تشغيل البرنامج 0

ولك إحترامي وتقديري

#4

في الوحدة النمطية الخاصة بالنموذج ضع :

Option Compare Database
Private Const EWX_LOGOFF = 0
Private Const EWX_SHUTDOWN = 1
Private Const EWX_REBOOT = 2
Private Const EWX_FORCE = 4
Private Const CCDEVICENAME = 32
Private Const CCFORMNAME = 32
Private Const DM_BITSPERPEL = &H40000
Private Const DM_PELSWIDTH = &H80000
Private Const DM_PELSHEIGHT = &H100000
Private Const CDS_UPDATEREGISTRY = &H1
Private Const CDS_TEST = &H4
Private Const DISP_CHANGE_SUCCESSFUL = 0
Private Const DISP_CHANGE_RESTART = 1

Private Type typDevMODE
    dmDeviceName       As String * CCDEVICENAME
    dmSpecVersion      As Integer
    dmDriverVersion    As Integer
    dmSize             As Integer
    dmDriverExtra      As Integer
    dmFields           As Long
    dmOrientation      As Integer
    dmPaperSize        As Integer
    dmPaperLength      As Integer
    dmPaperWidth       As Integer
    dmScale            As Integer
    dmCopies           As Integer
    dmDefaultSource    As Integer
    dmPrintQuality     As Integer
    dmColor            As Integer
    dmDuplex           As Integer
    dmYResolution      As Integer
    dmTTOption         As Integer
    dmCollate          As Integer
    dmFormName         As String * CCFORMNAME
    dmUnusedPadding    As Integer
    dmBitsPerPel       As Integer
    dmPelsWidth        As Long
    dmPelsHeight       As Long
    dmDisplayFlags     As Long
    dmDisplayFrequency As Long
End Type

Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lptypDevMode As Any) As Boolean
Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (lptypDevMode As Any, ByVal dwFlags As Long) As Long
Private Declare Function ExitWindowsEx Lib "user32" (ByVal uFlags As Long, ByVal dwReserved As Long) As Long

وفي حدث عند نقر زر أمر ضع :

Dim typDevM As typDevMODE
Dim lngResult As Long
Dim intAns    As Integer

' Retrieve info about the current graphics mode
' on the current display device.
lngResult = EnumDisplaySettings(0, 0, typDevM)

' Set the new resolution. Don't change the color
' depth so a restart is not necessary.
With typDevM
    .dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
    .dmPelsWidth = 800  'اختر أحد الأرقام التالية (640,800,1024, etc)
    .dmPelsHeight = 600 'اختر أحد الأرقام التالية (480,600,768, etc)
End With

' Change the display settings to the specified graphics mode.
lngResult = ChangeDisplaySettings(typDevM, CDS_TEST)
Select Case lngResult
    Case DISP_CHANGE_RESTART
        intAns = MsgBox("يجب إعادة تشغيل الحاسب قبل تطبيق الاختيار الجديد" & _
            vbCrLf & vbCrLf & "هل ترغب في ذلك الآن ؟", _
            vbYesNo + vbSystemModal, "إعادة التشغيل")
        If intAns = vbYes Then Call ExitWindowsEx(EWX_REBOOT, 0)
    Case DISP_CHANGE_SUCCESSFUL
        Call ChangeDisplaySettings(typDevM, CDS_UPDATEREGISTRY)
        MsgBox "تم تغيير الاعدادات بنجاح", vbInformation, "تم تغيير الاعدادات"
    Case Else
        MsgBox "الجهاز لايدعم التغيير", vbSystemModal, "خطأ"
End Select

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

ولك تحياتي

#5

اشكرك جزيل الشكر

بارك الله فيك سوف أجرب الكود وأخبرك بالنتيجة 0

أرجو لك الدرجات العلى في الدنيا ولأخرة............. اللهم أمين

#6

السلام عليكم

لقد صممت فورم بقياس متناسق ولكن اذا كانت احداثيات الشاشة أكبر من ذلك أو أصغر وأقصد اذا شغلته في كمبيوتر آخر فإن كل التصميم يصبح في خبر كان !!

أريد تثبيت حجم الفورم بحيث يكون بقياس 800*600 أو يحتفظ بنفس الشكل ولي أنا صممته عليه في جهازي على شاشة مقاس 17 بوصة واذا عرضته في كميوتر أخت لي وشاشتها مقاس 15 بوصه أو شاشة مقاس 20 مثل ولي في معمل المعهد يكون بنفس الشكل و حتى لو كانت احداثيات الشاشة غير ذلك .

وحتى لو قام أحد بتغيير حجم الشاشة يدوياً .. بأن يقوم الفورم أو البرنامج تلقائياً باعادته الى القياس 800*600 أو بنفس المقاس الأصلي .

أنا قرأت عن هذة المشكلة في هذا المنتدى وفي هذة الوصلة

http://arabteam.nicmatic.com/vb/showthread...or+%D4%C7%D4%C9

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

#7

بسم الله الرحمن الرحيم

اولا حجم الشاشة لايهم فى تصميم الفورم 15 بوصة او 17 بوصة

ولكن المهم دقة العرض( 640*480 )-( 800*600 )

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

وعموما اغلب المستخديمين حاليا يفضلون دقة عرض 800 * 600 وسوف اوافيكم بالدالة ان شاء الله .....

#8

الأخت

انظري هذا الرابط :

http://arabteam.nicmatic.com/vb/showthread...%E1%D4%C7%D4%C9

وقد يفيد هذا :

http://www.moudir.net/vb/showthread.php?s=...s=&threadid=246

مع استخدام البحث قبل كتابة موضوع جديد حتى لايتم تكرار المعلومات مرة أخرى .

وللجميع التحية

#9

الأخ مشرف القسم سبق وطلعت على اللنك ولي وضعته ولكن مع الأسف يظهر لي عند تشغيل الفورم رسالة خطأ وهذا الذي دعاني لكتابة الموضوع . أيضا اللنك الآخر يظهر نفس الرسالة وهي

Compile error

Variable not defined

مع العلم أني متبعة التعليمات بحذافيرها. وشكرا

#10

الأخت ليلى

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

ثانيا : أشرحي الخطوات التي عملتيها بالتفصيل .

ثالثا : ماهو السطر الذي يتم تعليمه إذا ظهرت الرسالة ولمعرفة ذلك اضغطي على Debug واكتبي السطر الذي يتم تعليمه باللون الأصفر .

وللجميع التحية

#11

أتبعت التعليمات والكود الأخير وضعته في خاصية تحميل الفورم on load و أول مايعمل يشير باللون الأصفر على السطر الأول ولي تحت

Private Sub Form_Load()

Dim typDevM As typDevMODE

#12

لم أعرف السبب ولكن ما نص الرسالة التي تظهر .

وللجميع التحية

#13

هذة صورة للوضع

form1.jpg

ون شاء الله تكون واضحه المشكلة

#14

الأمر سهل جداً امسحي أول سطر في الأعلى في الوحدة النمطية الظاهر في الصورة :

Option Compare Database

الرسالة تخبرك بتكرر هذا السطر لأنني وضعت الكود والسطر الأول الذي يظهر تلقائياً في كل وحدة موجود ولم تمسحيه من الوحدة عندك .

المهم امسحية وستسير الأمور على مايرام إن شاء الله .

سؤال جانبي أين تضعين هذه الصور وهل الموقع مجاني .

وللجميع تحياتي

#15

الأخ أبوحمود المحترم : هذة المشكلة الثانية والصورة توضح ذلك . بالنسبة لكود الوحدة النمطية سويته بس كود الخاص بتغيير الشاشة هذة صورة المشكلة .

form2.gif

أما رد على سؤالك عن موقع الصور الصراحة مش لي والموقع شبه مجاني بس تدفع الضاهر 30 ريال مقابل 10 ميغا. وهذا عنوانهم اذا تبقاه

www.arab1.net

#16

المشكلة أنك وضعت الكود الأول في وحدة نمطية عامة وقد ذكرت أنا أنه يوضع في الوحدة النمطية الخاصة بالنموذج .

إذا أردت وضعه في وحدة نمطية عامة فامسحي كلمة Private واستبدليها بكلمة Public .

وللجميع التحية

#17

وكيف يوضع في الوحدة النمطية الخاصه بالنموذج و وين ...بالتفصيل الممل لو سمحت .

#18

يوضع الكود الذي جعلتيه في وحدة نمطية1 في الأعلى تماما قبل أي إجراء في الوحدة النمطية الخاصة بالنموذج .

وللجميع التحية

#19

والله مافهمت حاجه .

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

#20

هذا مثال على الموضوع :

http://mypage.ayna.com/h_h123/View.zip

وللجميع التحية

#21

طلبنا قطرة ماء وجانا سيل من الماء الله يبارك فيك بس مافتح البرنامج والسبب أني على قد حالي لأن الأكسس ولي عندي 97 . والباقي أنت تعرفه حتى لا يقولو اذا صار صاحبك عسل لا تلحسه كله والسلام ختام .

#22

لقد وضعت في الرابط السابق مثالين للأكسس 97 وللأكسس 2000

والسلام ختام

وللجميع تحياتي

هذا الموضوع مغلق.

مواضيع مشابهة