PDA

View Full Version : سوال در مورد ماژول؟؟



سپهر-111
پنج شنبه 29 تیر 1391, 12:28 عصر
سلام دوستان گل:قلب:
چند تا سوال داشتم در مورد تابع
سوال اول: چرا باید فانکشن های های که عمومی هستن رو در ماژول تعریف کرد؟؟

سوال دوم : چرا تو این فانکشن که نوشتم نمیتونم text1.text و بقیه تکست باکسها را از ماژول مقداردهی کنم

وقتی برنامه رو اجرا میکنم از توی ماژول ، ارورر Object Request میده(ایا تو ماژول نمیشه یک شی از داخل فرم رو صدا زد؟؟. ایا داخل فرم برانمه باید چیزی بنویسیم که ما داریم از ماژول استفاده میکنیم؟؟

ممنون میشم کمکم کنید :تشویق:

باتشکر


Public Function Table_Conversation(ByVal Nam As String, ByVal _
Start As Integer, ByVal End1 As Integer,) As String
Text1.Text = Nam
Text2.Text = Start
Text3.Text = End1
End Function

MohammadGh2011
پنج شنبه 29 تیر 1391, 12:55 عصر
سلام عليکم

چرا تو این فانکشن که نوشتم نمیتونم text1.text و بقیه تکست باکسها را از ماژول مقداردهی کنم

Public Function Table_Conversation(ByVal Nam As String, ByVal _
Start As Integer, ByVal End1 As Integer,) As String
Text1.Text = Nam
Text2.Text = Start
Text3.Text = End1
End Function

خب اين يک تابع نيست به خاطر اينکه 1-درتابع نبايد از مشخصه ها استفاده کنيم(شما در اينجا از text1,... استفاده کرديد)و 2- نام تابع رو در آخر تابع مقدار دهي نکرديد، و نتيجه ميگيريم که تکست هاي شما مقدار دهي نميشه.


براي اينکه تکستهاتون رو مقدار دهي کنيد بايد از روال يا Sub استفاده کنيد و بايد در خود فورم بنويسيد به اين صورت:
Private Sub Command1_Click()
Call s(1, 10, 3)
End Sub

Public Sub s(d, f, g As Integer)
Text1 = d
Text2 = f
Text3 = g
End Sub


موفق باشيد

سپهر-111
پنج شنبه 29 تیر 1391, 13:33 عصر
سلام عليکم

خب اين يک تابع نيست به خاطر اينکه 1-درتابع نبايد از مشخصه ها استفاده کنيم(شما در اينجا از text1,... استفاده کرديد)و 2- نام تابع رو در آخر تابع مقدار دهي نکرديد، و نتيجه ميگيريم که تکست هاي شما مقدار دهي نميشه.


براي اينکه تکستهاتون رو مقدار دهي کنيد بايد از روال يا Sub استفاده کنيد و بايد در خود فورم بنويسيد به اين صورت:
Private Sub Command1_Click()
Call s(1, 10, 3)
End Sub

Public Sub s(d, f, g As Integer)
Text1 = d
Text2 = f
Text3 = g
End Sub


موفق باشيد


سلام
ممنون دوست من
بله من یادم رفته بود که توی سوالم خروجی تابع رو هم ذکر کنم
البته با افزودن FORM1.به اول شی ها در ماژول مشکلم حل شد
ولی سوال دیگه ام این بود که لزومی داره که حتما تابع عمومی رو توی ماژوال تعریف کنیم؟؟
ممنون از توجه شما

مهرداد صفا
پنج شنبه 29 تیر 1391, 14:07 عصر
سلام
معمولا توابع و متعیرهای عمومی در ماجولها تعریف میشوند تا از طریق تمام فرمها و کلاسهای موجود در پروژه قابل دسترس باشند. علاوه بر این بعضی از مقادیر مانند آرایه ها و توابع خارجی مثل win api فقط در ماجول موتوانند به صورت public تعریف شوند.
برای دسترسی به مقداری از فرم یا کلاس دیگر باید از نام کلاس مورد نظر در اول نام عضو استفاده شود:
form1.text1.text="..."
برای دسترسی به اعضای ماجول وجود ماجول در پروژه کافی میباشد و نیاز به معرفی دیگری نیست.
میان function و sub صرف نظر از مقدار برگشتی function تفاوت دیگری وجود ندارد.
موفق باشید!