PDA

View Full Version : چگونه با اکتیوکسها مانند یک تابع رفتار کنم؟



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

Vahid_Nasiri
یک شنبه 31 فروردین 1382, 12:07 عصر
نه خیر! آن فایل کاملا هم درست عمل می کند و من تست کرده ام! فقط باید فرمت ورودی به آن را درست داد. که یک مثال کوچک هم در پایین صفحه آن هست. اگر با آن کارت راه نیافتاد (!) که باید بیفتد! در قسمت کلکسیون های فارسی نویسی دو تابع دیگر برای تبدیل تاریخ وجود دارد که بسیار مفید هستند.

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

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

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

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

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

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

باز هم از شما تشکر میکنم.

[list=][/list]

Vahid_Nasiri
دوشنبه 01 اردیبهشت 1382, 13:14 عصر
در مورد انگلیسی نویسی کافی است که دکمه scroll lock را روشن کنید.

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



Private Sub Form_Load()

Dim xx As New ScriptControl
xx.Language = "vbscript"

' Create the function.
Dim strFunction As String
strFunction = _
"Function ReturnThis(x, y)" & vbCrLf & _
" ReturnThis = x * y" & vbCrLf & _
"End Function"
' Add the code, then run the function.
xx.AddCode strFunction
MsgBox xx.Run("ReturnThis", 3, 25)

End Sub

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