# Native Code > برنامه نویسی در 6 VB > کامپوننت ها و ابزارهای کاربردی در VB6 >  چگونه با اکتیوکسها مانند یک تابع رفتار کنم؟

## توسلی

چگونه میتوانم از یک فایل او-سی-ایکس (نظیر مبدلهای تاریخ‌‌)،مانند یک تابع پابلیک استفاده کنم،نه به عنوان یک کنترل قرار گرفته روی یک فرم.البته آقای نصیری در سایتشان سورس چنین ماجولی را در فایل فارسی دیت.پی دی اف اراپه کرده اند،ولی متاسفانه به دلیل وجود دو اشکال در قسمت تبدیل شمسی به میلادی ماجول،غیر قابل استفاده است.اول اینکه سالهای کبیسه را نمیشناسد،دوم اینکه هنگام دریافت تاریخ نا معتبر،ارور نمیدهد و میخواهد آنرا هم به میلادی برگرداند(مانند33/12/81).امیدوارم این ایرادات را بر طرف نمایند،یا کسی پیدا شود که با پاسخ به این سوال،مشکلم را حل کند.متشکرم.[/code][/b]

----------


## Vahid_Nasiri

نه خیر! آن فایل کاملا هم درست عمل می کند و من تست کرده ام! فقط باید فرمت ورودی به آن را درست داد. که یک مثال کوچک هم در پایین صفحه آن هست. اگر با آن کارت راه نیافتاد (!) که باید بیفتد! در قسمت کلکسیون های فارسی نویسی دو تابع دیگر برای تبدیل تاریخ وجود دارد که بسیار مفید هستند.

در مورد ocx ها هم فرقی نمی کند. باید یک ریفرنس از آنها ایجاد کنی و سپس مانند active-x dll با آنها برخورد نموده و متغیر جدید را به این صورت ویژه ایجاد کنی.

----------


## توسلی

> نه خیر! آن فایل کاملا هم درست عمل می کند و من تست کرده ام! فقط باید فرمت ورودی به آن را درست داد. که یک مثال کوچک هم در پایین صفحه آن هست. اگر با آن کارت راه نیافتاد (!) که باید بیفتد! در قسمت کلکسیون های فارسی نویسی دو تابع دیگر برای تبدیل تاریخ وجود دارد که بسیار مفید هستند.
> 
> در مورد ocx ها هم فرقی نمی کند. باید یک ریفرنس از آنها ایجاد کنی و سپس مانند active-x dll با آنها برخورد نموده و متغیر جدید را به این صورت ویژه ایجاد 
> کنی.


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

نخست اینکه اگر کاربر تاریخی مانند 28/12/1379(سال کبیسه) را به این تابع بدهد،2001/19/03 را دریافت میکند در حالیکه باید 2001/18/03 را بگیرد.
دوم اینکه تاریخهای نامعتبری مانند 32/12/1379(و الی آخر) را هم به میلادی تبدیل میکند که برای ثبت در جداول بسیار خطرناک است.اگر بتوانید یک ارور قابل پیگیری به این تاریخها نسبت دهید بسیار کاراتر خواهد بود.

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

باز هم از شما تشکر میکنم.
&#91;list=&#93;&#91;/list&#93;

----------


## Vahid_Nasiri

در مورد انگلیسی نویسی کافی است که دکمه scroll lock را روشن کنید.

در مورد یک کد ساده برای استفاده از اکتیو ایکس ها فقط به صورت ریفرنس در منوی ریفرنس در قسمت منوی پروژه :
می خواهیم از microsoft script control که یک اکتیو ایکس است استفاده کنیم. نام فایل آن msscript.ocx است.
از منوی پورژه در قسمت ریفرنس این آیتم  را انتخاب کنید.
سپس از کد زیر برای استفاده از این اکتیو ایکس بدون قرار دادن آن روی فرم می توان استفاده کرد


Private Sub Form_Load&#40;&#41;
  
   Dim xx As New ScriptControl
   xx.Language = "vbscript"
  
   ' Create the function.
   Dim strFunction As String
   strFunction = _
   "Function ReturnThis&#40;x, y&#41;" & vbCrLf & _
   " ReturnThis = x * y" & vbCrLf & _
   "End Function"
   ' Add the code, then run the function.
   xx.AddCode strFunction
   MsgBox xx.Run&#40;"ReturnThis", 3, 25&#41;
  
End Sub

----------


## توسلی

آقای نصیری عزیز،
از کمک شما بسیار متشکرم.سعی میکنم از این روش جهت بکارگیری فایلهایی
نظیر Convertor.ocx  یا  ConvertDate.ocx  در یک Standard Module به صورت  Public استفاده کنم.امیدوارم اینبار دیگر به مشکلی بر نخورم.
با سپاس.

----------

