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

كيفية تكبير الشاشة MAX وتصغير الشاشة MIN أوتوماتيكياً

مغلق
بدأه الفيلكاوي في 27 أبريل 2007 · 14 رد · 11,834 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

والعكس صحيح خل نفترض إني عملت برنامج على الشاشة 1024 في 768 وأريد أن أضعه على الشاشة 1280 في 768 فتصبح الشاشة صغيره وليس على مقاس الشاشة

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

#2

فى الفجول بيزك فى اداه اسمها msResize بتعمل الموضوع دا

msResize - ActiveX sizing control

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

msresize.zip

#3

في ال form.create للواجهة الرئيسية يمكنك كتابة الكود التالي لكي تصبح الواجهة بحجم سطح المكتب لديك

  Self.Width:= Screen.WorkAreaWidth;
  Self.Height:= Screen.WorkAreaHeight;
  Self.Top:= Screen.WorkAreaTop;
  Self.Left:= Screen.WorkAreaLeft;

و لكن عادة لا يتم هذا, حيث يكون البرنامج عند تشغيله لأول مرة مثلا يظهر على دقة شاشة 800 ب 600

و يقوم المستخدم بتغيير حجم الواجهة حسب ما يريد

و عند اغلاق البرنامج يتم تخزين هذه القيم في مكان ما(registry, ini file, text file....)

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

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

تم تعديل هذه المشاركة بواسطة Wael Dalloul في 28 أبريل 2007 في 18:50

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#4

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

وشكراً لك أخي العزيز Wael Dalloul ولكن أخي العزيز عن طريق الديلفي هذا الكود

#5

حل اخر استعمل

scaleBy(75,100)
معناها صغر الى 75% من حجمه الاصلي

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

واذا لم تستطع ان تضعها بالشكل السليم استعمل المكون التالي TFormResizer

وهو موجود في موقع delphi32

وشكرا

#6

شكراً على ردكم جميعاً بهذه السرعه على موضوعي

بس أود أن أقولكم هل انت فاهمين قصدي

وفيه أيقونات كثيرة جداً وصور وصوت فكنت مسويه على شاشة 1280 في 768 وعندي بعض الكمبيوترات شاشتها 1024 في 768 فتصبح جميع الشاشات والأيقونات كبيرة على الجهاز الثاني لأن بهذه الحالة ما أقدر استخدمه إلا على جهاز بالشاشة 1280 في 768 فما الحل

والعكس صحيح خل نفترض إني عملت برنامج على الشاشة 1024 في 768 وأريد أن أضعه على الشاشة 1280 في 768 فتصبح الشاشة والأيقونات صغيره وليس على مقاس الشاشة

#7

هل يوجد أي رد جديد منكم يا أعزاء هذا المنتدى الجميل

#8

لا يوجد أي رد يا إخوان

#9

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

هذا توضيح لإجابة بعض الإخوة عن وضع ملف لحفظ الخصائص:

زر هذا الرابط من هنا

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

بالتوفيق

عن ‏ ‏أسامة بن زيد قال: ‏قال رسول الله - ‏صلى الله عليه وسلم -: ( من صنع إليه معروف فقال لفاعله جزاك الله خيرا فقد أبلغ في الثناء ) .

رواه الترمذي و قال ‏هذا ‏ ‏حديث حسن جيد غريب.

و صححه العلامة الألباني في صحيح الترغيب

www.sahab.net

#10

كيف يحتفظ البرنامج بآخر شكل له عند تشغيله كل مرّة

خالد الشقروني, 28 نوفمبر 2002

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

لو قمت بتشغيل برنامج المفكرة Notepad و غيّرت في حجم و موضع نافذة البرنامج؛ أو حتى نوع الخط ؛ فإن المرة الثانية التي تعيد فيها تشغيل البرنامج ستلاحظ أنّه احتفظ بنفس التغييرات. الطريقة التي يتّبعها برنامج المفكرة ؛ هي قيامه بتخزين هذه المعلومات حال اغلاقه في سجلّ الويندوز Registry في مدخل: HKEY_CURRENT_USER\Software\Microsoft\Notepad ،ثم قيامه بقراءة هذه المعلومات عند تشغيله مرّة أخرى ليقوم بتوصيف النافذة و صياغة خصائصها حسب المعلومات المسجّلة.

هذا الأسلوب مناسب في حالة أن الخصائص أو المعلومات المراد تسجيلها و الاحتفاظ بها معدودة و يسهل حصرها.

لكن ماذا لو أن النموذج form مزدحم بالمكونات بأنواعها، وتريد أن تحتفظ بكل التغييرات التي تطرأ عليها، ماذا لو أردت أن تحتفظ حتى بالبيانات التي يدخلها المستخدم كالنصوص في مكونات الكتابة أو الصور التي يحملّها المستخدم في احدى مكونات الصور في البرنامج.

الأسلوب المقترح هنا، هو أن نقوم بحفظ كافة خصائص النموذج form حال اغلاقه دفعة واحدة في ملف خارجي . و عند تشغيل البرنامج مرّة أخرى و اظهار النموذج، يقوم البرنامج بتحميل الملف و تخصيص بياناته للنموذج ذات العلاقة عوضا عن البيانات المحددة في وقت التصميم. و سنستخدم في حفظ و قراءة الملف أمرين من أوامر دلفي : WriteComponent لحفظ المكونات في الملف و ReadComponent لقراءة المكونات من نفس الملف.

unit fPreservForm;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

type

TForm1 = class(TForm)

private

اعادة تعريف الاجرائيتين Create و BeforeDestruction التابعتين أصلا لصنف(class) TComponent الذي يعدّ أحد الأصول التي ينحدر منها صنف TForm:

public

constructor Create(AOwner: TComponent); override; // (1)

procedure BeforeDestruction; override; // (2)

end

;

يمكنك الوقوف بالمؤشّر عل سطر التعريف و الضغط على مفاتيح Ctrl+Shift+C لبناء جسم الاجرائتين آليا.

بعدها، نعرّف متغيرا عاما نحتفظ فيه باسم و مسار ملف الحفظ :

var

Form1: TForm1;

PreservePath: string; // (3)

implementation

المتن في الاجرائيتين ، لاحظ أن اسم الملف هو نفس اسم صنف النموذج متبوعا بالامتداد : "sav" ، و يتم حفظه في مجلد Preserve.

{$R *.dfm}

constructor TForm1.Create(AOwner: TComponent); // (4)

begin

PreservePath := ExtractFilePath(Application.ExeName) +

'Preserve';

if not DirectoryExists(PreservePath) then

CreateDir(PreservePath);

PreservePath := PreservePath + '\';

if FileExists(PreservePath + ClassName + '.sav') then

begin

CreateNew(AOwner, 0);

with TFileStream.Create(PreservePath + ClassName + '.sav',

fmOpenRead or fmShareDenyWrite) do

try

ReadComponent(Self);

finally

Free;

end;

end

else

inherited Create(AOwner);

end;

procedure TForm1.BeforeDestruction; // (5)

begin

inherited;

with TFileStream.Create(PreservePath + ClassName + '.sav', fmCreate) do

try

WriteComponent(Self);

finally

Free;

end;

end;

end.

ملاحظة أخيرة:

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

منقول

ولكن أخي العزيز بداية شكراً لك ولكن آنا أقصد إن أنا عندي برنامج واحد وأريد أن أشغله على جميع الشاشات يعني لازم تتغير الشاشة أوتوماتيكي على كل كمبيوتر مهما كانت شاشة وبمعنى آخر إني صممت بشاشة كبيرة لو أشغله على شاشة صغيره فسوف يشتغل بنفس ما يشتغل بالشاشة الكبيرة

أقصد بالشاشة مقاسها 1024 في 768

#11
اقتباس
ولكن أخي العزيز بداية شكراً لك ولكن آنا أقصد إن أنا عندي برنامج واحد وأريد أن أشغله على جميع الشاشات يعني لازم تتغير الشاشة أوتوماتيكي على كل كمبيوتر مهما كانت شاشة وبمعنى آخر إني صممت بشاشة كبيرة لو أشغله على شاشة صغيره فسوف يشتغل بنفس ما يشتغل بالشاشة الكبيرة

أقصد بالشاشة مقاسها 1024 في 768

يا اخي تمت الاجابة على سؤالك لماذا تعيد نفس السؤال؟؟!!

قلت لك ضع في حدث ال create للفورم الشيئ الذي ذكرته سابقا و سوف تأخذ الفورم حجم الشاشة مهما كان مقياس دقتها

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

يعني الامر !!!؟

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#12

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

#13

الله يعطيك ألف عافية يا أخ showman12 بصراحه فهمت موضوعي والله إلى حد الآن أحاول ولكن لم أستطع للأسف رغم مشاركات الكثير من الإخوان المتميزين فأشكرك مره أخرى

ويا إخوان أرجوكم ساعدوني

#14

السلام عليكم

اخواني الكرام

لم يتم وضع حل لهذه المشكلة

في الملف المرفق اذا كانت دقة الشاشة 1024*768 يظهر الزر في اسفل يمين الشاشة

اما اذا كانت دقة الشاشة 800*600 لا يظهر هذا الزر

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

شكرا لكم جميعا

Project1.rar

خيركم من تعلم القرآن وعلمه

#15

أخي الكريم استعمل الحل إلي عرضه الأخ الكريم إلي استخدم فيه خاصية screen.WorkAreaTop

ومثيلاتها

من غير ما تخزن في ملف ولا حاجة

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

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