ایجاد یک تابع برای استفاده در فرم های مختلف برنامه
سلام
فرض کنید برنامه دارای چند فرم می باشد و در هر فرم تعدادی کنترل از نوع تکست باکس و یا لیبل وجود دارد . تعداد کنترل ها در هر فرم متغییر است
میخواهم یک تابع (فانکشن ) داشته باشم با 10آرگومان ورودی( به تعداد حداکثر کنترل های فرم ها)
میخواهم وقتی این تابع رو در هر فرم فراخوانی می کنم مثلاً تکست باکس های آن فرم تهی شود و یا کپشن لیبل های مشخصی که بر روی فرم است پاک شود.
نمیدونم آیا امکان نوشتن چنین تابعی وجود دارد یا نه ؟
با تشکر
نقل قول: ایجاد یک تابع برای استفاده در فرم های مختلف برنامه
سلام
فرض بفرمائیدیک تابع عمومی بصورت زیر داریم
Public Function VisTxt(Txt1 As TextBox, Txt2 As TextBox, Txt3 As TextBox)
Txt1.Visible = False
Txt2.Visible = False
Txt3.Visible = False
End Function
حالا فرمی داریم که فقط 2 تکست باکس دارد . میخواهم با استفاده از تابع فوق این دو تکست باکس را مخفی کنم
فراخوانی تابع :
Call VisTxt(text2, Text3)
در کد فراخوانی فوق چون بجای سه ورودی دو ورودی درج شده خطا صادر میشود ولی اگر فرم من 3 تکست باکس داشته باشد مشکلی وجود ندارد
در کل منظورم این است که آرگومان های اون تابع عمومی باید به چه صورتی نوشته شود که در فراخوانی اگر تعداد ورودی ها هم کمتر از تعداد آرگومان ها بود مشکلی ایجاد نشود
آرگومان از نوع اختیاری باشد
با تشکر
نقل قول: ایجاد یک تابع برای استفاده در فرم های مختلف برنامه
نقل قول:
نوشته شده توسط
atf1379
سلام
فرض بفرمائیدیک تابع عمومی بصورت زیر داریم
Public Function VisTxt(Txt1 As TextBox, Txt2 As TextBox, Txt3 As TextBox)
Txt1.Visible = False
Txt2.Visible = False
Txt3.Visible = False
End Function
حالا فرمی داریم که فقط 2 تکست باکس دارد . میخواهم با استفاده از تابع فوق این دو تکست باکس را مخفی کنم
فراخوانی تابع :
Call VisTxt(text2, Text3)
در کد فراخوانی فوق چون بجای سه ورودی دو ورودی درج شده خطا صادر میشود ولی اگر فرم من 3 تکست باکس داشته باشد مشکلی وجود ندارد
در کل منظورم این است که آرگومان های اون تابع عمومی باید به چه صورتی نوشته شود که در فراخوانی اگر تعداد ورودی ها هم کمتر از تعداد آرگومان ها بود مشکلی ایجاد نشود
آرگومان از نوع اختیاری باشد
با تشکر
Public Function VisTxt(Txt1 As TextBox, Optional Txt2 As TextBox, Optional Txt3 As TextBox)
Txt1.Visible = False
If Not Txt2 Is Nothing Then Txt2.Visible = False
If Not Txt3 Is Nothing Then Txt3.Visible = False
End Function
نقل قول: ایجاد یک تابع برای استفاده در فرم های مختلف برنامه
نقل قول:
نوشته شده توسط
the king
Public Function VisTxt(Txt1 As TextBox, Optional Txt2 As TextBox, Optional Txt3 As TextBox)
Txt1.Visible = False
If Not Txt2 Is Nothing Then Txt2.Visible = False
If Not Txt3 Is Nothing Then Txt3.Visible = False
End Function
:تشویق::تشویق::تشویق:
نقل قول: ایجاد یک تابع برای استفاده در فرم های مختلف برنامه
نقل قول:
نوشته شده توسط
the king
Public Function VisTxt(Txt1 As TextBox, Optional Txt2 As TextBox, Optional Txt3 As TextBox)
Txt1.Visible = False
If Not Txt2 Is Nothing Then Txt2.Visible = False
If Not Txt3 Is Nothing Then Txt3.Visible = False
End Function
سلام
اگه عمل مخفی کردت تکست باکس ها رو در حلقه for ... next قرار بدهیم کد رو به چه صورتی باید نوشت ؟
من کد رو بصورت زیر تغییر دادم ولی خطا میده
Public Function VisTxt(Txt1 As TextBox, Optional Txt2 As TextBox, Optional Txt3 As TextBox)
dim i as integer
for i=1 to 3
If Not "Txt" & i Is Nothing Then "Txt" & i.Visible = False
End Function
نقل قول: ایجاد یک تابع برای استفاده در فرم های مختلف برنامه
نقل قول:
اگه عمل مخفی کردت تکست باکس ها رو در حلقه for ... next قرار بدهیم کد رو به چه صورتی باید نوشت ؟
1- اسامی کنترل ها رو با , یا ; JOIN کنین و بصورت یک STRING یکجا به روتین بفرستین.
2- در روتین اول اسامی رو SPLIT و بعد هر کدوم رو بصورت زیر باهاش کار کنین:
me.controls(control_name).visible=false
3- اگر همه اسامی کنترل ها مشابه هست مثل همین Txt1 , txt2 , ...
FOR i=1 TO 3
me.controls("Txt" & TRIM(i)).visible= false
NEXT
1 ضمیمه
نقل قول: ایجاد یک تابع برای استفاده در فرم های مختلف برنامه
نقل قول:
نوشته شده توسط
mazoolagh
1- اسامی کنترل ها رو با , یا ; JOIN کنین و بصورت یک STRING یکجا به روتین بفرستین.
2- در روتین اول اسامی رو SPLIT و بعد هر کدوم رو بصورت زیر باهاش کار کنین:
me.controls(control_name).visible=false
3- اگر همه اسامی کنترل ها مشابه هست مثل همین Txt1 , txt2 , ...
FOR i=1 TO 3
me.controls("Txt" & TRIM(i)).visible= false
NEXT
ممنون جناب استاد mazoolagh !
حالت سوم مد نظر هست و میخوام تابع رو بصورت عمومی تعریف کنم که در فرم های مختلف از اون استفاده کنم به همین خاطر یک متغییر عمومی بصورت Public frm As Form تعریف کردم و در فرم این متغییر رو بصورت Set frm = Me به فرم مربوطه نسبت میدم و بجای me در حلقه از frm استفاده می کنم ولی خطا صادر میشه
نقل قول: ایجاد یک تابع برای استفاده در فرم های مختلف برنامه
سلام به همه من از VB6 شروع کردم به برنامه نویسی برای همین هم تا اونجایی که یادمه می شد از ورودی ParamArray هم در متود ها استفاده کرد.
بنابراین نیازی نیست ورودی ها رو بصورت جداگونه تعریف کنید ی ورودی ParamArray برای متود با تایپ مورد نظر تعریف می کنید و از اون ورودی بعنوان یک آرایه با عناصری از همون تایپ استفاده می کنید.
مثال:
Public Sub Visiblity(ParamArray args() As TextBox)
'Statements
End Sub
نقل قول: ایجاد یک تابع برای استفاده در فرم های مختلف برنامه
نقل قول:
نوشته شده توسط
ROSTAM2
سلام به همه من از VB6 شروع کردم به برنامه نویسی و به زبان بیسیک علاقه زیادی دارم برای همین هم تا اونجایی که یادمه می شد از ورودی ParamArray هم در متود ها استفاده کرد.
بنابراین نیازی نیست ورودی ها رو بصورت جداگونه تعریف کنید ی ورودی ParamArray برای متود با تایپ مورد نظر تعریف می کنید و از اون ورودی بعنوان یک آرایه با عناصری از همون تایپ استفاده می کنید. تمام.
مثال:
Public Sub Visiblity(ParamArray args() As TextBox)
'Statements
End Sub
https://groups.google.com/g/microsof.../c/tQKP_Z57JJs
احسنت !:تشویق::تشویق::تشویق: