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

سؤالين في برمجة أداوات Ocx

مغلق
بدأه eias في 11 سبتمبر 2005 · 13 رد · 1,206 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم..بالحقيقة حاولت أبرمج أداة Ocxو لكني وجدت ال.Net مختلف عن ما كنا نعمل في الVB6 أقصد :

1-كيف نضيف الخصائص و نفعلها كنا نفعل ذل بال Getو ال Let للخاصية و إعطاء قيم افتراضية و هذه الأمور.

2-لنقل أني أريد تصميم أداة تعدل على أي فورم توضع فيها (مثلا تجعل لون الفورم الذي توضع فيه أزرق)

كيف سأكتب هذا الكود أكيد لي هكذا.

        Dim Form As New Form
        Form.BackColor = Color.Blue

ما هو الكود إذا.. و شكرا لكم .

إيــاس

#2

الصراحه أنا لم أحاول أن أصنع أدآه ActiveX علي دوت نت ولا أعرف ان كان ممكنا أم لا ولكن لو اخترت مشروع جديد من النوع Class Library أو من النوع Windows Control Library فان ذلك سوف ينتج أدآه ذات امتداد Dll ولن تستطيع استخدامها الا في بيئة الدوت نت وبفرض أنك لديك مشروع كما سبق وتريد اضافة خاصيه Property للأداة مثلا فستكتب :

Public Property mytext()

وبمجرد الضغط علي زر Enter يكون الكود كالتالي :

    Public Property mytext()
        Get

        End Get
        Set(ByVal Value)

        End Set
    End Property

ويلزمك الاعلان عن متغير حتي تستقبل أو تضع قيمة الـ Property ...,,,

Dim mtxt As String

وتتعامل مع المتغير من خلال الـ Property كالتالي :

في الـ Get Block :

Return mtxt

وفي الـ SetBlock :

Value = mtxt

وفي النهايه يكون كود الـ Property داخل الكلاس كالتالي :

Public Class Class1
    Dim mtxt As String
    Public Property mytext()
        Get
            Return mtxt
        End Get
        Set(ByVal Value)
            Value = mytxt
        End Set
    End Property
End Class

وبعد عمل Build يمكنك استخدامها كالتالي :

10_09_05_11_30_54_1126420254property.JPG

أما بالنسبه للجزء الثاني من السؤال فيمكنك عمل Method تقوم بتغيير لون الفورم بحيث تأخذ 2 Parameter الفورم واللون كالتالي :

  Public Function changecolor(ByVal myform As Form, ByVal color As System.Drawing.Color)
        myform.BackColor = color
    End Function

وتستخدمها كالتالي :

10_09_05_11_43_32_1126421012fun.JPG

تم تعديل هذه المشاركة بواسطة hazzoom في 11 سبتمبر 2005 في 11:04

#3

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

أخي العزيز أعتقد أنك سوف ما تجده في كتاب أخي تركي العسيري

ثانيا ال vb.net لا تقوم بعمل ocx ومايكروطين أسبتدلتها بأواع ال dll المخلتفه رحم الله أيام vb2:vb6 و رحم الله أيام vb1

أخوك عمرو عيسي

#4

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

#5

أهلا أخي الكريم عمرو عيسي (ماهذه الميكرو طين ؟؟) له له له راحت أيام الOcx إذا نحن مضطرين نعمل مع الDllهل هناك درس لأن كتا ب الأستاذ تركي عندي ليس كامل أو هل له رابط

#6

السلام عليكم

الموضوع ان شاء الله بسيط جدا

انا هنعمل مثال بسيط الان ان شاء الله مع بعض على اداة TextBox سوف نقوم بعمل Inherits لى الاداة ونقوم باضافة بعض الخصائص Property

اول خطوة افتح الدت نت ثم new project >> windows control library

سوف تجد اداة UserControl اضغط عليها مرتين

قم بتغير السطر التالى

  Inherits System.Windows.Forms.UserControl

الى

   Inherits TextBox

الان حصلت على جميع خصائص اداة TextBox

وممكن كمان تضيف بعض الخصائص من عندك

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

الان اعمل التالى

اول حاجة استعداء فضاء الاسماء التالى

 
ثم قم بتغير متغيرات بلشكل التالى

Private _MyGgtFocusColor, _MyLeaveColor As Color

الان نقوم باضافة الخاصية الاولى

Property MyGetFocus() As Color

Get

MyGetFocus = _MyGgtFocusColor

End Get

Set(ByVal Value As Color)

_MyGgtFocusColor = Value

End Set

End Property

قمت الان بعمل خاصية جديدة فى اداة TextBox اسمها MyGetFocus 
الان الخاصية التانية

Property MyLeave() As Color

Get

MyLeave = _MyLeaveColor

End Get

Set(ByVal Value As Color)

_MyLeaveColor = Value

End Set

End Property

الان ندخل بداخل حدث Enter الخاص بى الاداة ونقوم بعمل الكود المسؤال عن تغير اللون

Private Sub UserControl1_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Enter

Me.BackColor = MyGetFocus

End Sub Private Sub UserControl1_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Leave

Me.BackColor = MyLeave

End Sub

control.rar

Imports System.ComponentModel

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#7

شكرا لك أخي الكريم waleedhm الحقيقية طريقة رائعة و مفهومة و بسيطة ...و لكن عندما نحول الخصائص إلى خصائصTextBox لن تظهر لنا شاشة التصميم (أكيد تعود لو كانت الخصائص للUserControl) ..

ولكن عندما أقوم بتصميم أدوات معقدة تحتاج لعدة عناصر أكيد سأستطيع تعديل الخصائص كما أريد ..مثلا خاصية النص للTextBox1 وخاصية نص أخرى للTextBox2وخاصية صورة للPictueBox1 ولكن هنا ال Inherits سيكون لمن بالتحديد هل سيكون للUserControlنفسها أي

Inherits System.Windows.Forms.UserControl

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

#8

أخ اياس أعتقد أن كتاب في هذه الحاله مفيد جدا :

Apress - User Interfaces in VB .NET Windows Forms and Custom Controls

فان وجد أحد منه نسخه رجاء وضع الرابط الخاص بها أو ارفاق نسخه من الكتاب ,,,

تم تعديل هذه المشاركة بواسطة hazzoom في 12 سبتمبر 2005 في 10:39

#9

أخي الكريم waleedhm

لقد حاولت تصميم أداة تعتمد على عدة عناصر(صور و نص ) عندما أضفت هذا الكود للتعريف

عن اللون :

Private PColor As Color

قبله بشكل عادي بفرض أن ال

Inherits System.Windows.Forms.UserControl

مازالت موجودة و الفضاء المستدعى هو فقط

Imports System.ComponentModel

و لكن عندما حاولت إضيف خاصية نص و عرفت عن النص بالشكل :

Private tx As Text

حدث خطأ في البرنامج وهو

Text' is ambiguous, imported from the namespaces or types

'System.Drawing, System'.

ما الحل هنا هل هناك فضاء آخر يجب إضافته .

وشكرا

#10

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

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

اخي العزيز اياس ... يمكنك اخي استخدام الكود التالي:

   Privet mText As String
   Public Shadows Property Text As String
       Get
           Return mText
       End Get
       Set(ByVal Value As String)
           mText = Value
       End Set
   End Property

   Privte mTextColor As Color
   Public Property TextColor As Color
       Get
           Return mTextColor
       End Get
       Set(ByVal Value As Color)
           mTextColor = Value
       End Set
   End Propert

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

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#11

أخي رغيد ليه الغيبه الطويله دي ,,,

ياريت تقوللي ايه حكاية الـ Shadows ???

وياريت كمان الـ Shared ؟؟؟

جزاك الله خيرا,,,

#12

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

من هذا المهندس رغيدالطيب أم أنه ضوء القمر ..أِشكرك على تشريفنا الموضوع و يبدو أنك مستعجل جدا و إلا لما كتبت ال Private بهذا الشكل Privet ثم بهذا الشكل Privte ...

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

Private mText As String

Property Text1() As String

Get

mText = Val1.Text

Text1 = mText

End Get

Set(ByVal Value As String)

mText = Value

Val1.Text = mText

End Set

End Property

طبعا أكيد طريقك صح ولكن لسذاجتي لم أستطع تطبيقها ..دعنا نراك دائما .

إيـاس

#13

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

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

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

بالنسبة لكي عزيزي hazzoom يؤسفني كثيرا عدم تواجدي كثيرا هذه الايام نظرا لعدم كوني في منزلي حاليا فقد تغربنا بحثا عن عمل بعد تخرجنا و الله الحمد تعالى و لنا في سعة فضله سبحانه امل كبير انه هو السميع العليم.

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

فمثلا اذا كنت ترث من فئة الـ UserControl وتعلم انه لديه الخاصية Text وانت تريد ان تقوم بتغييرها بشكل يناسبك فعندها قم بعمل Sahdows للخاصية و هي تشبه عملية الـ Overriding و لكنها اعم و تستخدم حتى مع الخصائص و الدوال التي لم يتم تعريفها بإستخدام الـ Overridable ... اعتدر عن سرعة الاجابة و اختصارها الشديد و اتمنى ان اجد وقت مناسب كي نناقش معا بإذن الله تعالى حالات نستفيد منها من هذه الميزة اخي

اتمنى ان يغفر لي تقصيري لضيق الوقت قليلا اخي الكريم

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

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#14

ولايهمك أخي الكريم رغيدالطيب كلنا مقدرين ظروفك ..و ننتظرك حتى تستقر و تعود لنا و عندها سنناقش مواضيع عملاقة.

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

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