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

سؤال بخصوص التحكم باادوات التصميم

بدأه hadi2005 في 11 مايو 2012 · 8 رد · 494 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عندي سؤال وهو كالتالي :

كيف اقدر اتحكم بالادوات بعد جلب اسمائهم من الداتابيس ؟؟

مثال لتوضيح الصورة :

انا عندي في مشروعي 12 picturebox (على سبيل المثال) . جميعهم مخفيين Visible = flase

في الداتابيس مخزن اسماء مجموعة منهم(Name) .

اللي ابغاه بالضبط . انو يجيب اسمائهم من الداتابيس ويضع الخاصية على الاسم اللي تم جلبه Visible = True ..

الآن بخصوص جلب الأسماء من الداتا بيس فهادي بسيطة ومعروفة .

 this.apartmentsTableAdapter.Select_ByFloor(eSRA_2012DataSet1.Apartments,1);
 for (int i = 0; i < this.eSRA_2012DataSet1.Apartments.Rows.Count; i++)
            {
                string loc =this.eSRA_2012DataSet1.Apartments.Rows["Apartment_Location"].ToString();
}

اسم ال Picturebox في حالتنا هو مخزن في المتغير lloc

ايش الخطوة التالية عشان اخلي ال Picturebox اللي اسمه lloc بخاصية visible = true ؟

حاولت بس ماعرفت

مشكورريييين مقدماً

تحياتي

#2

أخي الخاصة Controls التابعة للفورم تحوي جميع العناصر الموجودة عليه سواء الظاهرة أو المخفية ومنها صناديق الصور

الآن تعمل حلقة foreach تمر على عناصر ال Contrlos ثم تفحص الاسم إن ان مساوي لقيمة المتغير تجعل خاصية ال Visible = true

يكفي فحص الاسم لأن الاسم لا يمكن أن يتكرر بينما لو كنت ستفحص شيء آخر مثل قيمة الحجم أو شيء آخر فلا بد أن تفحص نوع العنصر بأن يكون PictureBox حتى لا يختلط مع عناصر من نوع آخر

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#3

السلام عليكم ..

هذه طريقة أخرى لكن عن الــ panel ..

	System.Collections.Generic.Dictionary<String , Panel> dic = new System.Collections.Generic.Dictionary<string, Panel>();
			dic.Add(panel1.Name , panel1);
			dic.Add(panel2.Name , panel2);
			string p = "panel1";

			dicبسم الله الرحمن الرحيم.BackColor = Color.Red;

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 11 مايو 2012 في 20:50

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#4

أخواني الكرام houssam11350_11350 ، ابو احمد

اشكركم جزيل الشكر للمساعدة ..

معليش عندي استفسار بسيط ابغى اخد رأيكم فيه واعذروني ادا غلبتكم معايا :happy: :

انا الآن شغال على برنامج خاص لتأجير العقارات (العمائر بالأخص) .

القسم اللي شغال عليه هو الApartments او الشقق .

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

شوفو الصورة هادي :

Floor1.JPG

بحيث انه يكون على سبيل المثال يوجد button معين للأنتقال من دور لآخر للأعلى او للأسفل ..

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

طبعاً هي فكرة ركيكة وضعيفة جدا جداً جداً

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

الشكر موصول لكم ولكل من حاول مساعدتي

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

#5

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

وتبدأ من الصنف الأدنى مستوى فصاعدا

كمثال :

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

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

وتجعل خصائص قيمها نعم أو لا مثلا IsCanRent أي هل قابل للإيجار أو هل هو محجوز وهكذا

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

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

ثم تبني صنف اسمه طابق Floor بحيث يكون فيه خاصية عبارة عن مجموعة شقق ويكون له خصائص مستقله خاصة به كطابق مثل مستوى الطابق (أرضي ، أول ثاني ... ) وعدد الشقق والمساحة الكلية والإحداثيات و هل هو مؤجر بالكامل

ثم تبني صنف اسمه مبنى بحيث يكون إحدى خصائصه هي كائن مجموعة تحتوي كائنات من النوع طابق وله خصائص مثل عدد الطوابق وموقع المبنى وعدد المداخل و هل هو مؤجر بالكامل الطابق النشط أو المحدد في حال كنت تتعامل مع برنامج يظهر طابق واحد فقط في كل مرة.

الآن تجعل لكل صنف مناهج مسؤولة عنه من حيث رسمه وكيفية إظهار المعلومات وذلك من خلال استدعاء منهج رسم الوحدة

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

والوحدة بما أنها تحتوي معلومات موقعها وإحداثياتها سواء بالنسبة للطابق ككل أو بالنسبة للشقة تقوم باستخدام أدوات الرسم من مستطيلات وخطوط ودوائر ضمن عنصر الصورة أو البانيل الذي سيظهر الرسم

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

وعند النقر عليه بالزر الأيمن يظهر قائمة تحتوي أومر خاصة الوحدة المنقور عليها

يعني باختصار هي محاكاة للعناصر على الفورم أو محاكاة لموقع ويكي مابيا Wikimapia وذلك عندما تمر الماوس يقوم بإضاءة المناطق التي تقع تحت الماوس

قد يكون الكلام طويل أو صعب ولكن هكذا أنت تفكر OOP تماما

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

#6

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

  1. عليك بتصميم جيد لقاعدة البيانات (جدول عمارات - جدول طوابق - جدول غرف) و كل واحد علاقته 1 إلى n مع التالي ..
  2. نخزن معلومات عن الغرفة مثل اللون و الاحداثيات و النص ..
  3. عندما يحدد المستخدم الطابق ... يتم جلب غرف الطابق الخاصة به ثم رسم كل واحدة منها ...
  4. يفضل ان يتم استخدام Label لأنه يظهر نص و لون خلفية و يمكن إخفاؤه و وضح حجم محدد له ..
  5. هنا درس بسيط عن استخدام الخاصية Tag للعناصر حيث يمكنك تخزين فيها ما تريد ..رابط

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7

اخوتي الكرام ابواحمد ، houssam11350_11350 ،

سأعود لكم بعد قراءة ما كتب بتمعن شديييييييييييييييييييييييد

حتى لا يضيع تعبي وتعبكم

هحاول واحاول واحاول لما اتعلم الطريقة الصح

جزاكم الله خيرا وزادكم في علمه

#8

اخوتي الكرام ابواحمد ، houssam11350_11350 ،

آسف على التأخير ولكن حصل لي شوية ضغط عمل بالإضافة انه استغرقت وقت في قراءة بعض المراجع اللي تتكلم على ال GDI+ ودوال الرسم

عموماً ..... لندخل في صلب الموضوع مباشرةً

أولا : المشروع موجهه في البداية لجهة واحدة عشان كدا هنتماشى مع طلباتو اختصاراً للوقت ...

الآن انا قرات الكلام اللي كتبتو كثييير ..... :

"عليك بتصميم جيد لقاعدة البيانات (جدول عمارات - جدول طوابق - جدول غرف) و كل واحد علاقته 1 إلى n مع التالي .."

"ثم تبني صنف اسمه مبنى بحيث يكون إحدى خصائصه هي كائن مجموعة تحتوي كائنات من النوع طابق وله خصائص مثل عدد الطوابق وموقع المبنى وعدد المداخل و هل هو مؤجر بالكامل الطابق النشط أو المحدد في حال كنت تتعامل مع برنامج يظهر طابق واحد فقط في كل مرة."

بخصوص جدول العمارات .. انا تجاهلتو تماماً في برنامجي الحالي لأن العميل يريد العمل بالبرنامج على عمارة واحدة فقط .

الآن سأضع صورة لقاعدة البيانات والتوضيح بعدها :

Database_Digaram.JPG

بداية هناك الكثير من الجداول بعضها خاص بالصلاحيات / العقود / السندات وغيرها ...

مايهمنا حالياً هي آخر أربعة جداول من الأسفل .

اولاً ... حسب معرفتي Coordinate معاناها احداثيات (صححوني اذا اخطات جزاكم الله خيراً)

قصدي فيها احداثيات الرسم في دالة الرسم او معلومات الرسم

ممكن تسألوني ليش سويت جدول خاص بالأحداثيات خاص بالشقق واخر خاص بالطوابق

الجواب : لأن الاحداثيات نفسها تتكر في نفس الطوابق

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

الآن على افتراض ان الكود التالي ينشأ 12 شقة بإحداثياتها :

          myGraphic.DrawRectangle(myPen, 0, 0, 200, 200); // 1




            myGraphic.DrawRectangle(myPen, 0, 200, 150, 250); //2
            myGraphic.DrawRectangle(myPen, 0, 450, 200, 200);//3
            myGraphic.DrawRectangle(myPen, 200, 450, 150, 200);//4
            myGraphic.DrawRectangle(myPen, 350, 450, 150, 200);//5
            myGraphic.DrawRectangle(myPen, 500, 450, 200, 200);//6
            myGraphic.DrawRectangle(myPen, 550, 200, 150, 250);//7
            myGraphic.DrawRectangle(myPen, 500, 0, 200, 200);//8
            myGraphic.DrawRectangle(myPen, 350, 0, 100, 180);//9
            myGraphic.DrawRectangle(myPen, 250, 0, 100, 180); //10
            myGraphic.DrawRectangle(myPen, 350, 180, 100, 180); //11
            myGraphic.DrawRectangle(myPen, 250, 180, 100, 180); //12

ماهي الأجزاء الواجب تخزينها في قاعدة البيانات ؟

كيف طريقة استداعائها ...

انا عندي فكرة عامة وهي كالتالي :

اولاً يتم استدعاء احداثيات الطابق المطلوب رسمه حسب ادخال المستخدم

وبعدين عن طريق For loop يتم استدعاء احداثيات الشقق في نفس الطابق ورسمها تباعاً

بس ايش هو الكود اللي يقوم بهذا وطريقة ادخال الاحداثيات من قاعدة البيانات ... هنا السؤال

انا عارف اني كثرت كلام

اتمنى منكم تصحيحي اذا كان هناك اخطاء في التصميم ومساعدتي فيما تبقى ....

الله يعطيكم الف عافية ويقويكم على فعل كل مايحبه ويرضيه

تحياتي لكم جميعاً

#9

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

بسم الله الرحمن الرحيم

ما شاء الله أخي يبدو عليك الحماس والاهتمام ونتائج موفقة التي وصلت لها

لا أخفيك سرا بعد سؤالك الأول خطرت ببالي فكرة وقمت بتطبيقها ولكن لم أكملها

وهي إنشاء كونترول مبني على الكونترول القياسي Panel يزيد عليه أن له خاصية أسميتها Points وهي عبارة عن مصفوفة من النوع Point تعبر عن إحداثيات المضلع للشكل الجديد بحيث يتم تشكيل البانيل وفقا لهذا المضلع بدل ان يكون مستطيل بطول وعرض فقط

وذلك للاستفادة منه في تضمين عناصر أخرى وإعطاءه لون خلفية أو وضع صورة أو استعمال أحداث الماوس والكيبورد والرسم عليه طبعا كل ذلك يتم ضمن المضلع

يعني أنا شبعته بشقة أو غرفة

لو أردت إكماله لجعل خاصية النقاط قابل للربط بحقول قاعدة بيانات

لهذا كإجابة على سؤالك طبيعي ان تحفظ الإحداثيات في قاعدة بيانات

بحيث تجعل جدول يحوي حقل ID وحقل X و حقل Y وإذا كانت الشقق تعبر عنها فقط بمستطيل فحينها تحتاج لحقلين للعرض والارتفاع

طبعا ال ID يجب ربطه بالشقة أي جدول الشقق

ما أقبـح المعصية ، تذهب لذتها ويبقى إثمها ... ومأ أحسن الطاعة ، تذهب مشقتها ويبقى ثوابها

كل نعيم دون الجنة غرور ... وكـل شقـاء دون النـار سرور

الدورة التطبيقية لتعليم التصميم بالإليستريتور

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