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

مشكلة عند تصغير الفورم!

مغلق
بدأه essam7 في 29 يوليو 2006 · 9 رد · 756 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هالمشكلة صادفتني ولم اعرف حلها (صادفتني لعدة مشاريع)

هي التالي:

افتح مشروع فارغ بالدلفي ثم ضع عليه بانل واجعل الاللاينمنت لليمين وكذلك اجعل الانكور ترو لليسار (سيصبح الانكور ترو للجهات الاربع) واجعلها تاخذ ثلثسي الفورم اليميني

الان شغل التطبيق (او حتى بدون تشغيل) كبر الفورم فتعمل بشكل ممتاز (تاخذ ثلثي الفورم اليميني)

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

الان كبر الفورم بالماوس من اح اطرافه بكسل واحد لا اكثر ستجدها تعود لثلثي الفورم!!!!!!!

ما الحل؟؟؟؟؟؟

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

#2
اقتباس
وكذلك اجعل الانكور ترو لليسار (سيصبح الانكور ترو للجهات الاربع)

ممكن تكتب المصطلحات الانكليزية بالانكليزي ... لأني ما فهمتها

و بقيت 5 دقايق حتى فكيت لغز (alignment) ...

بتصور أني فهمت المشكلة ... بس يا ريت توضح هالسطر العجيب

كما قلت لك لم أفهم السؤال بشكل كامل و لكن إن كان ما فهمته صحيحا فبإمكانك استعمال الحدث OnResize الخاص بالـ Form

procedure TForm1.FormResize(Sender: TObject);
begin
	Panel1.Width := (Form1.ClientWidth) * 2 div 3;
end;

و بذلك مهما غيرت قياسات الـ Form ستبقى الـ Panel تشغل ثلثي حجم الـ From

و طبعا تكون قد ضبطت align للـ Panel كما تريد (right أو bottom) مثلا

إن لم يكن هذا قصدك فأرجو التوضيح

تم تعديل هذه المشاركة بواسطة aubada في 29 يوليو 2006 في 22:31

MAAAAAAAAAAAAAAAAAAAAAAAC

#3

مرحبا اخي

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

على كل انا اخطات بال alignment

وكنت اقصد align

على كل اجابتك بمحلها اذا كنت اريد ال panel تاخذ تلتي الفورم !!!وشكرا لك

بس المشكلة انا وضعت الخاصة anchors لل panel ترو للجهات الاربع !!! والخاصة alignment right

اي انا اريد مثلا على يسار البانل دائما 100 بكسل (لان الاستفادة من الخاصة anchors هو وضع هوامش ثابتة للعناصر وليست نسبية!!)

فانا وقبل وضع السؤال من اصله جربت ان اضع بحدث onresize لسطر التالي:

Panel1.Left:= 100

لكن لم استفد شيئا!!!

هل من حل

(ممكن انا اخطات بقولي ثلثي الفورم لكن كنت لاقرب شكل الفورم والبانل عليه)

اعذروني وانتظر الاجابة

#4

شو شباب ؟؟

ما حدا ممكن يفيدني

فالمشكلة ما زالت قائمة !!

هل انا مخطئ ان الخاصية anchors للعنصر هي لترك هوامش ثابتة بالبكسل وليس نسبية؟؟

#5

أول شي هذا النص من الـ Delphi Help

اقتباس
Use Anchors to ensure that a control maintains its current position relative to an edge of its parent, even if the parent is resized. When its parent is resized, the control holds its position relative to the edges to which it is anchored.

If a control is anchored to opposite edges of its parent, the control stretches when its parent is resized. For example, if a control has its Anchors property set to [akLeft, akRight], the control stretches when the width of its parent changes.

Anchors is enforced only when the parent is resized. Thus, for example, if a control is anchored to opposite edges of a form at design time and the form is created in a maximized state, the control is not stretched because the form is not resized after the control is created.

و الشغلة نسبية حسب ما أعتقد

أنا جربتها و كبرت الـ From فكبرت الـ Panel التي وضعتها على الـ From و عندما صغرت الـ Form عادت الـ Pannel إلى ما كانت عليه

أعتقد أنه لا مشاكل

MAAAAAAAAAAAAAAAAAAAAAAAC

#6

شكرا جزيلا اخي الكريم

انا تمام فهمان الهلب واعرف وظيفتها وشكرا لك على تعبك

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

الان فتحت الدلفي وجربت!!

فتحت مشروع جديد ووضعت panel

ثم خيرت الخاصة align ال alBottom

فنزلت البانل لتحت

ثم غيرت الخاصة anchors aktop=true

بالتالي ستجد الاتجهات الاربع true

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

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

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

للعلم انا جربت align لل panel بجميع اشكالها والمشكلة لا تظهر الا اذا كانت الخاصة align لل panel atbottom

????

الرجاء المساعدة

اغلب برامجي اضع مثل listbox مثلا بالاسفل وفوق ازرار واريد ان تكبر البانل حتى لا يظهر الفراغ

شكرا مقدما

#7

من الأول وضح المقصود

أنا جربتها و فعلا بتعطي الخطأ اللي كنت عم تحكي عنه

المشكلة أني جربت كل الطرق الممكنة و لم أجد شيئا

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

أصبحنا اثنين الآن نبحث عن ثالث خبير ليجيب عن السؤال ..... الغير سخيف بالمرة

MAAAAAAAAAAAAAAAAAAAAAAAC

#8

لا يجب استخدام الخاصتين Align و Anchors معا, فإذا تم استخدام Align فمن غير المحبذ استخدام Anchors

أظن أن هذه العبارة غير مقنعة تماما ولكن إذا نظرنا للأمر من الناحية التالية

إن خاصية Align هي مجرد قيم محددة للخاصية Anchors وقيم مثبتة لخاصتي Left و Top

المهم هو أن الحل للمشكلة التي صادفتك بسيط فإذا أردت أن تعمل align=alBottom و anchors.akTop=True كما ذكرت فما عليك إلا أن تقوم بالخطوات التالية

أولا Align=alBottom

ثانيا Align=alNone

ثالثا Anchors.akRight=True

رابعا Anchors.akBottom=True

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

#9

شكراااااااااااااااااااااااااااا

جزيلا اخي الكريم

فعلا الالين والانكور لا يتوافقان

بس الغريب فقط في حالة الالاين للاسفل

اذن انت استعملت العبارة الاولى لجعل العرض للبانل ساوي عرض الفورم الكلينت

اي حددت الهوامش الاربعة ثم حددت قيم الانكور

شكرا لك

#10

تماما

وأهلا سهلا فيك

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

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