PDA

View Full Version : ساخت کامپوننت و دی ال ال (DLL & COMPONNENT)



eyes_shut_number1
سه شنبه 03 اردیبهشت 1387, 10:26 صبح
سلام دوستان!
اگه تو این یکی دوروز توی این تالار بوده باشین دیده بودین که بنده تاپیکی دادم مبنی بر طریقه ساختن کامپوننت!
چون مدت زیادی بود کار نکرده بودم فراموش کردم!
و البته جوابی هم از دوستان دریافت نکردم با یکم سرچ کردن پیدا کردم چیزی که میخواستم که ظاهرا توی این سات نبود شایدم من پیدا نکردم
با خودم گفتم برای دوستانی که مثل من فراموششون شده بود یا اونایی که شاید بلد نیستن طریقه درست کردن کامپوننت و دی ال ال رو قرار بدم.
امید وارم کمک کنه و کم اشکال باشه
کامپوننت چیه؟ کامپوننت یه قسمت قابل استفاده مجدد (یا همون ری یوز ایبل) که قسمتی از کد های کتابخونه میشه.
این کد با ارث بری قابل استفاده مجدد یه نکته ای که نباید فراموش بشه اینه که نام کامپوننت هاتون باید تا حد امکان کوچیک باشه و نشون بده که این کامپوننت میخواد چیکار کنه.

خوب در ابتدا از منوی فایل نیو پروجکت رو انتخاب کنید و از قسمت زبان وی بی ویندوز کنترل لایبراری رو انتخاب کنید

File->New Project->Visual Basic-> Windows Control Library

یه پروژه باز شد که ضفحه اولش کوچیکه! فرض کنید میخواین یه تکسباکس درست کنید که فقط عدد بگیره و اگه حرف وارد شد یه اررور پرووایدر (Error Provide)به کاربر اعلام خطا کنه.همچنین رنگ پس زمینه با فکوس شدن و از دست دادن تغییر کنه!؟
فقط کافیه این کد رو بعد از اضافه کردن یک تکس باکس و یه اررور پرووایدر به کد ها تون اضافه کنید


Public Class UserControl1
Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus
TextBox1.BackColor = Color.Yellow
End Sub
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles
TextBox1.KeyPress If Not (Asc(e.KeyChar) > 48 And Asc(e.KeyChar) < 59) Then e.Handled = True ErrorProvider1.SetError(TextBox1, "شما تنها عدد میتوانید وارد کنید") Else
ErrorProvider1.Clear()
End If
End Sub
Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles
TextBox1.LostFocus TextBox1.BackColor = Color.White
End Sub
Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class


خوب بیشتر کار تموم شد!
حالا وقتشه که روی بویلد (Build)رفته و پروژه رو بویلد کنید WindowsControlApplication1Build->Build
اگه برین توی فولدری که پروژه رو ذخیره کردین وارد پوشه بین (bin)شده و بعد وارد پوشه ریلیز (release)بشین ائونجا یه فایل با پسوند دی ال ال میبینید
WindowsControlLibrary1->Bin->Release->WindowsControlLibrary1.dll

این اسمها برای پروژه منه اگه شما اسم پروژه رو تغییر دادین طبیعتااسم ها هم تغییر مینند. این فایل دی ال ال است که شما ساختید
حالا یه پروژه دیگه باز کنید
File->New Project->Visual Basic->Windows Application
برید روی تولباکس (ToolBox)و کلیک راست کنید و Choose Items ... رو اتخاب کنید!
صفحه ای باز میشه روی دکمه بروز کلیک کنید و برید توی او پروژه ای که دی ال ال ساختید و فایل دی ال ال رو اضافه کنید و بعد دکمه اوکی رو بزنید یک شکل چرخ دنده که ایکن دیفالت(Default) هست اضافه میشه. اون رو درگ دراپ(Drag & Drop) کنید روی فرمتون همین بود!
اینم ساخت یه دی ال ال ساده!
به سادگی میتونید از این راه ایده بگیرید کامپننت های خفن درست کنید
خوبه که بدونین که کاپننت نویسی درامد بالای داره(به شرط حرفه ای بودن) امید وارم تونسته باشم به سادگی این روش رو گفته باشم
اشکال زیاد داره به بزرگی خدتون ببخشید

eyes_shut_number1
چهارشنبه 04 اردیبهشت 1387, 08:18 صبح
سلام
مثل این که این آموزش ساده اصلا یه درد دوستان نخرده
اصلا استقبالی نشد

danial82
چهارشنبه 04 اردیبهشت 1387, 22:22 عصر
برای شروع آموزش خوبی بود اگه ادامه داشته باشه و مباحث پیشرفته تر رو هم مطرح کنی حتما استقبال میشه

eyes_shut_number1
چهارشنبه 04 اردیبهشت 1387, 23:00 عصر
اگه دوستان استقبال کنند حتما دانیال جان این کارو میکنم.

peymannaji
چهارشنبه 04 اردیبهشت 1387, 23:13 عصر
دوست عزیزم ممنون . خواهش میکنم ادامه بدید ....

eyes_shut_number1
پنج شنبه 05 اردیبهشت 1387, 12:00 عصر
بازم سلام
توی پست اول امودیم و یه یوزر کنترل درست کردیم!
این دفه میخوایم یه دی ال ال درسا کنیم بدون گرافیک!
کاره خاصی نمیکنه .
دیدن مثلا برای یه کلاس از یه تابع ورودی میفرستین و یه خروجی بهتون میده؟
الانم میخوایم یه چیز تو همون مایه هارو انجام بدیم!
خوب ویزوال استادیو رو باز کنید و از روی منوی نیو پرجکت – کلاس لایربراری رو انتخاب کنید. File ->New Project ->Class Library ا
گه توجه کنید دیگه توا باکسی ندارید که بخواید کنترل اضافه کنید و فقط یه کلاس دارید که توش میتونید تابع اضافه کنید.
این کد رو اضافه کنید به کلاستون این کد روز و ماه و سال رو میگیره و اونوبه حروف تبدیل میکنه!چیزه راحتیه فقط یه عنوان نمونه بود باز هم پروژه اون رو سیو کنید و اون رو بسازید.
Code Added In end Of Post
Save & Build Project اگه برید توی پوشه برنامتون و توی بین و بعد تیو ریلیز
ClassLibrary1-Bin-Release- X.dll
یه فایل دی ال ال به اون اضافه شده.
حالا یه پروژه جدید باز کنید از نوع ویندوز اپلیکیشن روی سولوشن اکسپلورر کلیک راست کنید و اد ریفرنس رو انتخاب کنید
Solution Explorer – Add Reference –Browse
بعد برید و اون فایل دی ال ال رو اد کنید. و توی فرمتون این کد که معلومه چیه رو وارد کنید


Dim fr As New ClassLibrary1.F09122063891
Messagebox.show( fr.DateToFarsi("1384.2.3",”.”))

eyes_shut_number1
پنج شنبه 05 اردیبهشت 1387, 12:01 عصر
در مورد کد یا هر قسمت از مراحا سوال داشتید همینجا بپرسید
ممنون

near_86
شنبه 07 اردیبهشت 1387, 09:03 صبح
ممنون دوست عزیز
آموزش خیلی خوبی بود
لطفا ادامه بدین

eyes_shut_number1
شنبه 07 اردیبهشت 1387, 10:25 صبح
سلام دوستان!
یه آموزش خوب برای درست کردن SmartTags برای دوستانی که UserControl درست کردن و میخواند Costomize کنندش
این مقاله نوشته آقای حامد مصافی هست
از همین سایت فکر کنم DL کردمش!
از اینجا دانلود کنید (انجا کلیک کن) (http://rapidshare.com/files/110474728/SmartTag.rar.html)

eyes_shut_number1
یک شنبه 08 اردیبهشت 1387, 19:34 عصر
دوستان پیشنهادی برای این تاپیک ندارن؟
که ادامش چی باشه؟
و یا ...!؟

ali_mp64
پنج شنبه 12 اردیبهشت 1387, 14:59 عصر
حتما ادامه بدين . فكر كنم خيلي ها از اين تاپيك استفاده مي كنند .
از شما هم ممنونيم .

bita_naz
جمعه 13 اردیبهشت 1387, 12:50 عصر
دوستان پیشنهادی برای این تاپیک ندارن؟
که ادامش چی باشه؟
و یا ...!؟

با سلام و تشکر از آموزش خوبتون.

من دو تا پیشنهاا دارم.
لطفا راجع به مباحث کامپوننت و Dll توضیح تئوری بیشتر بگید.
همچنین در مورد نحوه دستکاری کامپوننتهای دیگه هم توضیح بدین(البته در صورت وجود سورس)

مرسی

peymannaji
جمعه 13 اردیبهشت 1387, 18:12 عصر
با سلام و تشکر از آموزش خوبتون.

من دو تا پیشنهاا دارم.
لطفا راجع به مباحث کامپوننت و Dll توضیح تئوری بیشتر بگید.
همچنین در مورد نحوه دستکاری کامپوننتهای دیگه هم توضیح بدین(البته در صورت وجود سورس)

مرسی



موافقم ...

eyes_shut_number1
جمعه 13 اردیبهشت 1387, 18:19 عصر
okey
!
پس به عنوان پست بعدی دستکاری کردن دی ال ال ها رو میگم!

masoodp666
شنبه 14 اردیبهشت 1387, 01:07 صبح
خیلی هم خوب و عالی.
فکر کنم در صورت ادامه دادن این تاپیک مطالب خوبی ازش در بیاد.

danial82
پنج شنبه 26 اردیبهشت 1387, 20:20 عصر
یه سوال
بعضی از کامپوننتها که ظاهر گرافیکی دارن داری contextmenu هستند که برخی از پراپرتیها رو میشه توسط اون مقدار دهی کرد
این رو چجوری میشه انجام داد؟

eyes_shut_number1
جمعه 27 اردیبهشت 1387, 09:53 صبح
توی یکی از تاپیک ها عرض کردم میتونی از smart tag کمک بگیری که لینک دانلودشو دادم

mazoolagh
شنبه 28 اردیبهشت 1387, 23:47 عصر
درست کردن ستونهای بر اساس usercontrol در datagridview هم کار جالب و پیچیده ای است. کسی تجربه اش رو داره؟

danial82
سه شنبه 21 خرداد 1387, 14:45 عصر
در مورد smart tag در #C كسي مطلبي نداره؟

e601
سه شنبه 21 خرداد 1387, 21:51 عصر
با سلام
دوستان عزیز مخصوصا eyes_shut_number1 من یه سوال در مورد ساخت کامپوننت دارم و اونم اینه که آیا میشه در دات نت یه پروژه برای ساخت اکتیوایکس یا همون کامپوننت جدید ایجاد کرد و در اون پروژه از ocx یا dll های دیگه استفاده کرد؟؟؟؟

مثلا کامپوننت ما MyControl باشه و برای طراحیش از 1DLL و 2DLL و 1OCX استفاده کرد و موقع کامپایل فقط همون MyControl کامپایل بشه ، یعنی ما امکانات اون سه فایل رو بتونیم تحت کامپوننت خودمون همراه با ویژگیهای جدید داشته باشیم؟؟؟؟؟؟؟؟؟

از دوستان خواهش میکنم اگه کسی اطلاعاتی داره در اختیار من و بقیه اعضا هم قرار بده...

مسعود تقوائی
دوشنبه 21 مرداد 1387, 14:03 عصر
ممنون دوست عزیز

یک برنامه نویس
دوشنبه 28 مرداد 1387, 15:26 عصر
سلام
مثل این که این آموزش ساده اصلا یه درد دوستان نخرده
اصلا استقبالی نشد
دوست عزیز اگه پیامهای تشکر زیر پستهاتو نگاه کنی متوجه می شی که خیلی ها دارند از لطفی که کردی تشکر می کنند. البته استفاده کننده ها همشون مثل من با پیغام تشکر نمی کنند.
درهرصورت کارت ای وَل داره (Eyval). دمت هم گرم. لطفا ادامه بده.

mojde_171261
دوشنبه 04 شهریور 1387, 14:10 عصر
با سلام ,
ممنون از مطلب جالبتون...
یه سوال داشتم و اون هم این بود که اگر بخواهیم کامپوننت تحت وب بنویسیم باید چی کار کنیم
راستش من یه قسمتی با عنوان webcontrol library دیدم اما وقتی بازش می کنم فقط قسمت کد نویسی داره و داخلش چیزی برای design پیدا نمی کنم ...
اگر ممکنه راهنمایی کنید...
با تشکر...

jalalnooritehrani
یک شنبه 28 مهر 1387, 13:11 عصر
1- چطور میتوان آیکن کامپونت را تغییر داد
2- چه فرقی بین ocx با کامپونت (dll) هست
3- آیا ocx مانند bv6 باید ریجستر شود یا اضافه کردن به رفرنس کار تمام میشه

odiseh
دوشنبه 29 مهر 1387, 08:11 صبح
سلام آقای eyes_shut_number1،
تشکر از شما بابت این تاپیک مفید.
من یه سوال دارم آیا برای درست کردن یه UserControl ، راهی به جز استفاده از نوع پروژه Windows Control Library هست؟ مثلا میشه از ClassLibrary برای درست کردن Usercotrol استفاده کرد؟ (ببخشید من یه کم گیج شدم و علش خوندن یهمقاله از سایت CodeProject هست)

Mostafa_Sabeti
سه شنبه 30 مهر 1387, 08:43 صبح
میشه در مورد ساختن کامپوننت برای وب هم توضیحی بدید.
ممنون

mortezakhodayar
پنج شنبه 24 بهمن 1387, 13:18 عصر
تشکر لطفآ ادامه بدین........................؟

mortezakhodayar
پنج شنبه 24 بهمن 1387, 13:26 عصر
چگونه Activex بسازیم

:متفکر::متفکر::متفکر::متفکر:: وس:

nokhodsiah2001
شنبه 26 بهمن 1387, 14:52 عصر
دوست عزیز سلام

بابت مطالب مفیدتون تشکر می کنم لطفاً در رابطه با ایجاد یک Class Library جهت قفل گذاری روی نرم افزار کار رو ادامه بدین ... فکر کنم برای همه می تونه مفید باشه همچنین راهی اگر برای جلوگیری از debug کردن خروجی پروژه ( Dll ) می شناسید معرفی کنید

mrfarid2003
جمعه 22 بهمن 1389, 16:26 عصر
سلام
آموزش خوبی بود. الان 3 سال گذشته بازم ازت تشکر میشه. حال میکنی؟:تشویق:

اباصلتی
یک شنبه 21 فروردین 1390, 19:25 عصر
عالی بود . متشکرم

parsdarab
یک شنبه 21 فروردین 1390, 22:44 عصر
سلام من یه مطلب از کسی شنیدم که این کارو می کنه
یه textbox رو فرم داره بعد داخل این textbox در زمان اجرا کد می نویسه مثلا
me.text="aaaaaa" ok
بعد وقتی روی یه دکمه کلیک می کنه این کد رو تبدیل به DLL میکنه بعد این کد اجرا میشه و متن فرم تغییر می کنه.
این داستانش چیه؟

user22
یک شنبه 01 خرداد 1390, 10:41 صبح
آقا دستت درد نکنه . لطفا ادامه بده . بهش خیلی نیاز دارم

nowar1352
جمعه 31 تیر 1390, 01:06 صبح
سلام دوستان!
اگه تو این یکی دوروز توی این تالار بوده باشین دیده بودین که بنده تاپیکی دادم مبنی بر طریقه ساختن کامپوننت!
چون مدت زیادی بود کار نکرده بودم فراموش کردم!
و البته جوابی هم از دوستان دریافت نکردم با یکم سرچ کردن پیدا کردم چیزی که میخواستم که ظاهرا توی این سات نبود شایدم من پیدا نکردم
با خودم گفتم برای دوستانی که مثل من فراموششون شده بود یا اونایی که شاید بلد نیستن طریقه درست کردن کامپوننت و دی ال ال رو قرار بدم.
امید وارم کمک کنه و کم اشکال باشه
کامپوننت چیه؟ کامپوننت یه قسمت قابل استفاده مجدد (یا همون ری یوز ایبل) که قسمتی از کد های کتابخونه میشه.
این کد با ارث بری قابل استفاده مجدد یه نکته ای که نباید فراموش بشه اینه که نام کامپوننت هاتون باید تا حد امکان کوچیک باشه و نشون بده که این کامپوننت میخواد چیکار کنه.

خوب در ابتدا از منوی فایل نیو پروجکت رو انتخاب کنید و از قسمت زبان وی بی ویندوز کنترل لایبراری رو انتخاب کنید

File->New Project->Visual Basic-> Windows Control Library

یه پروژه باز شد که ضفحه اولش کوچیکه! فرض کنید میخواین یه تکسباکس درست کنید که فقط عدد بگیره و اگه حرف وارد شد یه اررور پرووایدر (Error Provide)به کاربر اعلام خطا کنه.همچنین رنگ پس زمینه با فکوس شدن و از دست دادن تغییر کنه!؟
فقط کافیه این کد رو بعد از اضافه کردن یک تکس باکس و یه اررور پرووایدر به کد ها تون اضافه کنید


Public Class UserControl1
Private Sub TextBox1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.GotFocus
TextBox1.BackColor = Color.Yellow
End Sub
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles
TextBox1.KeyPress If Not (Asc(e.KeyChar) > 48 And Asc(e.KeyChar) < 59) Then e.Handled = True ErrorProvider1.SetError(TextBox1, "شما تنها عدد میتوانید وارد کنید") Else
ErrorProvider1.Clear()
End If
End Sub
Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles
TextBox1.LostFocus TextBox1.BackColor = Color.White
End Sub
Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class


خوب بیشتر کار تموم شد!
حالا وقتشه که روی بویلد (Build)رفته و پروژه رو بویلد کنید WindowsControlApplication1Build->Build
اگه برین توی فولدری که پروژه رو ذخیره کردین وارد پوشه بین (bin)شده و بعد وارد پوشه ریلیز (release)بشین ائونجا یه فایل با پسوند دی ال ال میبینید
WindowsControlLibrary1->Bin->Release->WindowsControlLibrary1.dll

این اسمها برای پروژه منه اگه شما اسم پروژه رو تغییر دادین طبیعتااسم ها هم تغییر مینند. این فایل دی ال ال است که شما ساختید
حالا یه پروژه دیگه باز کنید
File->New Project->Visual Basic->Windows Application
برید روی تولباکس (ToolBox)و کلیک راست کنید و Choose Items ... رو اتخاب کنید!
صفحه ای باز میشه روی دکمه بروز کلیک کنید و برید توی او پروژه ای که دی ال ال ساختید و فایل دی ال ال رو اضافه کنید و بعد دکمه اوکی رو بزنید یک شکل چرخ دنده که ایکن دیفالت(Default) هست اضافه میشه. اون رو درگ دراپ(Drag & Drop) کنید روی فرمتون همین بود!
اینم ساخت یه دی ال ال ساده!
به سادگی میتونید از این راه ایده بگیرید کامپننت های خفن درست کنید
خوبه که بدونین که کاپننت نویسی درامد بالای داره(به شرط حرفه ای بودن) امید وارم تونسته باشم به سادگی این روش رو گفته باشم
اشکال زیاد داره به بزرگی خدتون ببخشید



استاد گرامي من ميام يه ويندوزكلاس لايبرري ميسازم يه تكست باكس و يه باتم بغل هم ميزارم تو صفحه بعدشم ميخوام اين كنترل تركيبي از يه تكست باكس ارث بري كنه ولي اين خط ارور ميده

Inherits System.Windows.Forms.TextBox
Add Refrence iهم كردم ولي بازم ارور داده چكار كنم خيلي ببخشيد كه وقت تو ميگرم لطفآ كمكم كنيد سپاس گذارم

ms_vb1987
سه شنبه 18 مرداد 1390, 09:33 صبح
ممنون از آموزشتون

ms_vb1987
سه شنبه 18 مرداد 1390, 09:38 صبح
لطفا طریقه ساخت اشیا رو بدون ارث بری از هیچ شی ای (حتی User control) آموزش بدید

amamam
یک شنبه 28 اسفند 1390, 01:28 صبح
سلام خیلی ممنون. مطمئن باشید که به درد خیلی ها می خوره. مثل من که تازه کارم.
اگه ممکنه نحوه اضافه کردن کامپوننتی مثل این رو تو ضیح بدین
http://barnamenevis.org/attachment.php?attachmentid=27283&d=1231656946
دوستان پیشنهادی برای این تاپیک ندارن؟
که ادامش چی باشه؟
و یا ...!؟