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

كيفية التحكم في حجم Form

مغلق
بدأه Fikou-sama في 20 ديسمبر 2007 · 12 رد · 1,091 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و عيدكم مبارك ...

لقد إقتربت من إنهاء برنامجي .. و بقيت بعض اللمسات الأخيرة .. فأردت ان اسالكم عن التالي :

استعملت خاصية Anchor للسماح للمستخدم بالتحكم في حجم الفورم دون ان تفقد الفورم شكلها وترتيب controls فيها .. لكني اريد ان أمنع المستخدم من تصغير الفورم إلى حجم صغير جدا -لأن عندئد controls ستتداخل فيما بينها - .. فأخدت Width و Hight للفورم في الحجم الأصلي .. و كتبت كود بسيط في حدث Resize للفورم :

Private sub form_resize(...)
 If Me.Width < _Width OrElse Me.Height < _Height Then
			Me.Size = New Size(_Width, _Height)
  End If
End sub

لكن لم أصل للمطلوب ... فالمرجو ممن لديه كود أو فكرة ان يفيدني في اقريب العاجل ..

تم تعديل هذه المشاركة بواسطة Fikou-sama في 20 ديسمبر 2007 في 03:29

مقالاتي في VB.NET وبرامجي على موقعي الجديد :

#3

الأفضل أن تضع شرط للطول لوحده وشرط للعرض لوحده

جرب وستعرف الفرق

		Dim h As Integer = 300
		Dim w As Integer = 300
		If Me.Width < w Then
			Me.Width = w
		End If
		If Me.Height < h Then
			Me.Height = h
		End If

تم تعديل هذه المشاركة بواسطة anossof في 20 ديسمبر 2007 في 13:47

MV10CGB0.GIF
#4

أخي hsan_ahmed الكود الدي أرفقته هو نفس الكود الدي أرفقته أنا .. فبدل استعمال width و height مباشرة استعملتها لتحديد size للفورم ...

أخي anossof هل يمكنك إعادة كتابة الكود لأني لم أفهم شيئا من الكتابة السابقة

مقالاتي في VB.NET وبرامجي على موقعي الجديد :

#5

يجب أولا تعريف أصغر طول وأصغر عرض

		Dim _Width = 300
		Dim _height = 300

ثم وضع شرط للطول ثم شرط للعرض

If Me.Width < _Width then Me.Width = _Width
if Me.Height < _Height Then Me.Height = _height<BR>

أي نضع في الحدث resize الآتي

		Dim _Width = 300
		Dim _height = 300
		If Me.Width < _Width then Me.Width = _Width
		If Me.Height < _Height Then Me.Height = _height

MV10CGB0.GIF
#6

أخي ihsan_ahmed الكود الدي أرفقته هو نفس الكود الدي أرفقته انا .. و هدا يعطيني نتيجة و لكن نتيجة غير عملية .. لأن كلما غيرت حجم الفورم .. الكائنات تعيد رسم نفسها و هدا ما يشوه جمالية الفورم ...

أخي anossof .. ليس هدا ما قصدته بأني لم أفهم شيئا ... لقد قلت لك دلك لأن الكود الدي أرفقته في الأول لم يكن مفهوما ... بالنسبة للكود نفس الملاحظة السابقة ..

و شكرا لكما على المساعدة ...

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

تم تعديل هذه المشاركة بواسطة Fikou-sama في 20 ديسمبر 2007 في 14:27

مقالاتي في VB.NET وبرامجي على موقعي الجديد :

#8

خد الكود ده وادعيلي:

 Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
		Dim _Width = 300
		Dim _height = 300
		If Me.Width < _Width Then Me.AutoSize = True
		If Me.Height < _height Then Me.AutoSize = True
		If Me.Width > _Width Then Me.AutoSize = False
		If Me.Height > _height Then Me.AutoSize = False
 End Sub

<<<الكائنات لا تعيد رسم نفسهـــــا>>>

MV10CGB0.GIF
#9

شكرا جزيلا anossof ... لكن عند تكبير حجم الفورم تدرييجيا فإن controls تعيد رسم نفسها .. و هنا اتساءل إدا كانت - واظن انه يوجد - هناك دالة تمنع هدا المشكل لأن الكثير من البرامج مهما كثرت فيها controls لا تتاثر عند تغيير حجم الفورم ...

المرجو من الإخوة التفاعل لأني اظن ان هدا المشكل يواجهه معظم المبرمجين الدين يريدون الحيوية و الجمالية في واجهات برامجهم ..

و شكرا مرة اخي anossof

تم تعديل هذه المشاركة بواسطة Fikou-sama في 20 ديسمبر 2007 في 21:14

مقالاتي في VB.NET وبرامجي على موقعي الجديد :

#10

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

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
		Me.MinimumSize = New Size(500, 500)
	End Sub

ممكن تحددها من غير كود في الخصائص بتاعة الفورم

:calc:

وأي خدمات

MV10CGB0.GIF
#11

جزاك الله خيرا ... لقد أفادتني مشاركتك الثالثة كثيرا .. و لقد عدلت الكود لتسريع تنفيده فأصبح

Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
		If Me.Width < 300 OrElse Me.Height < 250 Then
		Me.AutoSize = True
		ElseIf Me.Width > 300 OrElse Me.Height > 250 Then
	Me.AutoSize = False
		End If
End Sub

و الكود الأخير مفيد أيضا و صغير ..

مقالاتي في VB.NET وبرامجي على موقعي الجديد :

#12

الكود اللي انت كتبتو واللي انا كتبتة في الأول مش شغال 100/100

لأنك عندما تقلل عرض الفورم على الآخر ثم تحاول تقليل طوله لا يمكنك ذلك

أما الكود الي في الفورم لود مضمون 100/100

وأسهل وأسرع في التحميل لأنه يحمل لمرة واحدة أما في الresize يحمل كلما تعمل resize مما يتسبب في تشوه الكائنات

شكراً

جرب وانت تشوف

MV10CGB0.GIF
#13

مشكور ..

مقالاتي في VB.NET وبرامجي على موقعي الجديد :

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

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