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

محاذاة Button بداخل Textbox

بدأه C++er في 27 أغسطس 2009 · 3 رد · 803 مشاهدة · في قسم الدروس والمواضيع المتميزة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

قبل ان اتعلم API عندما كنت اريد وضع Button لإظهار CommonDialog معين و وضع اسم الملف الذى تم اختياره داخل TextBox كنت اضع الزر بجوار مربع النص و اضع عنوان للزر عباره عن 3 نقط حتى يعلم المستخدم ان هذا الزر مرتبط بعملية وضع اسم الملف داخل مربع النص الصوره التاليه توضح ما اريد قوله

post-135620-1251359136_thumb.jpg

اذا قمت بإضافة ComboBox و قمت بالكتابه فيه ستلاحظ شيئين هما كما فى الصوره التاليه

post-135620-1251359728_thumb.jpg

تلاحظ فى الصوره ان حجم الـ ComboBox أصغر من المسار و هذا أدى إلى ان المسار تم تحجيمه فى المساحه ما بين الحافه اليسرى للـ ComboBox (رقم 1 فى الصوره) و ما قبل الزر الخاص بالـ ComboBox (رقم 2 فى الصوره).

اذا حاولت ان تقوم بوضع مربع نص على الفورم و قمت بإضافة زر و بعدها قمت بكتابة الكود التالى فى الـ Form_Load

		TextBox1.Controls.Add(Button1)
		Button1.Size = New Size(26, 19)
		Button1.BackColor = Color.FromKnownColor(KnownColor.ButtonFace)
		Button1.Dock = DockStyle.Right

على اعتبار ان الزر اسمه Button1 و مربع النص TextBox1 بعد تشغيل البرنامج ستجد ان الزر اصبح داخل مربع النص و موجود بأقصى اليمين، المشكله ستظهر هنا عندما تبدأ فى الكتابه فى مربع النص فعندما يصل مؤشر الكتابه لحافة الزر و قمت بالكتابه ستجد انه يتم الكتابه فما خلف الزر.

طبعا هذا مخالف لما يحدث ما الـ ComboBox و بذلك فوضع الـ TextBox هذا مرفوض نهائيا و هذا يعود بنا للهدف من هذا الدرس حيث انى قد قمت بعمل TextBox و اسميته BrowseTextBox.

هذه الاداه وارثه لـ TextBox و بالإضافه لذلك تقوم بوضع زر امر بداخلها و محاذاته لأقصى اليمين و على خلاف ما كان يحدث مع TextBox1 فهذه الاداه تعالج موضوع المحاذاه و بالتالى مؤشر الكتابه لن يقوم ابدا بالدخول تحت الزر و لكن سيعتبر مربع النص ان الوصول للزر الموجود داخله هو نهاية المطاف و سيبدأ فى تحريك النص بأكمله لليسار و التكمله بشكل طبيعى.

يوجد بالأداه الحدث ButtonClick و الذى يتم تفعيله عند الضغط على الزر الموجود بمربع النص، اما اذا كنت التعامل مع خصائص اخرى للزر او استخدام احداث اخرى فلابد منك من التعامل مع الخاصيه TextButton والتى تعود لك بالزر نفسه.

هذه صوره للمثال المرفق

post-135620-1251360589_thumb.jpg

المثال فى المرفقات

BrowseTextBox.rar

و الله ولى التوفيق

تم تعديل هذه المشاركة بواسطة Muhammad alaa في 28 أغسطس 2009 في 01:22

مدونتي: C++ Tips and Tricks

#2

يعطيك العافية ..

مشكور وما قصرت اخوي محمد .. :) ..

#3

مشكور و ما قصرت , الكود ما افهمته تمام و لكن يمكنني ان اضيفه استعمله , بيني و بينك اريح من ------

post-135620-1251359136.jpg

مشكور اخي مرة اخرى , ولا اقدر ان اقول لك مزيد من الافكار المتميزة لان افكارك المتميزة كثيرة ;)

<EMBED src=http://www.abdelghafar.com/images/banners/bm2.swf width=486 height=60 type=application/x-shockwave-flash EMBED < menu="false" loop="true" quality="high">

#4

ملاحظه على الأداه و هى انه فى وضع الـ Multiline لابد من جعل الخاصيه Wordwrap بـ False و كذلك اظهار الـ Horizontal Scrollbar لإنه غير ذلك لن يحدث التأثير المرجو منها

مدونتي: C++ Tips and Tricks

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