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

ما هو ال User Control

بدأه alnary في 10 سبتمبر 2009 · 9 رد · 2,689 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كل عام وا نتم بالف خير ... و خواتم مباركه ..

اعزائي اتمنى ان تفهمونى ما هو ال User Control .. من جميع النواحي ..

و مشكورين اعزائي ...

تم تعديل هذه المشاركة بواسطة alnary في 10 سبتمبر 2009 في 09:18

#2

مرحباً أخي/أختي الكريمـ(ـة)،

الـ( UserControl ) شبيه بشكل عام بالـ( Control ) العادي، لكن مايختلف بينهما هو أن الـ( UserControl ) قابل لأن يكون مصمم بواسطة نافذة المصمم أما الـ( Control ) فلا يخولك أن تقوم بتصميمه عبر نافذة المصمم, وإذا كنت تريد أن تعرف مغذى استخدامه فهو كأي ( Control ) موجود ضمن بيئة الـ( .Net ) أي مثل ( PictureBox, TextBox, ProgressBar, Etc... ) لكن ومن المعروف أن كل واحد من التحكمات المذكورة لها استخدامات مختلفة اي كل واحد منها تم برمجته بشكل مختلف, وهكذا الـ( UserControl ) أي يمكنك استخدامه عند الحاجة لتصميم تحكم غير موجود فعلياً بتحكمات الـ( .Net ) هذا أيضاً ليس بالسبب الوجيه فمن الممكن أيضاً تصميم تحكم له عمل يشبه عمل التحكمات الموجودة في بيئة الـ( .Net ) مع إضافات عليه أو حتى بشكل أخر ( شكل جديد ) .

هذا مفهوم الـ( UserControl ) وفي الأول والأخير يمكنك أن تعتبره كـ( Control ) عادي لكنه كما ذكرت ( الـ( UserControl ) مدعم من جهة المصمم )) .

إذا كان لديك أي أسئلة أخرى لاتتردد بالسؤال عنها,

بالتوفيق .

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#3

هلا اخوي Bashar Rabat ..

معلومات قميه .. تقريبا فهمت وظيفته .. بس باقي اطبقه و شويه راح تثبت ..

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

هل يمكن مثلا عمل control خاص با الـ ado.net يعنى يختصر لي عمليه ربط القاعده .. مثلا مثلا تكرار سطور الاتصال با القاعده و غيرها من العمليات ...

و هل يمكن مثلا دمج اكثر من controls في control واحد ...

انا عارف اني اتعبتك يا اخوي .. و عذرا على الازعاج ..

مع تحياتي لك

اخوك / الناري

#4

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

اقتباس
هل يمكن مثلا عمل control خاص با الـ ado.net يعنى يختصر لي عمليه ربط القاعده .. مثلا مثلا تكرار سطور الاتصال با القاعده و غيرها من العمليات ...

يمكن عمل تقريبا أى شئ بالـUser Control ,, فقط عليك أن تتخيل :D

اقتباس
و هل يمكن مثلا دمج اكثر من controls في control واحد ...

بالتأكيد يمكن عمل ذلك

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

feed.1.gif

#5

مرحباً !،

رجاءً قم باستعراض هذا الموقع ( www.a1vbcode.com ) ستجد فيه الكثير مما يفيدك, ولتكمل فكرة استخدام الـ( Controls ) أو الـ( UserControls ) عليك بمشاريع ( Controls ) من الموقع المذكور .

حقيقةً، لايمكنك استخدام اي من الـ( Control ) أو الـ( UserControl ) في معالجة البيانات كما ذكرت حضرتك، إلا في حالة واحدة وهي أن يقوم أساس هذا التحكم على شيء له عمل في واجهة المستخدم .

يمكنك استخدام الـ( DataSet ), يتم إنشاء الـ( DataSet ) بواسطة معالج بسيط الخطوات، هذا المعالج ينشىء لك محرك/معالج كامل يساعدك في معالجة البيانات على هيئة عناصر شبيها بعناصر الـ( VB ) اي يوجد هناك ( صفوف، إجراءات، عمليات، خصائص ) تناسب قاعدة البيانات الخاصة بك, لكن وبصراحة استخدام هذا النوع من أنواع معالجة البيانات لايساعدك كثيراً من جهة المعرفة، لأنه وبشكل ما يعقد الأمور عليّك عند حدوث مشكلة أو تعديل على ( Code ) الـ( DataSet )، وأيضاً كما ذكرت فهو لايساعدك على تعلم أساسيات برمجة قواعد البيانات، يمكنك عرض الـ( Code ) الخاص بالـ( DataSet ) لكن إذ لم تكن لك خبرة في استخدام الاستعلامات و طريقة إختصار معاملات، فليس لديك القدرة على فهم ذلك الـ( Code )، لذلك أنصحك بإنشاء ( Module ) وكتابة الإجراءات والعمليات التي تحتاج إليها, علماً أن الـ( Module ) يساعدك أيضاً في إختصار كتابة أسماء الفضاء أي لن تحتاج لتسمية الصف الداعم لذلك الإجراء أو تلك العملية، فقط ( اسم الإجراء أو العملية ) .

يمكنك أيضاً استخدام مايدعى بالـ( Class ) وهو عبارة عن صف يمكن أن يحوي ( خصائص، إجراءات، عمليات، ثوابت و متغيرات )، لكن ومن المعروف أن أي صف يحتاج لكي يكون مصرح كصف جديد أي يجب أن تسبق اسم الصف كلمة ( New ) لكي تكون قادر على الوصول إلى محتويات هذا الصف, هذا النوع يمكن أن يستخدم في تحزيم المعلومات أو يمكن أن يكون كمعالج لشيء ما .

أخي الكريم، عليّك أن تكون دقيق فيما تقوم باستخدامه :)، ليس هناك شيء صعب ;)، أسأل ماتشاء ( نحن هنا لنساعدكم :) )، جرب وإن واجهتك مشاكل في شيء ما، لاتتردد في العودة ;) .

بالتوفيق :) .

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#6

المشكلة أنك تسأل سؤال عام وبالتالى ستكون الإجابات عامة ,, حدد سؤال حتى تجد إجابة محددة

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

feed.1.gif

#7

ما شاء الله عليـكم اعزائي .. ايش السرعه هذا .. ما شاء الله ..

الف شكر لك مشرفنا GHOST2010 و اخوي الكريم Bashar Rabat على المتابعه و على المعلومات الرائع الي تقدموها ..

و بصراحه شرح مفصل رائــع جدا ... وانا بدات استوعب و الحمد لله ... و شكر على الموقع ( شكل الموقع لذيذ جدا ) ... ^_^

طبعا راح اجرب و اسئلكم لو في شي ما عرفته او ما قدرت احله ( انا عارف اني بطلع لكم الضغط) ههههه

و با النسبه لمشرفنا GHOST2010 با ان اسئلتي عامه هذا صحيح الانى ما اعرف كنت ايش user control .. بصراحه انا جائنى الفضول لكي اعرفه لانى تحدثت مع واحد فاهم با الفيجول بيسك دوت نت و كنت اتناقش معاه ( طبعا انا عدنا مبتدى و عامل لنفسى زحمه ) و قلى على حكايه اسمها الـ user control في ستخدام الداتا جريد و قال لي ان الداتا جريد حاجه قديمه ولان الـ user control ... طبعا انا ما فهمت ايش بيقول .. و قال لي انه نقدر نختزل اكود الاتصال (connection) و الاستعلام(command) با استخدام user control..... فـ قررت انى اعرفها و احاول استخدمها ..

بس ان شاء الله بتعاونـكم راح اتعلمها و اتقنها ان شاء الله ...

بس يعنى لو في مواقع زياده و امثله ( لله يا محسنين) ولو عندكم شرح زياده ..^_^

و كمان ما هي الاستخدامات الشائعه لدى المبرمجين للـ user control ..

انا عاااارف اني وجعت راسـكم .. بس استحملونى و لا احذوفي عضويتي ههههههههههههه

جزاكم الله الف خير و جعله في ميزان حسناتكم ..

تحياتي لكم ..

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

#8
اقتباس
بس استحملونى و لا احذوفي عضويتي

أنا مع اقتراح حذف العضوية :D :D

مرحبا بك بيننا أخى الكريم ونحن فى خدمتك فى أى استفسار :blush:

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

feed.1.gif

#9

مرحباً :)،

فكرت لك بحل أخر وهو استخدام الـ( Component ) هذا النوع من التحكمات يوفر لك شكل جميل للتعامل مع قواعد البيانات ولايظهر في واجهة المستخدم, طبعاً كما ذكرت لك سابقاً إذ كان هناك غاية أساسية في عرض شيء من المعلومات في واجهة المستخدم فيمكنك استخدام الـ( UserControl ) أما إذ لم يكن هناك فعليك بإحدا الحلول المذكورة في الأعلى أو قم باستخدام الـ( Component ) :), الـ( Code ) التالي يشرح فكرة بسيطة وليست متقنة, لأن عملي لا يتمحور على قواعد البيانات لذلك لست بخوارزمي :), لكني أحاول أن بسط لك الحل بمثال :) :

 

Imports [color= #990000;]System

Imports [color= #990000;]System[color= #339933;].ComponentModel

Imports [color= #990000;]System[color= #339933;].Data

Imports [color= #990000;]System[color= #339933;].Data[color= #339933;].OleDb

Imports [color= #990000;]System[color= #339933;].IO

[color= #000000; font-weight: bold;]Public [color= #000000; font-weight: bold;]Class DataEngine

    Inherits Component

    [color= #000000; font-weight: bold;]Private ConnString [color= #b1b100;]As String [color= #339933;]= String[color= #339933;].[color= #990000;]Empty

    [color= #000000; font-weight: bold;]Private LocalDB [color= #b1b100;]As Boolean [color= #339933;]= [color= #000000; font-weight: bold;]True

 

    [color= #000000; font-weight: bold;]Public Property LocalDataBase[color= #009900;](ByVal DBName [color= #b1b100;]As String[color= #009900;]) [color= #b1b100;]As Boolean

        Get

            [color= #b1b100;]Return LocalDB

        [color= #990000;]End Get

        Set[color= #009900;](ByVal value [color= #b1b100;]As Boolean[color= #009900;])

            LocalDB [color= #339933;]= value

            [color= #b1b100;]If value Then

                Dim DBPath [color= #b1b100;]As String [color= #339933;]= Path[color= #339933;].Combine[color= #009900;](Application[color= #339933;].StartupPath[color= #339933;], DBName[color= #009900;])

                ConnString [color= #339933;]= [color= #0000ff;]"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" [color= #339933;]+ DBPath [color= #339933;]+ [color= #0000ff;]";Persi
st Security Info=False"

            [color= #990000;]End [color= #b1b100;]If

        [color= #990000;]End Set

    [color= #990000;]End Property

 

    [color= #000000; font-weight: bold;]Public Property ConnectionString[color= #009900;]([color= #009900;]) [color= #b1b100;]As String

        Get

            [color= #b1b100;]Return ConnString

        [color= #990000;]End Get

        Set[color= #009900;](ByVal value [color= #b1b100;]As String[color= #009900;])

            ConnString [color= #339933;]= value

        [color= #990000;]End Set

    [color= #990000;]End Property

 

 

    [color= #000000; font-weight: bold;]Public [color= #000000; font-weight: bold;]Function GetTable[color= #009900;](ByVal TableName [color= #b1b100;]As String[color= #009900;]) [color= #b1b100;]As DataTable

        Dim Conn [color= #b1b100;]As [color= #000000; font-weight: bold;]New OleDbConnection[color= #009900;](ConnString[color= #009900;])

        Dim CMD [color= #b1b100;]As [color= #000000; font-weight: bold;]New OleDbCommand[color= #009900;](String[color= #339933;].Format[color= #009900;]([color= #0000ff;]"SELECT * FROM {0}"[color= #339933;], TableName[color= #009900;])[color= #339933;], Conn[color= #009900;])

        Dim DS [color= #b1b100;]As [color= #000000; font-weight: bold;]New DataSet[color= #009900;]([color= #009900;])

        Dim ADB [color= #b1b100;]As [color= #000000; font-weight: bold;]New OleDbDataAdapter[color= #009900;](CMD[color= #009900;])

        ADB[color= #339933;].Fill[color= #009900;](DS[color= #339933;], TableName[color= #009900;])

        Conn[color= #339933;].Close[color= #009900;]([color= #009900;])

        CMD[color= #339933;].Dispose[color= #009900;]([color= #009900;])

        Dim TB [color= #b1b100;]As DataTable [color= #339933;]= DS[color= #339933;].Tables[color= #009900;](TableName[color= #009900;])

        DS[color= #339933;].Dispose[color= #009900;]([color= #009900;])

        ADB[color= #339933;].Dispose[color= #009900;]([color= #009900;])

        [color= #b1b100;]Return TB

    [color= #990000;]End [color= #000000; font-weight: bold;]Function

 

    [color= #000000; font-weight: bold;]Public [color= #000000; font-weight: bold;]Function GetTableByConditions[color= #009900;](ByVal TableName [color= #b1b100;]As String[color= #339933;], ByVal Conditions [color= #b1b100;]As String[color= #009900;])
 [color= #b1b100;]As DataTable

        Dim Conn [color= #b1b100;]As [color= #000000; font-weight: bold;]New OleDbConnection[color= #009900;](ConnString[color= #009900;])

        Dim CMD [color= #b1b100;]As [color= #000000; font-weight: bold;]New OleDbCommand[color= #009900;](String[color= #339933;].Format[color= #009900;]([color= #0000ff;]"SELECT * FROM {0} WHERE {1}"[color= #339933;], TableName[color= #339933;], Con
ditions[color= #009900;])[color= #339933;], Conn[color= #009900;])

        Dim DS [color= #b1b100;]As [color= #000000; font-weight: bold;]New DataSet[color= #009900;]([color= #009900;])

        Dim ADB [color= #b1b100;]As [color= #000000; font-weight: bold;]New OleDbDataAdapter[color= #009900;](CMD[color= #009900;])

        ADB[color= #339933;].Fill[color= #009900;](DS[color= #339933;], TableName[color= #009900;])

        Conn[color= #339933;].Close[color= #009900;]([color= #009900;])

        CMD[color= #339933;].Dispose[color= #009900;]([color= #009900;])

        Dim TB [color= #b1b100;]As DataTable [color= #339933;]= DS[color= #339933;].Tables[color= #009900;](TableName[color= #009900;])

        DS[color= #339933;].Dispose[color= #009900;]([color= #009900;])

        ADB[color= #339933;].Dispose[color= #009900;]([color= #009900;])

        [color= #b1b100;]Return TB

    [color= #990000;]End [color= #000000; font-weight: bold;]Function

 

[color= #990000;]End [color= #000000; font-weight: bold;]Class

الاستخدام، بعد إضافة هذه الـ( Component ) إلى ( Form ) نقوم بإعداد خصائصها أو استدعاء إحدا عملياتها, كالتالي :

 

DataEngine1[color= #339933;].ConnectionString [color= #339933;]= [color= #0000ff;]"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:MyDBase.mdb;Pers
ist Security Info=False"

Dim UsersTable [color= #b1b100;]As DataTable [color= #339933;]= DataEngine1[color= #339933;].GetTable[color= #009900;]( [color= #0000ff;]"UsersTable" [color= #009900;])

Dim ConUsersTable [color= #b1b100;]As DataTable [color= #339933;]= DataEngine[color= #339933;].GetTable[color= #009900;]( [color= #0000ff;]"UsersTable"[color= #339933;], [color= #0000ff;]"UserName = 'alnary'" [color= #009900;])

بالنسبة للخاصية ( LocalDataBase ) هذه الخاصية تساعدك في اختصار كتابة عنوان قاعدة البيانات إذا كانت موجودة بالمجلد الذي يحوي الملف التنفيذي لتطبيقك .

 

DataEngine[color= #339933;].LocalDataBase[color= #009900;]( [color= #0000ff;]"MyDBase.mdb" [color= #009900;]) [color= #339933;]= [color= #000000; font-weight: bold;]True

هذه فكرة بسيطة كما ذكر, وليس عليك اعتبارها كفكرة عامة, اعتبرها بداية لتصميم شيء من هذا القبيل ;) .

بالتوفيق .

تم تعديل هذه المشاركة بواسطة Bashar Rabat في 11 سبتمبر 2009 في 19:51

The important thing is not so much

that every child should be taught,

as that every child should be given the wish to learn.

#10

وووا ووو

ايش هذا كله ... ما شاء الله ... و الله انا مهم لدرجه هاذي ههههههههه :):):)

اخوي مشكور كثير .. من الان ببداء با التطبيق و لو في شى ما عرفته راح اقول على طول ..

و الف شكر لانكـم اعطيتونى الدافع الكبير لمعرفه الـ user control ...

انا راح اطبقها و اشوف ايش التنائج و لو في مشاكل بكلمكم اعزائي ..

جزاكم الله الف خير .. و جعلكم الله من عتقاء هذا الشهر الكريم ..

تحياتي للجميع ...:)

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