close
تبلیغات در اینترنت
فراخوانی روال ها-اعلان متغير ها
loading...

آموزش برنامه نویسی

اموزش,آموزش,آموزش برنامه نویسی,برنامه نویسی,ویژوال بیسیک,آموزش کامل برنامه نویسی,کار با ویژوال بیسیک,دستورات ویژوال بیسیک,دستورات Visual basic,آموزش vb,آموزش Visual basic,اموزش Visual basic,اموزش VB6,ماژوال ها,ماژول چیست؟,کار با ماژول ها,کار با ماژول ها در ویژوال بیسیک,متغیر,متغیر چیست,تعریف متغیر,تعریف متغیرها,تعریف متغیرها در vb,تعریف متغیرها در Visual basic,تعریف متغیرها در ویژوال بیسیک,فراخوانی روال,فراخوانی,Call,دستور call,کار با دستور Call,Functions,VB functions,Programming,Public,Dim,Private,Dim…

Admin بازدید : 908 شنبه 4 تير 1390 نظرات ()
Visualbasic-ویژوال بیسیک

بعضی موقع ها ممکنه شما بخواهین یه سری دستورات رو که مثل هم هستن رو برای چند تا فرم بکار ببرین مثلا میخوایین 4 تا دکمه روی چهار تا فرم بزارین که کار همشون یکی باشه مثلا همشون یه جمله رو(مثل :"Learn Module")روی فرم پرینت کنن . شما برای اینکار باید کد Print "Learn Module" رو بکار ببرین.

اگه شما بخواهین که هر 4 تا دکمه(روی چهار تا فرم) این کارو بکنن باید این کد رو برای هر 4 تا فرم به صورت تکراری بنویسین . ولی شما میتونین با استفاده از مدول این کد فقط یکبار توی یه مدول قرار بدین و این کد رو برای همه فرم ها بکار ببرین با اینکار هم در وقت و هم در ظرفیت برنامه ای که مینویسین صرفه جو یی میکنین .البته این استفاده دیگه هم داره که بعدا میگم  حالا اصلا بگم مدول کد چی هست . مدول کد یه جاییه مثل قسمت کد فرم (البته منظور از قسمت کد هم مدول فرم هستش) که فقط برای نوشتن که هستش و اشکال گرافیکی نداره شما میتونین هر تعداد مدول کد به پروژه اضافه کنین(البته شما معمولا به یدونه از اینا بیشتر نیاز ندارین)

برای اینکار توی از منوی Add Module,Project رو انتخاب کنین و توی صفحه بعد روی Open کلیک کنین تا یه مدول جدید به پروژه شما اضافه بشه حالا یه آیکن جدید که جلوش نوشته Module1 به پنجره پروژه اضافه شده و یه پنجره جدید هم یه فقط برای نوشتن هم هست باز شده

خوب ما میخوهیم یه برنامه بنویسیم که 4 تا فرم و هر فرم یه دونه دکمه داره و همه دکمه ها یه کار یعنی یه پیغام مثل "Learn Module Code " رو نشون بده اول 4 تا فرم به پروژه اضافه کنین(آموزشش توی وبلاگ هست) اگه آموزش پیغام ها رو خونده باشین میدونین برای یه چنین پیغامی ما میتونین از یه چنین کدی استفادی کنیم :

(Call Msgbox("Learn Module Code!",vbInformation + vbOkOnly,"New Learn"

ما میخواهیم از نوشتن کد اضافی یعنی چهار بار نوشتن این جمله در چهار تا فرم جلوگیری کنیم تا در وقت

و ظرفیت برنامه صرفه جویی کنیم البته اینجا زیاد فرقی نمیکنه ولی اگه مقدار کد ما زیاد باشه اونوقت

بیشتر بدرد میخوره.

حالا در قسمت کد مدولی که ایجاد کردین یه روال به صورت Public یعنی عمومی مینویسیم

این به این معنیه که این کد در همه جای پروژه مورد استفاده قرار بگیره

برای این کار روال رو اینجوری شروع میکنیم:

Public Sub NewLesson()

این خط نشون میده که ما روالی رو با اسم NewLesson به صورت عمومی بیان کردیم

شما میتونین از اسم های دیگه استفاده کنین فقط از بعضی اسم ها مثل Print , End و یا اسم هایی

مثل اینا استفاده نکنین

حالا ما باید کدی رو که میخوهیم اضافه کنیم

ما میخواستیم یه پیغام به نمایش در بیاریم پس کدی رو که در نظر گرفته بودیم اضافه میکنیم

به این صورت

Public Sub NewLesson()

Call msgbox("Learn Module Code!",vbInformation + vbOkOnly,"New Learn")

حالا ما باید روال خودمونو به پایان برسونیم برای اینکار مینویسیم :

Public Sub NewLesson()

Call msgbox("Learn Module Code!",vbInformation + vbOkOnly,"New Learn")

End Sub

الان ما يه روال به اسم NewLesson توي مدول كدمون نوشتيم که هرجای پروژه اونو فراخوانی کنیم

کد Call msgbox("Learn Module Code!",vbInformation + vbOkOnly,"New Learn") اجرا میشه

و یه پیغام به نمایش در میاد

برای فراخوانی بر روال از کلمه Call استفاده میکنیم به این صورت که کلمه Call مینویسیم و بعد از اون نام

روال رو مینویسیم .برای فراخوانی این روالی که نوشتیم باید اینو بنویسیم

Call NewLessons()

حالا ما چهار تا فرم داریم و توی هر کدوم از اونا یه دکمه و یه مدول کد که شامل روال ماست

ما برای کاری که میخواستیم بکنیم توی هر دکمه روالی رو که نوشتیمو فراخوانی میکنیم تا کد

مورد نظر برای بر چهارتا دکمه اجراع بشه

برای مثال توی فرم اول اینو مینویسیم(اسم دکمه باید cmdMsg باشه)

Private Sub cmdMsg_Click()

Call NewLesson()

End sub

ما اين كد رو باید برای هر چهارتا فرم بنویسیم

خوب ما باید کاری کنیم که چهار تا فرم ما به نمایش در بیان

بای اینکار کد زیر رو برای فرم اول بنویسین

Private Sub Form_Click()

Form2.Show

Form3.Show

Form4.SHow

End sub

حالا با ظاهر شدن فرم اول 3 تا فرم دیگه هم ظاهر میشن

دیدین که بجای اینکه ما کد Call msgbox("Learn Module Code!",vbInformation + vbOkOnly,"New Learn")

رو چهار بار بنویسیم با نوشتن یه روال توی مدول کد اونو فقط 1 بار نوشتیم . این زمانی کاربرد داره که کد شما خیلی طولانی باشه.


ما تونستیم یه روال عمومی رو که توی مدول کد نوشته شده بود رو فراخوانی کنیم

حالا شاید ما بخواهیم یه روال که توی فرم خودمون هست مثل روال Private Sub cmdPrint_Click

رو فراخوانی کنیم .

البته توجا کنین که این روال عمومی نیست چون با کلمه Private شروع شده و این روال فقط در مدولی

که نوشته شده(اینجا توی مدول فرم) مورد استفادس و در همه جای پروژه نمیتونین اونو اعلان کنین

اعلان این روال هم مثل همونه:

مثلا ما توی فرممون 2 تا دکمه به اسمهای cmdPrint و cmdPrintAgain داریم

دکمه اولمون یه جمله رو روی فرم چاپ میکنه

این دکمه کدی به صورت

Print "Visual Basic"

رو داره

ما میخواهیم دکمه دومی هم همین کار رو انجام بده

در این کار نیاز نیست ما کد Print "Visual Basic" رو برای دکمه دوم هم بنویسیم

فقط کافیه که روال مربوط به دکمه اول رو فراخوانی کنیم به این صورت كه براي ىكمه ىوم مينويسيم:

Call cmdPrint_Click()

حالا اگه كاربر روي دكمه دوم كليك كنه کدی که توی روال cmdPrint_Click() هست

اجرا میشه و دیگه نیازی به نوشتن کد دوباره نیست کد کلی ما اینجوری میشه:

Private Sub cmdPrint_Click()

Print "Visual Basic"

End Sub

Private Sub cmdPrintAgain_Click()

Call Print_Click()

End Sub

به نظر من بهتر بود اینو قبل از موضوع قبلی میگفتم.نه؟


توی قسمت اول ما یه روال رو توی مدول کد نوشتیم و از اون روال توی همه پروژه استفاده کردیم

حالا میخواهیم روالی بنویسیم که فقط توی مدول فرم در دسترس باشه

همون کدی که توی مدول کد نوشتیم رو اینباز توی مدول فرم با کمی تغییر مینویسیم:

Sub LearnVB()

Call msgbox("Learn VB",vbInformation + vbOkOnly,"New Learn")

End Sub

حالا توی هر جای فرم ما روال NewLesson رو فراخوانی کنیم کد

Call msgbox("Learn Module Code!",vbInformation + vbOkOnly,"New Learn")

اجرا میشه

توجه کنین که ما این روال رو توی فرم نوشتیم پس از اون نمیتونیم در جایی بغیر از مدولی فرمی که اونو توش نوشتیم استفاده کنیم یعنی اگه ما توی یه فرم دیگه این روال رو فراخوانی کنیم

هنگام اجراع برنامه با جطا روبرو میشیم یعنی این روال مثل روال Private Sub cmdPrint_Click() هستش

استفاده این روالی که ما تغریف میکنیم هم مثل بقیه هستش و فکر نمیکنم نیاز به مثال داشته باشه

اما من یه مثال ازش مینویسم.برنامه ما شامل 4 تا دکمه به اسم های cmd1,cmd2cmd3cmd4

هستش با کلیک بر روی هر دکمه پیغامLearn VB به نمایش در میان

کد مورد نیاز به این صورته:

Sub LearnVB()

Call msgbox("Learn VB",vbInformation + vbOkOnly,"New Learn")

End Sub

Private Sub cmd1_click()

Call LearnVB

End Sub

Private Sub cmd2_click()

Call LearnVB

End Sub

Private Sub cmd3_click()

Call LearnVB

End Sub

Private Sub cmd4_click()

Call LearnVB

End Sub

اين قسمت از همه مهمتره

دیدین که در بعضی از روال ها داخل پرانتزی که جلوی اسم روال هستش متغیر هایی

اعلان شده

مثلا روال

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

توي اين روال Button و Shift از نوع Integer که یه مقدار عددیه و x ,y از نوع String که یه نوع رشته ای هستش تعریف شدن


هر چیزیو که شما بخواهین برای ویژوال بیسیک تعریف کنین مثلا بگین که چیزی به اسم XXm وجود

داره و از یه نوعی هست باید اونو اعلان کنین وقتی شما اونو اعلان میکنین فضایی توی حافظه برای اون چیزی که تعریف کردین اختصاص پیدا میکنه.هر چیزی رو که شما میخوایی تعریف کنین باید نوع اونو مشخص کنین (اگه مشخص نکنین از نوع Variant در نظر گرفته میشه)

برای مشخص کردن نوع یه متغییر از کلمه As استفاده میکنیم مثلا میخواهیم بگیم که یه متغییر به اسم

XXm یه رشته مثل یه اسم هستش برای اینکار ما اول از کلمه Dim یا Public استفاده میکنیم

(تفاوتش در عمومی بودن یا نبودنه) بعد از اون نامی که میخواهیم رو مینویسیم بعد کلمه As و بعد

نوعی رو که میخواهیم رو مینویسیم به این صورت:

Dim XXm As String

ما انواعي از داده ها داریم مثلا:

String یه رشته مثل یه اسم بین 0 تا 2000000000 کاراکتر

Integer یه عدد بین 32768- و 32768

Single یه عدد (محدودش طولانیه حالشو ندارم بنویسمش)

Byte یه عدد بین 0 و 255

Boolean یه مقدار True یا False

Variant همه مقدار ها رو توی خودش ذخیره میکنه

اگه مقداری خارج از محدوده متغییر ها به اونا بدیم با خطا مواجه میشم مثلا اگه اینو بنویسیم.

Dim MyNumber as Integer

MyNumber = 32768009

اين علتش اينكه فضايي كه توي حافظه براش در نظر گرفته شده كمتر از مقدار داده شدس

ما به مقداری از نوع Boolean فقط یه مقدار True یا False میتونیم بدیم

و بقیه هم به همین ترتیب هستن. البته مقدار فضای ذخیره شده برای هر نوع متغییر متفاوت هستش

مثلا برای مقدار بایت 1 بایت حافظه و برای String 10 بایت حافظه ذخیره میشه

داشتم میگفتم که توی بعضی از روال ها متغییرهایی اعلان میشن . وقتی این روال ها رو ما اعلان میکنیم

باید متغییهایی که اعلان شدن رو مقدار دهی کنیم

مثلا اگه ما 2 تا دکمه داشته باشیم که برای دکمه اول این کد رو نوشته باشیم:

Private Sub cmdFirst_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Call Msgbox("VB")

End Sub

اگه ما بخواهیم توی دکمه دوم روال مربوط به دکمه اول یعنی Private Sub cmdFirst_MouseDown

رو اعلان کنیم باید متغییر های Button Shift X Y رو مقدار دهی کنیم در غیر این صورت در هنگام

اجراع برنامه با پیغام خطای Argument Not Optional روبرو میشیم پس ما باید متغیر های اعلان شده

رو بر اساس نوعشون یه مقداری بشون بدیم

پس باید توی دکمه دوم روال مربوط به دکمه اول رو اینجوری مقدار اعلان ومقدار دهی کنیم

Private Sub cmdSecond_Click()

Call cmdFirst_MouseDown(0, 0,0, 0)

End sub

البته اینجا اگه همه مقدار هارو صفر هم بزاریم فرقی نمیکنه اما جاهای دیگه اینجوری نیست

پس این رو هم یاد گرفتین

حالا میخواهیم برای روال هایی که نوشتیم متغییرهایی رو اعلان کنیم

برای این کار یه برنامه مینویسم

برنامه ما یه فرم و چهار تا دکمه داره .روی هر کدوم از دکمه ها که کلیک کنیم پیغامی

نشون داده میشه که شامل نام دکمه هستش

پس ایندفه همه دکمه ها یه کار را انجام نمیدن و کارشون کمی با هم فرق داره چون متن پیغام ها

با هم فرق داره ولی با این حال ما فقط یک بار از تابع MsgBox برای نشون دادن پیغام استفاده میکنیم

ما روالی به اسم msgcmd در قسمت اعلان عمومی مدول فرم (بالای همه روال ها)

مینویسیم که فقط در مدول فرم 1 در دسترسی باشه

و برای اون یه متغییربه اسم cmdName از نوع String اعلان میکنیم به این صورت:

Sub msgcmd(cmdName as String)

و بعد دستورات لازم برای دادن پیغام رو مینویسیم

Call Msgbox(cmdName & "Is Name Of This Command",vbInformation,"CommandName:")

End Sub

حالا کد لازم برای دکمه های رو اضافه ميكنيم كى كلي ما به اين صورت ميشه/

Sub msgcmd(cmdName as String)

Call Msgbox(cmdName & "Is Name Of This Command",vbInformation,"CommandName:")

End Sub

Private Sub cmd1_Click

Call msgcmd("cmd1")

End Sub

Private SUb cmd2_Click

Call msgcmd("cmd2")

End Sub

Private Sub cmd3_Click

Call msgcmd("cmd3")

End Sub

Private Sub cmd4_Click

Call msgcmd("cmd4")

End sub

 vbasic6.persianblog.ir
مطالب مرتبط
ارسال نظر برای این مطلب

نام
ایمیل (منتشر نمی‌شود) (لازم)
وبسایت
:) :( ;) :D ;)) :X :? :P :* =(( :O @};- :B /:) :S
نظر خصوصی
مشخصات شما ذخیره شود ؟ [حذف مشخصات] [شکلک ها]
کد امنیتیرفرش کد امنیتی
تبلیغات
Rozblog.com رز بلاگ - متفاوت ترين سرويس سایت ساز
اطلاعات کاربری
نام کاربری :
رمز عبور :
  • فراموشی رمز عبور؟
  • نویسندگان
    نظرسنجی
    قالب سایت؟




    بیشتر چه نوع مطالبی رو میپسندید؟





    آمار سایت
  • کل مطالب : 588
  • کل نظرات : 391
  • افراد آنلاین : 1
  • تعداد اعضا : 3327
  • آی پی امروز : 53
  • آی پی دیروز : 67
  • بازدید امروز : 174
  • باردید دیروز : 222
  • گوگل امروز : 6
  • گوگل دیروز : 7
  • بازدید هفته : 174
  • بازدید ماه : 3,888
  • بازدید سال : 33,361
  • بازدید کلی : 2,033,607