delphi4arab منتديات دلفي للعرب
دائما برنامج دلفي و دقة الشاشة - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : دائما برنامج دلفي و دقة الشاشة (/showthread.php?tid=1423)



دائما برنامج دلفي و دقة الشاشة - أبو معاذ - 21-12-2009

السلام عليكم ورحمة الله وبركاته،
أعلم أن السؤال قد طرح من قبل ، لكن والله لحد الساعة لم أجد إجابة شافية كافية عنه.
أبدأ سؤالي بسؤال :tong: : ماهي دقة الشاشة المفضلة عندكم في البرمجة بدلفي ؟
ثم كيف تفعلون عندما تتغير دقة الشاشة لدقة مغيرة للدقة التي تعملون بها؟
والله صدقوني أن الأمر ليس هين ، و قد استغله بعض المطورين لإنشاء مكونات لهذا الغرض .
نواصل بعد ما نرى مشاركاتكم بإذن الله تعالى.
دمتم في رعاية الله و حفظه.
:monster1:


دائما برنامج دلفي و دقة الشاشة - I_Tiger - 22-12-2009


السلام عليكم ايها الاخوة
بالفعل دقة الشاشة وجع راس للمبرمجين الهواة امثالي :cryss:
لكن بالطبع هناك طرق للتغلب على هذه المشكلة :laugh:
فلا يوجد دقة مفظلة عند المبرمجين و ان وجدة فالمستخدمين النهائيين غير ملزمين بها
هناك الشائع و الاقل شيوعا حسب خبرتي الشخصية 1024/768 هي الاكثر شيوعا
لكن والدي الكريم مثلا لا يستخدم "الميكرو" الا على 800/600 فعليك ان تحسب حساب لهذه الفئة من المستخدمين
من الطريف ان بعض المبرمجين يقوم بتغيير الدقة من البرنامج ، لو كنت انا المستخدم لـ... فهذا تعدي على الحرية الشخصية...:oops:
ولا تنسى مقاييس الشاشات 3/4 و 16/9 و 16/10 ...
ربما مطوروا المواقع يعانون من هذه المشكلة اكثر منا لكن وكدلفاويين لدينا ادواتنا الخاصة
منها خصائص مثل Align و AutoSize و poDesigned و WindowState ... وبامكانك استخدام مزيج منهم
اذكر مرة انني واجهت هذه امشكلة فقمت بتغيير نوع الفورم الى ديلوق :tong:



دائما برنامج دلفي و دقة الشاشة - أبو معاذ - 22-12-2009

جزاك الله خيرا أخي الفاضل على الإجابة ،
وفعلا والله إن دقة الشاشة هي وجع الرأس للمبرمج ، و كما قلت فكرت في فرض دقة معينة على الزبون لكن لم تعجبني الفكرة .
و في سياق الحديث فقط هذه المشكلة أيضا معروضة في vb و access .


دائما برنامج دلفي و دقة الشاشة - AL-MOB4RM3G - 22-12-2009

بعد البعث,, وجدت هذا في المنتدى,,

http://delphi4arab.net/forum/showthread.php?tid=658
http://delphi4arab.net/forum/showthread.php?tid=231
http://delphi4arab.net/forum/showthread.php?tid=1525
http://delphi4arab.net/forum/showthread.php?tid=302
http://delphi4arab.net/forum/showthread.php?tid=2132

هذه الموآضيع قد تفيد اخي الكريم,

والسلام عليكم


دائما برنامج دلفي و دقة الشاشة - issamdnn - 22-12-2009

عزيزي الأخ العزيز unprogramme....
هنالك عدة طرق للتعامل تغيير دقة الشاشة لدى الزبون ولكن من أهم هذه الطرق التي تعطي نتائج واضحة هي أعادة التقييس أو بما يسمى resizing بواسطة التابع
ScaleBy();

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


دائما برنامج دلفي و دقة الشاشة - أبو معاذ - 22-12-2009

السلام عليكم ورحمة الله وبركاته ،
جزاكم الله خيرا جميعا على المشاركة و الردود الطيبة .
الأخ المشرف الغالي AL-MOB4RM3G لقد اطلعت على هذه المشاراكات من قبل لكن لم تثلج صدري.
أخي الفاضل issamdnn أنا على أحر من الجمر في انتظار ردك القادم.:disgust:

دمتم جميعا في حفظ الله و رعايته.
:monster2:


دائما برنامج دلفي و دقة الشاشة - issamdnn - 23-12-2009

تقييس النموذج يدوياً:
يمكن إستخدام المنهج ScaleBy لتقييس نموذجاً ما مع مكوناته. ويأخذ هذا المنهج وسيطين : الضارب والقاسم(بسط و مقام) يعبران عن كسر .فالتعليمة التالية مثلاً تقلص قياس النموذج الحالي إلى ثلاثة أرباع قياسه الأصلي:
PHP كود :
ScaleBy(3,4); 
ويمكن الحصول على نفس التأثير باستخدام التعليمة التالية:
PHP كود :
ScaleBy(75,100); 

عندما تجري تقييساً للنموذج تتم المحافظة على جميع التناسبات . لكن إذا وصلت إلى قيم أقل أو أعلى من حدود معينة يمكن أن تغير سلاسل محارف النص تناسباتها قليلاً. تكمن المشكلة في Windows حيث يتم تعيين موضع وقياس المكونات ببكسلات كاملة , بينما تنتج عملية التقييس في الغلب أعداداً كسرية, وهكذا يتم تدوير الجزء الكسري لموقع المكون أو قياسه.

وكمثال على ذلك قم بما يلي :
1- ضع زرين على النموذج الخاص بك.
2-أضف عنصر TLable وعنصر TEdit وعنصر تحكم UpDown مربوط إلى مربع التحرير (بواسطة الخاصية Associate ) و بذلك تستطيع الكتابة في مربع التحرير أو النقر على السهمين الصغيرين لزيادة أو إنقاص القيمة (بمقدار الخاصية Increment) ويمكن إستخدام الخاصية Text لمربع التحرير أو الخاصية Position لعنصر التحكم UpDown للحصول على قيمة الإدخال . وعند النقر على الزر تسخدم القيمة الحالية لتحديد النسبة المؤية لتقييس النموذج:

PHP كود :
procedure TForm1.ScaleButtonClick(Sender: TObject);
var
i:integer;
begin

i
:=UpDown1.Position;
ScaleBy(i,100);
UpDown1.Height:=Edit1.Height;

end; 
يمكنك إضافة زر أخر لإعادة النموذج إلى شكله الأصلي :
ملاحظة
إذا أردت تقييس النصوص في النموذج بشكل صحيح , بما فيها عناوين المكونات, والبنود في مربعات القوائم , وغيرها يجب أن تستخدم خطوط TrueType بشكل إستثنائي , فخطوط النظام (Ms Sans Serif)
لا يتم تقييسها بشكل جيد , إن مسألة الخطوط هامة , وذلك لأن قياس الكثير من المكونات يعتمد على ارتفاع نص عنوانها , فإذا لم يتم تقييس العنوان بشكل جيد فربما لن يعمل المكون بشكل صحيح , ولهذا السبب يفضل إستخدام الخط Arial في المثال السابق.

التقييس الآلي:

يمكن أن تنجز دلفي عملية التقييس آلياً , بدلاً من تشغيل المنهج ScaleBy فعند تشغيل دلفي على سبيل المثال فأنها تسأل النظام عن إعدادات الإضهار , وتخزن القيمة الموجودة في الخاصية PixelPerInch للغرض Screen وهو غرض عام في Vcl يتاح في أي تطبيق .

طبعاً ليس للخاصية PixelPerInch اي علاقة بدقة الشاشة فإذا قمت بتغيير دقة الشاشة في ويندوز ستجده يعطي نفس القيمة للخاصية السابقة. في جميع الحالات إلا إذا غيرت خط النظام , وتشير الخاصية السابقة في الواقع إلى دقة الشاشة, بالبكسل الذي تم تصميم خط النظام من أجله , فعندما يغيير المستخدم درجة خط النظام لجعل قوائم الخيارات و نصوص أخرى أسهل للقراءة , ويتوقع المستخدم درجة خط النظام لجعل قوائم الخيارات ونصوص أخرى أسهل للقراءة , ويتوقع المستخدم أن تحترم جميع التطبيقات هذه الإعدادات , فالتطبيق الذي لا يعكس إعدادات سطح المكتب سيبدو غريباً عن محيطه .

القيم الأكثر شيوعا للخاصية PixelPerInch هي 96(خطوط صغيرة) و 120 (خطوط كبيرة ) تنسخ دلفي قيمة هذه الخاصية ثم تستخدمها إذا كانت الخاصية Scaled مضبوطة على true . لإعادة تقييس النموذج عند بدأ تنقيج البرنامج.
تؤثر التقنيتن السابقتين الآلية واليدوية على المكونات بتغيير قياس الخط. حيث يعتمد قياس كل عنصر تحكم على الخط الذي يستخدمه ومع التقييس الآلي تقارن قيمة الخاصية PixelPerInch للنموذج في زمن التصميم مع القيمة الحالية للنظام (تدل عليها قيمة الخاصية المقابلة للغرض Screen) وتستخدم النتيجة لتغيير خط المكونات على النموذج ولتحسين وثوقية هذه الشيفرة , يقارن الإرتفاع النهائي للنص مع إرتفاع النص أثناء التصميم , ويتم ضبط قياسه إذا كان الإرتفاعان مختلفان.

على الرغم من وجود مشاكل للتقييس الآلي في بعض الحالات الخاصة , يمكنك الحصول على نتائج جيدة إذا أتبعت القواعد التالية:

[COLOR="Red"]1- ضبط الخاصية Scaled للنموذج على true .
2- استخدام خطوط TrueType >
3- استخدام خطوط صغيرة في windows 96dpi .
4- ضبط الخاصية AutoScroll على False . إذا كنت تريد تقييس النموذج وليس عناصر التحكم الموجودة فيه فقط .
5- ضبط موقع النموذج بجوار الزاوية العلوية اليسرى للشاشة أو في وسطها(بواسطة القيمة PoScreenCenter) وذلك لتجنب الحصول على نموذج خارج الشاشة .[/COLOR]


والله الموفق للجيميع.


دائما برنامج دلفي و دقة الشاشة - achi - 23-12-2009

انا لم أفهم الموضوع جيدا و لكن حسب السؤال فإنك تبحث ان يكون البرنامج أو واجهته تتلام مع أي شاشة مهم كانت دقتها (resolution de l'ecran) ( resolution of the screen) هناك خاصية في الدلفي إسمها screen
تسطيع في الحدث oncreate
كود :
form1.width:=screen.Width form1.height:=screen.height form1.position:=podesktopcenter
و الســــلام عليكم


دائما برنامج دلفي و دقة الشاشة - issamdnn - 03-01-2010

أخي الموضوع مختلف عن ما فهمته. على جميع الأحوال شكراً لك على المشاركة.

يمكنك أيضاً أخي الإطلاع على الموضوع المدرج في الموقع التالي والموضوع مؤلف من صفحتين:

http://delphi.about.com/od/standards/a/aa030700a.htm

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