آموزش ویژوال بیسیک توسط حمید احمدی

hamidahmadi

Active Member
توابع تشخیص نوع داده

ویژوال بیسیک چند تابع دارد که بجای کار با مقدار آرگومان با نوع داده آرگومان کار میکند

کد:
[color=blue]
IsDate()                                      
آیا نوع داده آرگومان تاریخی است  ؟
IsNumeric()
آیا آرگومان حاوی یک عدد  است ؟
IsEmpty()
آیا آرگومان مقداردهی اولیه شده  است ؟
IsNull() 
آیا آرگومان دارای مقدار نال  است ؟
VarType()
اگر می خواهیم بداینم که متغیر از چه نوع داده ای است از این تابع استفاده می کنیم 
[/color]
 

hamidahmadi

Active Member
توابع تبدیل نوع داده یعنی Convert

در این نوع توابع کار تبدیل آرگومان از نوعی به نوعی دیگر امکان پذیر است حرف C مخفف حرف Convert به معنای تبدیل می باشد
در این نوع توابع همیشه باید امکان تبدیل آرگومان به نوع داده وجود داشته باشد مثلا" نمیتوانیم عدد 123456789 را به بایت تبدیل کنیم

توابع تبدیل به قرار ذیل است

کد:
[Right][color=green]
CBool( )
 تبدیل می کند ( Boolean  ) آرگومان خود را به نوع
CByte( ) 
تبدیل می کند  ( Byte  ) آرگومان خود را به نوع
CCur( )
تبدیل می کند ( Currency  ) آرگومان خود را به نوع  
CDate( )
تبدیل می کند ( Date  ) آرگومان خود را به نوع  
CDbl( )
تبدیل می کند ( Double  )  آرگومان خود را به نوع  
CDec( )
تبدیل می کند  ( Decimal  )آرگومان خود را به نوع 
CInt( )
تبدیل می کند  ( Integer  ) آرگومان خود را به نوع 
CLng( )
تبدیل می کند ( Long  ) آرگومان خود را به نوع  
CSng( )
تبدیل می کند ( Single  ) آرگومان خود را به نوع  
CStr( )
تبدیل می کند   ( String  ) آرگومان خود را به نوع
CVar( )
تبدیل می کند ( Variant  ) آرگومان خود را به نوع  
[/color][/right]
 
آخرین ویرایش:

hamidahmadi

Active Member
تابع ( ) CInt

این تابع نزدیکترین عدد گرد شده به آرگومان را بر میگرداند
کد:
[color=blue]
CInt(8.5) 
جواب عدد 8 می شود 
CInt(8.51) 
جواب عدد 9 می شود 
[/color]
 

hamidahmadi

Active Member
توابع مربوط به رشته ها

کد:
[color=blue]
Len(متغیر عددی یا متغیر رشته ای )

Len( "abcdef125" )        
در این تابع عدد 9 برگردانده میشود چون آرگومان تابع 9 حرف دارد
[/color]

در تابع ( ) len چون مقدار Null عدد صفر را برمیگرداند میتوان با امتحان آن فهمید آیا کاربر در فیلد چیزی نوشته است یا نه ؟
 
آخرین ویرایش:

hamidahmadi

Active Member
تبدیل رشته ها

کد:
[color=blue]
CStr() 
   آرگومان را به یک رشته تبدیل می کند
Str() 
 قبل از عدد مثبت یک جای خالی می گذارد  آرگومان عددی را به رشته تبدیل می کند
Val()  
  این آرگومان آن را تبدیل به عدد می کند اگر یک رشته شبیه عدد باشد
[/color]
 

hamidahmadi

Active Member
توابع اسکی (Ascii)

کد:
[color=blue]
Chr()    
عدد می گیرد و معادل رشته ای آن در جدول اسکی را برمیگرداند
Chr(65) 
می شود A  جواب حرف
Asc()    
رشته می گیرد و معادل عددی آن در جدول اسکی را برمیگرداند
Asc(A) 
جواب عدد 65 می شود
[/color]
 

hamidahmadi

Active Member
توابع آرایش رشته ها

کد:
[color=blue]

LTrim()    
                   فضای اضافه سمت چپ را می برد

RTrim()  
                   فضای اضافه سمت راست را می برد  

Trim()     
                   فضای اضافه سمت چپ و راست  را می برد       

[/color]
 
آخرین ویرایش:

hamidahmadi

Active Member
توابع مربوط به قسمتی از رشته ها

کد:
[color=blue]

[color=red]Left(String Value, numeric value[/color]

Left("this is a book" , 3 )  
می شود  thi جواب

[color=red]Right(String value, numeric value )[/color]

Right("this is a book", 3 )  
می شود ook جواب

[color=red]Mid(String value , startPostion [,length] )[/color]

Mid("this is a book", 11 , 4 )   
می شود book  جواب

از یازدهمین کاراکتر شروع میشود و 4 کاراکتر بعد قطع می شود
[/color]
 

hamidahmadi

Active Member
تبدیل به حروف بزرگ و کوچک

کد:
[color=blue]

UCase()  
  تبدیل به حروف بزرگ
Lcase()  
  تبدیل به حروف کوچک
[/color]



 
آخرین ویرایش:

hamidahmadi

Active Member
تابع () StrReverse

این تابع آرگومان رشته ای خود را برعکس می کند

کد:
[color=green]
txtHamid.text = strReverse("Ali") 
می شود  ilA جواب 
[/color]
 

hamidahmadi

Active Member
کار با داده های تاریخی و زمانی

چهار توابع زیر پرانتز نمی گیرند

1- Date
2- Time
3- Now
4- Timer

کد:
[color=green]
Private Sub Command1_Click()

Print Date    'تاريخي که در سيستم تنظيم شده است را برميگرداند
Print Time    'وقتي که در سيستم تنظيم شده است را برمیگرداند و خروجی از نوع ورینت است
Print Now     'ترکيبي است از  تایم و تاریخ که خروجي اين تابع از نوع ورینت مي باشد
Print Timer   ' اين تابع زمان سپري شده از نيمه شب را برحسب ثانيه برميگرداند

End Sub
[/color]



کد:
[color=green]
DateAdd( )   
[color=red]بعد از آنکه یک مقدار به تاریخ اضافه شد تاریخ جدید را برمیگرداند[/color]
DateDiff( ) 
[color=red]تفاوت بین دو تاریخ را برمی گرداند[/color]
DatePart( )   
[color=red]قسمت از یک تاریخ را برمیگرداند[/color]
[/color]

کد:
[color=green]
DateSerial(year , month , day )
[color=red]d = DateSerial(1998 , 12 , 27 )[/color]

DateValue(StringDateExpression)  
TimeSerial( hour , minute , second ) 
TimeValue(StringTimeExpression)
[/color]

کد:
[color=green]
Day()        D = Day(Now)
Month()   M = Month(Now)
Year()      Y = Year(Now)
[/color]
 
آخرین ویرایش:

hamidahmadi

Active Member
تابع فرمت () Format

یکی از مهمترین تابع داخلی ویژوال بیسیک تابع () Format می باشد.
مقدار برگشتی تابع فرمت از نوع variant می باشد.
expression می تواند یک عبارت عددی یا رشته ای باشد

شکل کلی این تابع به شرح ذیل است

کد:
[color=red]
Format ( expression , Format )
[/color]

کد:
[color=blue]
Private Sub Command1_Click()

Print Format("2325551212", "(@@@)@@@-@@@@")
Print Format("abcd", ">")
Print Format("ABCD", "<")
Print Format(Now, "dddd")
Print Format(Now, "h am/pm")

End Sub
[/color]


 
آخرین ویرایش:

hamidahmadi

Active Member
تابع میانبر ( ) IIf

این تابع معادل برای دستور If … Else می باشد

شکل کلی دستور چنین است

کد:
[color=red]
IIf ( Condition, TrueBody , FalseBody )
[/color]

حال ما در دستور If داریم

کد:
[color=blue]
If (curSales < 50000) Then
curBonus = 0
Else
curBonus = 75
End If
[/color]

حالا دستور میانبر آن با تابع ( )IIf چنین می شود
باید توجه داشت که دستور IIf برای شرط های یک خطی مناسب است


کد:
[color=red]
curBonus  = IIf ( CurSales <  50000, 0 , 75 )
[/color]

که در آن Condition شرطی است که True و یا False برمیگرداند و TrueBody قسمت True شرط و FalseBody قسمت False شرط می باشد
 
آخرین ویرایش:

hamidahmadi

Active Member
تابع میانبر ( )Choose

این تابع معادل برای دستورSelect Case می باشد تعداد آرگومانهای این تابع ممکن است خیلی بیشتر از سایر توابع پیش ساخته باشد. بسته به اینکه مقدار آرگومان اول ( ) Choose چه باشد یکی از بقیه آرگومانها برگردانده می شود

شکل کلی دستور چنین است

کد:
[color=red]
Choose ( intIndexNum , expression [, expression] …)
[/color]

مقدار intIndexNum باید متغیری باشد که از 1 تا آخرین آرگومان موجود مقدار بگیرد. ولی چون اولین آرگومان آن فقط می تواند عدد صحیح بگیرید بدین لحاظ محدویت زیادی دارد. اگر intIndexNum بین 1 و شماره آخرین آرگومان نباشد این تابع مقدار Null برمیگرداند
اولین آرگومان این تابع می تواند یک عبارت باشد که این اندیس باید از 1 شروع شود تا این تابع بتواند درست عمل کند
کد:
[color=blue]
Choose ( lblProductCode, "Full markup", "5% discount", "10% discount", "Special order", "Mail order" )
[/color]
 

hamidahmadi

Active Member
پنجره فرعی

هرچه برنامه شما به برنامه های ویندوز شبیه باشد کاربران بهتر می توانند با برنامه شما ارتباط برقرار کنند لذا ما از یک کنترل به نام پنجره فرعی عمومی ( Common Dialog Box ) بهره می بریم.
این کنترل در جعبه ابزار وجود ندارد با این حال هر وقت لازم شد که این پنجره را به جعبه ابزار خود اضافه کنیم مراحل ذیل را دنبال می کنیم :
1- کلیدهای Ctrl به اضافه T را فشار میدهیم
2- کنترل Microsoft Common Dialg Control 6.0 را پیدا میکنیم
3- این کنترل را انتخاب می کنیم و دکمه Ok را میزنیم

با پنجره فرعی ما میتوانیم 6 برنامه گفتگو استاندارد ویندوز را بسازیم


1- انتخاب رنگ : کاربر می تواند توسط این پنجره رنگ ها را انتخاب و یا تغییر دهد
2- انتخاب فونت : کاربر می تواند توسط این پنجره شیوه فونت و اندازه آن را انتخاب کند
3- باز کردن فایل : کاربر می تواند توسط این پنجره فایلی را از پوشه و درایو باز کند
4- ذخیره کردن فایل : کاربر می تواند توسط این پنجره فایل را درون پوشه و درایو ذخیره کند
5- چاپ : کاربر می تواند توسط این پنجره چاپگر و تنظیم های آن را انجام دهد
6- راهنمای ویندوز : کاربر میتواند راهنمائی هایی را که برای برنامه اتان نوشته اید انتخاب کند


هنگامی که پنجره فرعی را در روی فرم می اندازید ظاهر این پنجره آنقدر کوچک است که به نظر مناسب نمی رسد و حتی تغییر سایز نیز نمیدهد. هنگامی که برنامه شما یکی از پنجره های فرعی عمومی را فعال کند پنجره فرعی مناسب روی صفحه تصویر ظاهر می شود.

برای نمایش شکل خاصی از کنترل پنجره عمومی باید خواص متناسب را تنظیم نمائید. برای نمایش یک پنجره فرعی خاص باید یکی از متدهای ذیل را روی کنترل پنجره فرعی عمومی اجرا نمائید


1- ShowColor : نمایش پنجره فرعی رنگ
2- Show Font : نمایش پنجره فرعی فونت
3- ShowOpen : نمایش پنجره فرعی باز کردن فایل
4- ShowSave : نمایش پنجره فرعی ذخیره کردن فایل
5- ShowPrinter : نمایش پنجره فرعی مخصوص چاپ
6- ShowHelp : نمایش پنجره فرعی راهنمای ویندوز


- برای پیشوند این کنترل سعی کنید از کلمه cdb استفاده کنید
- برای اجرای 6 متد بالا لازم نیست که حتما 6 کنترل پنجره فرعی بر روی فرم بگذارید بلکه یک کنترل گذاشته و 6 متد بالا را بر روی آن کنترل اجرا کنید
- هیچیک از پنجره های فرعی که بوسیله کنترل پنجره فرعی عمومی تولید می شوند کاری انجام نمیدهند بلکه واسطی می باشند که این گزینه ها را در اختیار کاربر قرار دهند و شما به عنوان برنامه نویس می بایست بعد از بستن این پنجره ها توسط کاربر از طریق کد ویژوال بیسیک خواص پنجره فرعی عمومی را تجزیه و تحلیل کنید و اقدامات لازم را انجام دهید.
 

hamidahmadi

Active Member
پنجره فرعی Color

برای اینکه یک پنجره فرعی رنگ را انتخاب کنیم می بایست خاصیت Flags آن را تنظیم کنیم و بعد با متد ShowColor جدول رنگ را نمایش دهیم



کد:
[color=blue]
cdbColor.Flags = cdlCCFullOpen + cdlCCHelpButton
cdbColor.ShowColor
[/color]

در اینجا خواص فلگ را 2 + 8 گرفتیم و در آخر متد ShowColor را اعمال کردیم
حال ما به عنوان برنامه نویس در اینجا میتوانیم از خاصیت مهم رنگ که Color می باشد استفاده کرده و آن را به کنترل های دیگرمان بدهیم. خاصیت Color مقدار هگزادسیمال رنگی را که کاربر انتخاب کرده حفظ می کند پس در کد بالا ما می توانیم در آخر مثلا" پشت زمینه فرم خود را به مقدار خاصیت Color کنترل رنگ تنظیم کنیم
کد:
[color=blue]
cdbColor.Flags = cdlCCFullOpen + cdlCCHelpButton
cdbColor.ShowColor
[color=red] frmHamidAhmadi.BackColor = cdbColor.Color [/color]
[/color]
 

hamidahmadi

Active Member
کار با دکمه Cancel

گاهی اوقات کاربر بعد از انتخاب رنگ ( و یا در سایر پنجره های فرعی عمومی ) دکمه Cancel
را میزند در این موقع لازم است که ما تدبیری بیاندیشم این تدبیر دستور On Error Goto می باشد. این دستور به ویژوال بیسیک می گوید اگر حین اجرای برنامه خطائی رخ دهد برنامه را به یک برچسب کد منتقل کند. حال لازم است در انتهای روال برچسب کدی را مشخص کنیم تا وقتی رخ داد دستور بالا خطا را به آن برچسب کد منتقل کند. برای نامگذاری برچسب کد از همان قواعد نامگذاری متغیر استفاده می شود منتها در آخر برچسب کد لازم است که علامت دونقطه : را بگذاریم تا خطا به آنجا منتقل شود و در آخر اینکه لازم است خاصیت CancelError را به True تنظیم کنیم.

کد:
[color=blue]
On Error Goto dbErrHandler
دستوران ویژوال بیسیک
dbErrHandler :
[/color]

خوب با یک مثال مسئله را بهتر توضیح می دهیم

کد:
[color=blue]
Private Sub Form_Load()

   lblHamidAhmadi.Font = "Courier New"
   lblHamidAhmadi.FontSize = 18
   lblHamidAhmadi.FontBold = True
   lblHamidAhmadi.FontItalic = True
End Sub

Private Sub Command1_Click()

   cdbColor.CancelError = True
   On Error GoTo dbHandler
   cdbColor.Flags = cdlCCFullOpen + cdlCCHelpButton
   cdbColor.ShowColor
   lblHamidAhmadi.ForeColor = cdbColor.Color
   dbHandler:

End Sub

 [/color]



 

hamidahmadi

Active Member
پنجره فرعی Font

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




در پنجره فرعی فونت می بایست قبل از اینکه متد ShowFont را اعمال کنید حداقل یکی از سه مقدار خاصیت Flags را یک کنید زیرا در غیر این صورت ویژوال بیسیک پیغام خطا صادر می کند
1- cdlCFScreenFonts
2- cdlCFPrinterFonts
3- cdlCFBoth

کد:
[color=blue]
Private Sub Command1_Click()

   cdbFont.CancelError = True
   On Error GoTo dbhandler

   cdbFont.Flags = &H3
   cdbFont.ShowFont

   lblHamidAhmadi.Font.Name = cdbFont.FontName
   lblHamidAhmadi.Font.Bold = cdbFont.FontBold
   lblHamidAhmadi.Font.Size = cdbFont.FontSize
   lblHamidAhmadi.Font.Italic = cdbFont.FontItalic

   dbhandler:

End Sub
[/color]

اگر به دستور انتساب بالا توجه کرده باشید متوجه دو نقطه که خواص را از هم جدا کرده است شده اید و اگر به خاطر داشته باشید درون پنجره Properties متوجه علامت سه نقطه ای خاصیت فونت شده اید بنابراین پنجره فونت میتواند چند مقدار را تنظیم کند

راهنمائی در مورد تنظیم کنترل ها

ویژوال بیسیک یک روش فوق العاده برای تنظیم اکثر خواص در زمان طراحی فراهم نموده است
کنترل پنجره فرعی عمومی یک خاصیت به نام Custom دارد که اگر بر روی آن کلیک کنید پنجره Property Pages تنظیم بعضی خواص اولیه پنجره فرعی عمومی را آسان می کند



 

hamidahmadi

Active Member
پنجره فرعی File Open

در این متد نیز قبل از اجرای ShowOpen می بایست خاصیت Flags تنظیم شود. این متد یک واسط استاندارد برای کاربران است تا بتوانند از طریق آن فایلی را برای باز شدن انتخاب کنند




اگر یک پنجره فرعی File Open را گشوده باشید متوجه فیلتری که برای پسوند ها گذاشته شده است شده اید. برای به وجود آوردن این فیلتر به شرح ذیل عمل می شود

شکل کلی دستور Filter به شرح ذیل می باشد
کد:
[color=green]
"FilterDescip1 | extension1 | FilterDescip2 | extension2 | FilterDescip3 | extension3"
[/color]

که با یک مثال بهتر متوجه این قضیه خواهید شد

کد:
[color=green]
cdbFiles.Filter = "Word Docs (*.doc) | *.doc | Excel Docs (*.xls) | *.xls"
[/color]

اگر بیش از یک فیلتر استفاده میکنید می بایست خاصیت FilterIndex را روی فیلتری تنظیم کنید که قرار است در پنجره فرعی عمومی نشان داده شود.
خاصیت FilterIndex اولین فیلتر برابر یک است اگر از چند فیلتر استفاده می کنید به هر فیلتر یک واحد اضافه کنید
پس از آنکه کاربر پنجره فرعی را بست نام فایل انتخاب شده درون خاصیت FileName کنترل پنجره فرعی عمومی قرار میگیرد.
 

hamidahmadi

Active Member
پنجره فرعی ShowSave

این پنجره فرعی نیز مانند پنجره فرعی باز کردن فایل می باشد با چند تفاوت در نام گفتگو و نام دکمه های آن اما تفاوت اساسی آن این است که در ShowOpen در برنامه های چند سندی میتوان چند فایل را با هم باز کرد ولی فقط میتوانیم در پنجره ذخیره فایل یک سند را مورد استفاده قرار دهیم.
برای خاصیت Flags این پنجره نیز میتوان از خواص پنجره فرعی ShowOpen استفاده کنیم
مطالب مورد بحث فیلترها نیز درShowSave قابل اجرا می باشد.
 

جدیدترین ارسال ها

بالا