كيف أجعل برنامجي يتلاءم مع دقة الشاشة؟
#1
السلا م عليكم و رحمة الله و بركاته.
أسأل الله العظيم رب العرش الكريم أن يبارك في مجهوداتكم ،
و و الله إن الإنسان ليشعر بالخجل أن يأخذ و لا يعطي و لكن سأحاول جهدي إفادة إخواني بما أعلم.

من خلال تجربتي مع البرمجة لاحظت أن كل إنسان يحب دقة شاشة معينة (800ْxْ600 او 1024x768)
فوجذت نفسي مضطر في كل مرة لتغيير في برنامجي ليتلاء م مع دقة الشاشة الخاصة بالزبون.
شؤالي ما هو الكود الذي أضيفه ليصبح برنامجي بتلاءم مع جميع دققة الشاشات .؟
علما أني لا أبحث عن كود تغيير دقة الشاشة .
الرد
#2
اخي الكريم لا حاجة لتغيير البرنامج كل مرة
فقط قم بتغيير Position الى poScreenCenter لكي يضهر في الوسط مهما تغيرت الأبعاد
الرد
#3

يمكن اللعب (ان صح التعبير) على المكونات مثل Panel وخصائصها Align
والسلام عليكم
الرد
#4
السلام عليكم
هذا الكود لتغيير دقة العرض:
PHP كود :
function NewRes(XRes,YRes:DWord):integer;
var
  
DevMode:TDeviceMode;
begin
  EnumDisplaySettings
(nil, 0, DevMode);
  
DevMode.dmFields:=DM_PELSWIDTH or DM_PELSHEIGHT;
  
DevMode.dmPelsWidth:=XRes;
  
DevMode.dmPelsHeight:=YRes;
  
Result:=ChangeDisplaySettings(DevMode, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     
if NewRes(800,600)=DISP_CHANGE_SUCCESSFUL then
  begin
    ShowMessage
('Resolution changed.');
  
end;
end; 
مثال مرفق.


الملفات المرفقة
.7z   Resolution control.7z (الحجم : 1.68 ك ب / التحميلات : 223)
الرد
#5
السلام عليكم و رحمة الله و بركاته
1- جزاكم الله خيرا على جميع الإجابات و المجهودات.
2- أتأسف عن التأخر عن الرد و ذلك لعدم توفر الإنترنت لدي .
3- يبدو أن الإخوة جزاهم الله خيرا لم يفهموا مقصودي ، حيث أنني لم أكن أقصد الكود الخاص بتغيير دقة الشاشة (فهذا شىء معروف و سهل)،
و لكن غرضي هو كيف أجعل برنامجي يتلاءم مع جميع دقق الشاشات .بحيث أني شخصيا أستعمل الدقة 1024x 768 ، فعندما أثبت برنامجي عند زبون يستعمل دقة شاشة مغايرة (مثال : 1280X600 أو 800X600 ... إلخ) فهل :
1- أفرض على الزبون إستعمال دقة الشاشة التي أستعملها شخصيا؟
2- أو أضيف بعض التعديلات على برنامجي و لكن كيف ؟
3- أنجز عدة نسخ من يرنامجي و كل واحدة مع دقة شاشة مناسبة ( و هذا شىء متعب)؟
**** أن الفكرة قد اتضحت.
و أذكر أني وجد في الإنترنت كمبون يقوم بهذه المهمة لكن نسيت اسمه أظنه Resize component .
و الله الموفق.
الرد
#6

كما قلت في ردي السابق
يمكن اللعب (ان صح التعبير) على المكونات مثل Panel وخصائصها Align
واضيف باختصار الامر يعود لك
1- تختار ابعاد معينة لاتتغير (كمثال انظر Kaspersky Anti Virus 2009)
2- تقوم برمجيا بتغيير ابعاد وموضع المكونات وما يتعلق بها (وهذا امر مجهد)

ايضا سؤالك مكرر
http://www.delphi4arab.net/forum/showthread.php?tid=302
والسلام عليكم
الرد
#7
السلام عليكم
شكرا أخي على سرعة الرد.
وقد وجدت كمبون لكنه غير مجاني
الرد
#8
السلام عليكم
أخي أعطيتك مثال يجمع كل ما يتعلق بدقة الشاشة (عرض الأنواع الممكنة، عرض الدقة الحالية، تغيير الى دقة محددة).
فإذا كنت تريد أن تجعل برنامج يتلاءم مع دقة الشاشة لدى الزبون ما عليك إلا أن تجعل البرنامج يتلاءم معها...
فتغير طول وعرض البرنامج بما يناسب دقة الشاشة عند المستعمل بعد تحديد دقة الشاشة الحالية لديه...
وهذا هو الكود الذي يعطيك دقة الشاشة لدى المستعمل:
PHP كود :
Width:=Screen.Width;
Height:=Screen.Height; 
وقبله إجعل النموذج في وسط الشاشة بضبط خاصية Position على poScreenCenter.
والسلام عليكم.
الرد
#9
السلام عليكم...أظن أن الأخ يقصد بكلمة ' يتلاءم ' أن الفورم يحافظ على شكله كما صممه مهما تغيرت دفة الشاشة (ولايريد تغيير دقة الشاشة) وبمعنى أدق أن كل العناصر الموجودة في الفورم تحافظ على وضعيتها. وأظن أن هذا المشكل يحدث خاصة مع العناصر الموجودة على يمين الفورم..فمثلا إذا كنا نعمل بدفة 600X800 ووضعنا زرا في أقصى يمين الفورم ..فإذا غيرنا الدقة إلى 1024X768 فإننا نلاحظ أن الزر قد تزحزح عن مكانه نحو اليسار ...ومع كثرة العناصر يحدث تشوه لجمالية الفورم...
وهذه لا نلاحظها طبعا إلا على البرامج التى تأخذ كامل مقاس الشاشة.

أظن أن حل هذه المشكلة يكمن في :
1- كما قال الأخ دلتا ، استعمال ال panels (بكثرة) و استعمال خاصيتها Align بشكل جيد وفعال (alBottm, alRight, alLeft....).
2- استعمال الخاصية anchors بشكل جيد (akLeft, akTop...) بالنسبة للعناصر الصغيرة (buttons,edits, chekbox ) ....

وهذه بعض الصور التوضيحية للخاصية anchors...

>> بسرعة نصنع فورم جديد بقياس 400x700 مثلا ...ونضع عليه زرا في أقصى اليمين
>> F9
[صورة: image1zk0.jpg]

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

[صورة: image2bm8.jpg]

>> الآن نعدل الخاصية anchors للزر ...
[صورة: image4ow6.jpg]

>> F9 ثم نكبر الفورم...وهذه هي النتيجة...
[صورة: image3xi6.jpg]


هذا كل شيء ....والسلام عليكم..
:: رب يسر ولا تعسر رب سهل وتمم بالخير ::
الرد
#10
تعديل على Resolution control.rar
كود :
procedure TForm1.ListBox1Click(Sender: TObject); var S, V: String; Sindex,Vindex:integer; begin Sindex:=pos(',',ListBox1.Items[ListBox1.ItemIndex]); Vindex:=pos('x',ListBox1.Items[ListBox1.ItemIndex]); S:= copy(ListBox1.Items[ListBox1.ItemIndex], Sindex + 2, 4); V := copy(ListBox1.Items[ListBox1.ItemIndex], Vindex + 2, 4); Edit1.Text := TrimLeft(S); Edit2.Text := TrimLeft(V); end;

تشكر اخي على المثال Smile
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم