تقييس النموذج يدوياً:
يمكن إستخدام المنهج ScaleBy لتقييس نموذجاً ما مع مكوناته. ويأخذ هذا المنهج وسيطين : الضارب والقاسم(بسط و مقام) يعبران عن كسر .فالتعليمة التالية مثلاً تقلص قياس النموذج الحالي إلى ثلاثة أرباع قياسه الأصلي:
ويمكن الحصول على نفس التأثير باستخدام التعليمة التالية:
عندما تجري تقييساً للنموذج تتم المحافظة على جميع التناسبات . لكن إذا وصلت إلى قيم أقل أو أعلى من حدود معينة يمكن أن تغير سلاسل محارف النص تناسباتها قليلاً. تكمن المشكلة في 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]
والله الموفق للجيميع.