نمایش نتایج 1 تا 32 از 32

نام تاپیک: ساخت ocx قابل استفاده در vb6

  1. #1

    ساخت ocx قابل استفاده در vb6

    سلام.
    چطور میشه تو C#‎ کامپوننت ocx درست کرد که تو ویبی هم بشه ازش استفاده کرد؟

  2. #2
    سلام.
    اصلا میشه تو دات نت ocx ساخت؟
    اگه نمیشه چطور میشه dll هایی که تو دات نت میسازیم تو ویبی استفاده کنیم؟
    نه حتما با C#‎ کلا با دات نت.

  3. #3
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427
    با سلام دوست عزیز ( اینهم جهت سایر عزیزان )
    پاسخ شما مثبت است وشدنی است در Help MSDN جستجو کنید در خصوص nampespace
    System.Runtime.InteropServices و فایلهای تبدیل کننده به OCX تحت عناوین
    Tlbexp.exe , Tlbimp.exe

  4. #4
    سلام دوست عزیز ،

    Tlbexp.exe generates a type library that contains definitions of the types defined in the assembly. Applications such as Visual Basic 6.0 can use the generated type library to bind to the .NET types defined in the assembly.
    ref : http://msdn.microsoft.com/en-us/libr...2c(VS.80).aspx
    I've just started tweeting!
    @Alireza_Maddah

  5. #5
    سلام.
    ولی خروجی این فایل tlb هست نه ocx. من ocx میخوام. میخوام کامپوننت گرافیکی داشته باشم.
    جناب کفاش منتظر سورست هستم.

  6. #6
    چی شد سورسو پیدا نکردی؟

  7. #7

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    این مثالی که گذاشتم این مشکل رو حل میکنه.
    فایل های ضمیمه فایل های ضمیمه

  8. #8

    نقل قول: ساخت ocx قابل استفاده در vb6

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

  9. #9
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: ساخت ocx قابل استفاده در vb6

    دوست عزیز سلام
    کد مود نظر یک مثال ساده بود که در ذیل برایت قرار میدهم ولی نکته اینجاست که نمیدانم تبدیل کننده چه بوده است در واقع معکوس برنامه Tlbexp.exe .

    using
    System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    namespace ComProvider
    {
    publicclassClass1
    {
    publicvoid f(int i)
    {
    MessageBox.Show(i.ToString());
    }
    }
    }

  10. #10

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    فکر نمیکنم مثالت جواب سوالم باشه. توضیح بده.

    وقتی کامپوننت رو به صورت ریفرنس به پروژه ویبی اضافه میکنم میشه به همه ابجکت ها و اشیا رو کامپوننت و همچنین میشه به پروپرتی هاشون دسترسی داشت. ولی وقتی ویزیبل کامپوننت رو true میکنم رو فرم ظاهر نمیشه.
    ولی وقتی با دستور control.add یه نمونه از ریفرنس به روی فرم میارم و ویزیبلش رو تورو میکنم رو فرم ظاهر میشه ولی نمیشه به هیچ کدوم از اشیا دسترسی داشت.
    این مثال رو ببینید میتونید کاری کنید که این مشکل حل شه.
    http://payman.parsaspace.com/Example/Test.zip

  11. #11
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام
    کد شما فکرم را مشغول کرده اول اینکه موقع اجرا خطا میگیرد ولی خوب است روی این ایده دارم کار میکنم
    اگر جواب گرفتم حتما با شما در میان خواهم گذاشت. با تشکر

  12. #12

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    منم که گفتم وقتی ویزیبل رو تورو میکنی نمیشه به پروپرتی ها دسترسی داشت.
    این مشکل هم حل شد.
    یه مثال گذاشتم. ببینید. من برای این که به پروپرتی های اشیای کامپوننتم دسترسی داشته باشم خاصیت modifiers شون رو public میکنم. با این روش میشه پروپرتی های همه اشیای رو کامپوننت رو تغییر داد.
    حتی اگه یه کامپوننت رو تو یه کامپوننت دیگه قرار بدیم با پابلیک کردن این خاصیت میشه پروپرتی های اشیای داخل اون کامپوننت رو هم تغییر داد.
    مثالی که گذاشتم به خوبی مشخص میکنه چی میگم. (Test2.zip)

    حالا من یه کامپوننت از نت گرفتم. مستقیم اوردمش تو ویبی دیدم نمیشه به پروپرتی هاش دسترسی داشت. بعد به یه کامپوننت دیگه اضافش میکنم و modifiers رو هم پابلیک میکنم. ولی باز هم تو ویبی نمیشه به پروپرتی هاش دسترسی داشت. این مشکل رو چطور حل کنم ؟ میگه object requred . مثالش رو هم همراه با خود کامپوننت گذاشتم. (Ques.zip)
    فایل های ضمیمه فایل های ضمیمه

  13. #13

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    این مشکلم حل کردم. البته با یه کلک رشتی.
    کلاس AGauge تو سورس dll از Control ویژگی به ارث میبرد که من با یه نغییر کوچیک این قسمت رو به UserControl تغییر دادم تا تو ویبی نمایان بشه و ظاهر گرافیکی هم داشته باشه. چون من تو ویبی به همه ویژگی ها دسترسی داشتم ولی فقط کامپوننت رو نمیتونستم ظاهر کنم که با این تغییر این مشکل حل شد. به این صورت.
    public partial class AGauge : UserControl
    حالا یه سوال دیگه. این تغییر مشکلی تو کارکرد کامپوننت ایجاد نمیکنه؟

  14. #14
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: ساخت ocx قابل استفاده در vb6

    با سلام
    دوست عزیز چقدر خوب است که تجارب کسب شده را تحت یک تاپیک مفصل مطرح وبه سایرین آموزش دهید چون خیلی کار ویژه ای است واگر دقت کرده باشید کسی در این تاپیک بعلت ویژه گی خاص آن وارد نمیشود. باتشکر

  15. #15

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    درسته. مشکلی بود که کمتر کسی جوابش رو میدونست. به نظر میرسه فقط شما وارد این تاپیک میشید.
    اوردن کامپوننت تو لیست ریفرنس ها کار ساده ای بود. ولی نمایشش روی فرم تبدیل شده بود به یه مشکل. جالبه بگم روش Form1.add.controls و یا روش استفاده از این کامپوننت آخری که به یوزر کنترل تبدیل کردم رو خودم فهمیدم و کسی در این مورد راهنماییم نکرد. کار خسته کننده ای بود ولی به نتیجش میرزید.
    چشم به زودی یه تاپیک در این مورد میزنم و به طور کامل توضیح میدم.

  16. #16

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    بازم سوال.
    دیدید با این روش که گفتم میشه به همه پروپرتی های کامپوننت دسترسی داشت. ولی پروپرتی هارو برامون لیست نمیکنه. باید خودمون بدونیم کامپوننت شامل چه پروپرتی هایی هست.
    به نظر شما راهی وجود داره تا لیست پروپرتی های کامپوننت رو پیدا کنیم؟

  17. #17

    نقل قول: ساخت ocx قابل استفاده در vb6

    مطلب زیر را مطالعه کنید :
    Understanding Classic COM Interoperability With .NET Applications
    آخرین ویرایش به وسیله علیرضا مداح : چهارشنبه 08 خرداد 1387 در 19:41 عصر
    I've just started tweeting!
    @Alireza_Maddah

  18. #18

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    اون روش اولی که کامپوننت رو از تو vb.net میبرد تو vb6 این امکان رو داره که لیست پروپرتی هارو در حالت دیزاین نشون بده. منظورم این روشه که یه مثالم ازش گذاشتم. عملیات رجیستر شدن رو اتوماتیک انجام میده و کامپوننت تو لیست کامپوننت های ویبی6 نمایش داده میشه و میشه مثل کامپوننت های خود ویبی به پروژه اضافش کرد و کشیدش رو فرم.
    حالا تو این روش در حالت عادی در حالت دیزاین لیست پروپرتی ها ناقص هست. مثلا value که مقدار این گیج رو ست میکنه تو ویبی نمایش داده نمیشه. باید یه کاری کرد که لیست پروپرتی ها کامل نشون داده بشه. دیدم کسی این کارو کرده ولی نمیدونم چطور. کسی بلده؟
    فایل های ضمیمه فایل های ضمیمه

  19. #19
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام
    دوست عزیز جناب Payman هر کاری میکنم Test12.tlb رجیستر نمیشود تا بتوانم تست کنم لطفا کمک نمائید

  20. #20

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    این یکی رو که گذاشتم یه تست بکن. اگه اینم نشد برو تو رجیستری کلمه Gauge رو سرچ کن. هر کلید یا ولیویی که پیدا کرد کلیدشو پاک کن.
    بعد دوباره پروژه .NET رو اجرا کن و build کن. بعد یه پروژه ویبی جدید (نه اونی که تو این فایلی هست که من گذاشتم) باز کن و Gauge رو از لیست کامپوننت ها تیک بزن تا به جعبه ابزارت اضافه شه. بعد ببین میتونی جواب سوال منو بدی.
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Payman62 : سه شنبه 14 خرداد 1387 در 12:33 عصر

  21. #21

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    آقای کفاش پروژه رو چک کردی؟

  22. #22

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    یه مشکل دیگه.
    اون مثالی که گذاشته بودم که کامپوننتی میساخت که میشد تو ویبی به صورت اینترفیس ازش استفاده کرد (https://barnamenevis.org/attach...8&d=1211778698) یه مشکلی داره. اول این که اگه بخوای از کامپوننت رو یه سیستم دیگه استفاده کنی حتما باید برنامه دات نتی رو هم اجرا کنی تا کامپوننت رجیستر و قابل استفاده در ویبی بشه.
    دوم این که رو سیستم خودمم چند تا کامپوننت که میسازم با هم قاطی میشن. مثلا من تو ویبی تست1 رو اد میکنم تست2 به جعبه ابزارم اضافه میشه.
    حالا چطور میتونم دستی کامپوننتم رو رجیستر کنم که نه قاطی بشن نه لازم باشه برنامه دات نتی رو سیستم های دیگه هم کامپایل شه؟

  23. #23
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام
    من با 2008 کارمیکنم اصلا اجرا نمیشه و خطا میده منظورم اینکه اضافه میشه ولی روی خط دوم سورس خطا میده چطوری مشکل را حل کنم

  24. #24

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    کدی که ارور میده رو بذار. من چطور بفهمم کدومو میگی.

  25. #25
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: ساخت ocx قابل استفاده در vb6

    با سلام
    در کد قرمز رنگ ذیل :

    Private Sub Command1_Click()
    Set a = Form1.Controls.Add("Test2.Test2", "A")
    a.Visible = True
    a.object.CheckBox1.Text = "BBBBB"
    a.object.test11.Visible = False
    a.object.test11.Visible = True
    a.object.test11.button1.Text = "DDDD"
    End Sub

    این خطا را میدهد :
    Can'at find project or library
    با وجود اینکه Tlb را ریفرنس کرده ام

  26. #26

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    قبلش پروژه دات نت رو کامپایل کردی؟
    آخه اگه یه ریفرنسی هم موجود نباشه پیغام میده
    invalid class strnig
    نه چیزی که شما فرمودی. یه پروژه جدید بساز و دوباره تست کن.

  27. #27
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: ساخت ocx قابل استفاده در vb6

    با سلام
    اتفاقا همین کار را کردم وقتی سورس #C را کامپایل میکنم درست است وقتی تبدیل به Tlb میکنم درست است وحتی ریفرنس میکنم بازهم درست است ولی وقتی در VB اجرا میکنم خطا میدهد برای همین است که سئوال کردم دات نت شما 2008 است ؟

  28. #28

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    نه 2005. ولی بعید میدونم ربطی داشته باشه.

  29. #29

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    یه سوال جدید.
    حالا که با اون مثالی که توضیح دادم (https://barnamenevis.org/attach...8&d=1211778698 ) میشه کامپوننت از تو .net اورد تو ویبی یه مشکل جدید دارم. من میخوام کل پروپرتی های کامپوننت تو ویبی قابل دسترس باشه. ولی تو ویبی نمیشه به پروپرتی های کامپوننت دسترسی داشت. چطور این مشکلو حل کنم؟

  30. #30

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    چی شد مشکل حل شد؟

  31. #31
    کاربر دائمی آواتار ASKaffash
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    تهران
    پست
    2,427

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام
    نه اصلا توی 2008 همین خطا رو که گفته بودم میدهد احتمالا یک فرقی بین 2005 و 2008 در این مورد خاص هست !

  32. #32

    نقل قول: ساخت ocx قابل استفاده در vb6

    سلام.
    یه سوال دیگه.
    فرض یه کامپوننت ساختی که روش یه کلیده که وقتی روش کلیک کنی یه فرم باز میشه. وقتی اینو میاری تو ویبی یه مشکلی پیش میاد. وقتی فرم ویبی باز میشه و کلید رو کلیک میکنی فرم دات نتی باز میشه. تا این جا مشکلی نیست. ولی بعد که ویبی رو استاپ میکنی اون فرم دات نتی همچنان باز میمونه. اگه تو ویبی 2 تا فرم داشته باشی و کامپوننت رو یکی از فرمات باشه و فرم باز شه و کارش تموم شه و بسته شه ولی فضای اشغالی توسط کامپوننت دات نتی همچنان اشغال میمونه و هندل ها رو آزاد نمیکنه. تا زمانی که برنامه ویبی کلا بسته نشه کامپوننت دات نتی باز میمونه. حتی اگه اون فرمی که روش بوده بسته شه.
    حالا من با یه سری ترفند و نوشتن ساب مشکلو موقتا حل کردم. ولی میخوام بدونم چی کار باید کرد که وقتی فرم ویبی بسته شد همه کامپوننت های روش هم بسته شن و فضای اشغالی کاملا آزاد شه.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •