PDA

View Full Version : تعریف پارامتر تابع



mahdyeh
چهارشنبه 28 مرداد 1388, 20:05 عصر
سلام
من می خوام این تابع رو توی کلاس قرار بدم
می خوام با فراخوانیش ، اسم تکست گرفته بشه و دو برار بشه و یا عملیات دیگه روش انجام بشه
من چطور txtName As String ام رو تعریف کنم ؟


Public Function Leave(txtName As String)
txtName.text=txtName.text * 2
End Function



و معادل این کد در vb9 ؟


Public Function Leave(Optional txtName As Variant)

مرسی
;

mahdyeh
چهارشنبه 28 مرداد 1388, 20:16 عصر
وقتی می نویسم
sbtt نام یک تابع دیگرم هست


Public Function Leave(ByVal txtNameTSh As String)
If sbtt(txtNameTSh.Text) = "0" Then
MsgBox("payam")
End If
End Function

ارور میده که :
'Text' is not a member of 'String'
و وقتی


Public Function Leave(ByVal txtNameTSh As Integer)

باز :
'Text' is not a member of 'Integer'.


Dim Tarikh As New Class1
Private txtcode_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MaskedTextBoxDateShamsi.Leave
Tarikh.Leave(txtcode)
End Sub
و برای این از داخل فرم ام ارور میده که :
'System.Windows.Forms.MaskedTextBox' cannot be converted to 'Integer'.

anooshiran
پنج شنبه 29 مرداد 1388, 06:47 صبح
سلام دوست عزيز

شما نيازي به استفاده از text. نداريد . وقتي متغيري را string يا integer تعريف كرده ايد كافي است فقط از نام خود آن متغير استفاده كنيد




Public Function Leave(ByVal txtNameTSh As String)
If sbtt(txtNameTSh) = "0" Then
MsgBox("payam")
End If
End Function



در صمن براي نانگذاري يك تابع يا يك متغير هيچ وقت از كلمات كليدي مثل leave استفاده نكن. conflict ايجاد ميشه

Hossis
پنج شنبه 29 مرداد 1388, 06:56 صبح
شما باید یک خروجی برای تابع در نظر بگیرید و گرنه این تابع بدرد نمی‌خود
شکل کامل این گونه است



Public Function Leave(txtName As String)as string
dim Tx as string =val( txtName) * 2
return tx
End Function


و بعد در یک جای دیگه استفاده می کنید مثل



sub Button1_click(..)...
textbox1.text=leave(textbox1.text)
end sub

mahdyeh
جمعه 30 مرداد 1388, 11:43 صبح
سلام
ممنون از جواب شما
من هم اسم تکست و هم مقدارش رو در کلاس لازم داشتم که این کارو کردم
txtNameDTSh مقدار تکست من است مثل : txtcode.text
و txtNameTSh نام تکست : txtcode


ByVal txtNameDTSh As String, ByVal txtNameTSh As Control
که جواب داد به غیر از یک مورد که !!!!!



txtNameTSh.SelectAll()

Hossis
جمعه 30 مرداد 1388, 12:56 عصر
سلام
.... جواب داد به غیر از یک مورد که !!!!!



txtNameTSh.SelectAll()


رول selectall مربوط به تکست باکس است نه به یک رشته string لذا شما باید این کد را بنویسید


txtcode.selectall

mahdyeh
جمعه 30 مرداد 1388, 16:56 عصر
txtNameTSh ای که به عنوان پارامتر برای تابع تعریف کرده ام (که نام تکست را میگیرد) از نوع Control می باشد نه String
من نام تکست رو میگیرم و میزارم داخل txtNameTSh که ازشم استفاده می کنم ولی برای

()txtNameTSh.SelectAll

جواب نمیده

و این کد رو نمیتونم بنویسم

txtcode.selectall

چون نام همه ی تکست هام که txtcode نیستش
ممکنه 10 بار این تابع رو فراخوانی کنم و هر بار نام نکست ام متفاوت باشه از فرم های مختلف

;

anooshiran
جمعه 30 مرداد 1388, 17:06 عصر
سلام دوست عزيز

كد هايي را كه باهاش مشكل داري بطور كامل روي سايت بگذار تا ببينم شايد بتوان كمك كرد

mahdyeh
جمعه 30 مرداد 1388, 17:19 عصر
سلام
این یک برنامه ی تبدیل تاریخ میلادی و شمسی به همدیگه که از همین سایت دانلود کردم
این سورس و چندتا سورس دیگه که هرچی هست می خوام انتقالشون بدم به یک کلاسو هرچی لازم ست از کلاس فراخوانی بشه ولی نمیتونم :ناراحت:
حتی وقتی فرم لود میشه بعضی عملیاتی که انجام میشه هم می خوام یک تابع داشته بام که از کلاس فراخوانی بشه و دیگه لازم نباشه داخل هر فرم ام همین کدهارو تکرار کنم
مثلا می خوام برای همشون اولش
1) تاریخ ها تبدیل به شمسی بشن
2) فرم وسط صفحه قرار بگیرد
3) تکستها و کمبوهام خالی بشند
4) و ...
:افسرده:

anooshiran
جمعه 30 مرداد 1388, 17:37 عصر
سلام دوست عزيز

ضميمه زير تغير يافته برنامه خودت هست كه يك كلاس به نام Tarikh داره . باز هم اگر مشكلي بود بگو

mahdyeh
جمعه 30 مرداد 1388, 17:49 عصر
مرســـی
فقط یه چیز دیگه
شما این Shared نوشتید که دیگه داخل فرم ننوشتید Tarikh.MiladiToShamsi ؟؟؟

anooshiran
جمعه 30 مرداد 1388, 17:52 عصر
سلام دوست عزيز

وقتي در يك كلاس يك تابع shared مي شود بدين معناست كه مي توان آن را از هر جايي فراخواني كرد

اوبالیت به بو
جمعه 30 مرداد 1388, 20:33 عصر
و معادل این کد در vb9 ؟

کد:
Public Function Leave(Optional txtName As Variant)
مرسی


http://jelle.druyts.net/2003/05/17/OptionalParametersVBNET.aspx

Hossis
شنبه 31 مرداد 1388, 00:10 صبح
سلام
اتی وقتی فرم لود میشه بعضی عملیاتی که انجام میشه هم می خوام یک تابع داشته بام که از کلاس فراخوانی بشه و دیگه لازم نباشه داخل هر فرم ام همین کدهارو تکرار کنم
:افسرده:

برای این کار لازمه تابع خود را در یک ماژول(نه کلاس) به صورت Public تعریف کنید بعد در هر کلاس دیگر یا فرمی می تونید از اون استفاده کنید