• 0
ahmed_83

كيف ابدل resolution الشاشة من خلال الفجول فوكس

سؤال

الى جميع الاخوة والاعضاء في المنتدى ارجو الاجابة على السؤال للحاجة الدائمة

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

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

دالة موجوده في الفجول بيسك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

24 إجابة على هذا السؤال .

  • 0

الى جميع الاخوة والاعضاء في المنتدى ارجو الاجابة على السؤال للحاجة الدائمة

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

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

دالة موجوده في الفجول بيسك

اخي العزيز

هل تريد تغيير ابعاد الشاشه للنظام ؟

هل تريد تغيير ابعاد شاشه البرنامج فقط؟

ماهي الابعاد القياسيه الذي تريدها للبرنامج ؟

باين من سوالك انه عامل المشاريع بواسطه نموذج رئيسي يكون full screen

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

وانا انتظر اجابتك

تحياتي للجميعwink.gif

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي العزيز

هل تريد تغيير ابعاد الشاشه للنظام ؟

هل تريد تغيير ابعاد شاشه البرنامج فقط؟

ماهي الابعاد القياسيه الذي تريدها للبرنامج ؟

باين من سوالك انه عامل المشاريع بواسطه نموذج رئيسي يكون full screen

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

وانا انتظر اجابتك

تحياتي للجميعwink.gif

*********

اشكرك اخي على الرد

انا اريد تغير ابعاد الشاشة للوندوز وليس للبرنامج

لان تواجهين مشكلة وهية على سبيل المثال عند تصميم برنامج في حاسبة ابعادها1024*1280 وعند نقل البرانمج الى حاسبة اخرى

ابعادها اكبر مثل 600*800 تنفقد جزء من التكسات او ازرار الاوامر بسبب كبر الشاشة

اتمنى ان اكون وضحت الفكرة

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

Option Explicit

Const CCDEVICENAME = 32

Const CCFORMNAME = 32

Const DM_PELSWIDTH = &H80000

Const DM_PELSHEIGHT = &H100000

Const CDS_UPDATEREGISTRY = &H1

Const CDS_TEST = &H2

Const CDS_FULLSCREEN = &H4

Const DISP_CHANGE_SUCCESSFUL = 0

Const DISP_CHANGE_RESTART = 1

Const HWND_BROADCAST = &HFFFF&

Const WM_DISPLAYCHANGE = &H7E&

Const SPI_SETNONCLIENTMETRICS = 42

Private Declare Function EnumDisplaySettings Lib "user32" Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName As Long, ByVal iModeNum As Long, lpDevMode As Any) As Boolean

Private Declare Function ChangeDisplaySettings Lib "user32" Alias "ChangeDisplaySettingsA" (lpDevMode As Any, ByVal dwFlags As Long) As Long

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Type DEVMODE

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

Declare Function ActivateKeyboardLayout Lib "user32" (ByVal HKL As Long, ByVal Flags As Long) As Long

Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long

Dim f1_lo$, f1_hi$, f1_hg$

Dim aaa As String * 1

Dim bbb As String * 40

Dim f2_lo$, f2_hi$, f2_hg$

Dim f3_lo$, f3_hi$, f3_hg$

Dim zzz As Integer

Dim nn_lo_f3 As Integer

Dim nn_hi_f3 As Integer

Dim nn_hg_f3 As Integer

Dim ixlll As Long

Public ButtonsAndIcon As Long

Private Declare Function sndPlaySound Lib "WINMM.DLL" Alias "sndPlaySoundA" _

(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Global part1_running As Integer

Global Const SND_SYNC = &H0

Global Const SND_ASYNC = &H1

Global Const SND_NODEFAULT = &H2

Global Const SND_LOOP = &H8

Global Const SND_NOSTOP = &H10

Dim rx%

Dim wFlags%

Public picno As Integer

Global iWidth As Long, iHeight As Long

Global Resolution As Boolean

Declare Function _

BitBlt Lib "gdi32" _

(ByVal hDestDC As Long, _

ByVal X As Long, _

ByVal Y As Long, _

ByVal nWidth As Long, _

ByVal nHeight As Long, _

ByVal hSrcDC As Long, _

ByVal xSrc As Long, _

ByVal ySrc As Long, _

ByVal dwRop As Long) As Long

Sub s_play(SoundFile As String)

On Error Resume Next

wFlags% = SND_ASYNC

rx% = sndPlaySound(SoundFile$, wFlags%)

End Sub

Sub Main()

iWidth = Screen.Width \ Screen.TwipsPerPixelX

iHeight = Screen.Height \ Screen.TwipsPerPixelY

If iWidth <> 1024 Or iHeight <> 768 Then

Call ChangeRes(1024, 768)

Resolution = True

Else

Resolution = False

End If

'game.Show

End Sub

Public Sub ChangeRes(X As Long, Y As Long)

Dim DevM As DEVMODE

Dim lResult As Long

Dim iAns As Integer

lResult = EnumDisplaySettings(0, 0, DevM)

With DevM

.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT

.dmPelsWidth = X

.dmPelsHeight = Y

End With

lResult = ChangeDisplaySettings(DevM, CDS_FULLSCREEN)

Select Case lResult

Case DISP_CHANGE_RESTART

Case DISP_CHANGE_SUCCESSFUL

Call ChangeDisplaySettings(DevM, CDS_UPDATEREGISTRY)

Call SendMessage(HWND_BROADCAST, WM_DISPLAYCHANGE, SPI_SETNONCLIENTMETRICS, ByVal 0&)

Case Else

End Select

End Sub

تم تعديل بواسطه ahmed_83
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليك اخي العزيز

الحمد لله اني لا استخدم لغة بيسك اذا كان تغيير ابعاد الشاشه بطول وتفاصيل هذا الكود سوف اعتزل الحاسب نهائيا

وهذا اثبات على ان فيجوال فوكس برو هو البرنامج الاقوى والساحر

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

المرفق يقوم بتغيير ابعاد الشاشه الى 1024,768

انتظر ردك

واتمنى تواجد الاعضاء في القسم

يعني بدل ما ندخل كـــ زوار ندخل بحسابنا

Bg_017.gif

sett_screen.zip

تم تعديل بواسطه lion iraq
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

شكرا على هذا المثال ولو انقلبت الشاشة قلب رأسا على عقب

تعبت يالله رجعتهة مثل ما كانت :angry:

ههههههههههه

يسلموووووووو

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شو هو اللي انقلب

بس الكود شغال 100 100

وانا استخدم الطريقه من وقت يعني ومافي مشاكل

Bg_008.gif

032.gif

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

من قال ان الكود غيرشغال

الكود شغال وشغال جدا

بس الكود مو بس غير الريزليوشن

قلب الصورة الفوق تحت والتحت فوق

يعني صار الشريط للاعلى وصورة الدسكتوب انقلبت والايقونات

يعني الكود شغال يا اخ اسد

:pwease:

تم تعديل بواسطه moonlight10
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
046.gif
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليك اخي العزيز

الحمد لله اني لا استخدم لغة بيسك اذا كان تغيير ابعاد الشاشه بطول وتفاصيل هذا الكود سوف اعتزل الحاسب نهائيا

وهذا اثبات على ان فيجوال فوكس برو هو البرنامج الاقوى والساحر

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

المرفق يقوم بتغيير ابعاد الشاشه الى 1024,768

انتظر ردك

واتمنى تواجد الاعضاء في القسم

يعني بدل ما ندخل كـــ زوار ندخل بحسابنا

Bg_017.gif

************************

اشكرك اخي العزيز اسد العراق على المجهود والمعلومات القيمة واعتذر في التأخير في الرد

واتمنى ان تتحملني شوي اكثر لاني عندي بعض الملاحظات على الموضوع وهيه

1 - اخذ ابعاد الشاشة الحالية عند تشغيل النظام

2 - مقارنةابعاد الشاشة الحالية مع الابعاد التي انا اريدها (اي ابعاد انا اختارها لاتكون ثابتة)

3 - اذا كانت ابعاد الشاشة تشابهة الابعاد التي انا حدتها فلا نفعل شي

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

4 - عند الخروج نعيد ابعاد الشاشة الاصلية كما كانت قبل الدخول.

وارجو ان لاكون قد اثقلت عليك في الاسئلة

علماً اني قد اشتركت حديثا في المنتدى لاني لقيت المنتدى يحتوي على معلومات قيمة

واشخاص لايبخلون في المعلومة وتبادل الخبرات من خلال مشاهدتي لصفحات المنتدى

امثال اسد العراق وشادو .

واتمنى ان تكون مشاركاتي القادمة اكثر فعالية وفائدة للمنتدى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي العزيز

المثال المرفق يقوم بالاتي

تسجيل الابعاد الحاليه للشاشه قبل تشغيل المشروع او البرنامج او النموذج

post-210280-083182300 1317464324_thumb.j

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

post-210280-010719000 1317464330_thumb.j

بعد الخروج يقوم بارجاع الابعاد الاصليه قبل الغيير

post-210280-061435400 1317464336_thumb.j

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

ثبت نفس القيمه كما موضح

post-210280-085068100 1317464343_thumb.j

اتمنى وصول المعلومه

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

form1.zip

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وصلت الفكرة

:clapping:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

وصلت الفكرة

:clapping:

حمد بس تصفيق للاسد

المهم شكرا لك ياسد القسم الفوكس برو

اي الابداع واي الفكرة دي

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

وافتهمت منك تسلم ولك مني اجمل التهاني لك مش +1 لك مني +1000 بس القوانين تعرف

مشكووووووووووووووووووووور لك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تسلم يااسيا واتمنى وصلت الفكرة

والى الاخ احمد 83 اعذر اسيا

لانه واعتقد انه بيحبني جدا

وانا احبكم كلكم

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي العزيز اسد العراق

ان طريقة تبديل ابعاد الشاشة في المثال السابقة شغال لكن ليست طريقة عامة

اي على سبيل المثال

لو ارد تغير ابعاد الشاشة الى 960*1280 فوجدت في

بعض الحاسبات يجب ان تكون قيمة(L) تساوي 67

وفي بعض الحاسبات يجب ان تكون قيمة(L) تساوي 121

الى....

فهل توجد طريقة عامة؟

مع التقدير

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي العزيز اسد العراق

ان طريقة تبديل ابعاد الشاشة في المثال السابقة شغال لكن ليست طريقة عامة

اي على سبيل المثال

لو ارد تغير ابعاد الشاشة الى 960*1280 فوجدت في

بعض الحاسبات يجب ان تكون قيمة(L) تساوي 67

وفي بعض الحاسبات يجب ان تكون قيمة(L) تساوي 121

الى....

فهل توجد طريقة عامة؟

مع التقدير

اخي العزيز الحمد لله على رجوعك للمنتدى ويااخي طلبك بسيط ان شاء الله

والمثال السابق هو للتوضيح فقط لوصول الفكرة لديك

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

اما اذا كنت تريد تغيير القيم فغير الاختيار الثالث لانه متغيير بين الاجهزة اما الاول والثاني فهم ثابته

كما في الصورة

post-210280-010165300 1318354624_thumb.j

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

set_screen.zip

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مبدع جدا

والنقاط والتقييم لا يعير عنك ابدا

مشكوووووووووووووور

+1

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

تحياتي لك اسيا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

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

اعتبر أن برنامجك سيعمل دوما على شاشة بأبعاد 600*800

وحتى لا تتجاوز هذه الابعاد أثناء التصميم ستجد في خيارات النماذج بالفوكس برو Menu>>Tools>>Options>>FORMS

ما يسمى Maximum Design Area ( الحد الأعلى لأبعاد النموذج )

اختر منها 600*800 واحفظ الخيارات

post-113506-079142700 1318377070_thumb.p

يوجد خاصية مهمة لجميع العناصر بالفوكس برو تدعى Anchor

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

ستجدها مفيدة جدا بشكل عام بغض النظر عن مسألة الأبعاد

جرب المرفق

resizeit.rar

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

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اشكر الاخوان جزيل الشكر على هذا الرد الرائع و الشافي

:thumb_up:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اشكر الاخوان جزيل الشكر على هذا الرد الرائع و الشافي

:thumb_up:

اخواني الاعزاء

السلام عليكم

الاخ المبدع اسد العراق ايعاز screenset موجود في اي اصدار؟؟ وكيف يعمل تلقائيا بدون الحدث click لاني جربته في الاصدار السابع ولم يتعرف على الايعاز مع الشكر الجزيل

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حسنا اصدقائى

وكيف اجعل الكثافة 600*800 عند بداية البرنامج prg

ثم عوتها الى ما كانت عليه عند الخروج

علما بان البرنامج قديم شويه وليس فيه فورم فقط prg files

شكرا لكم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخي العزيز 

نقل الحدث الى ملف برنامج واستدعاء اسم البرنامج متى تريد

مثلا اسم الملف هو lion.prg

عند الاستدعاء

()lion

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عفوا اسد العراق

لم افهم ما المقصود بكلامك الاخير ولا الامر lion()

انا اقصد ما صيغة الاوامر التى اضعها بحيث تحول كثافة الشاشة الى 600*800

ثم عند خروج البرنامج ما صيغة الاوامر التى تعود بكثافة الشاشة الى ما كانت عليه

وذلك فى برنامج prg وليس فورمه

لقد رايت مثال رائع لك هنا فى المنتدى  كان عبارة عن فورمة لتحويل كثافة الشاشة ولكن الاوامر بداخل الفورمه لا تصلح الا داخلها على ما اعتقد .

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

اقول هذا الكلام لنعرف قيمة منتدانا الغالى وفائدته للاعضاء الكرام

http://www.news2news.com/vfp/?example=374

الموقع السابق يحقق الغرض ولكنه غير مجانى

الموقع التالى يكتب اكواد انا مش فاهمها للاسف

http://www.tek-tips.com/viewthread.cfm?qid=1394826

سلامى للجميع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم 

اخوتي الكرام في حال حصل استفسار ارجو عدم انشاء موضوع جديد وانما الاكمال مع الموضوع الاصلي 

المهم هنالك العديد من الطرق والايعازات ولكن هنالك دالة ثابتة وهي استخدام النظام عن طريق الفيجوال فوكس برو 

المرفقات نموذج يجب ان يكون رئيسي 

يثبت المبرمج ابعاد الشاشة المراد تشغيل بها في الحدث LOAD 

وعند الخروج من النموذج يعود النظام للابعاد الاصلية اذا كان هنالك تغيير في الحدث UNLOAD ويجب عدم تغيير الايعاز

 

 

RES_DISP.zip

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • -1

اخي العزيز

ابحث عن الدالة SYSMETRIC

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

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

وكما أتذكر في نفس الموضوع هذا ما تريد

وان شاء الله سوف أقوم بإرفاق المثال لك وللجميع

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .