Visual Basic 6

  • Uploaded by: Roozbeh Razavi
  • 0
  • 0
  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Visual Basic 6 as PDF for free.

More details

  • Words: 13,704
  • Pages: 73
‫آﻣﻮزش وﻳﮋوال ﺑﻴﺴﻴﻚ ‪6‬‬ ‫ﻧﺎم ﻛﺘﺎب‪Beginning Visual Basic 6 :‬‬ ‫ﻣﺤﻞ ﻧﺸﺮ‪ :‬ﺷﻬﺮك ﻛﺎروان )رﺿﻮﻳﻪ(‬ ‫ﻧﻮﻳﺴﻨﺪه‪Meisam.Mor :‬‬ ‫ﻧﺎﺷﺮ‪  IR‐E‐Book :‬‬ ‫ﺳﺎل ﭼﺎپ‪1385 :‬‬

‫ﺻﻔﺤﻪ‪١ :‬‬

‫ﭘﻴﺸﮕﻔﺘﺎر‬ ‫ﻛﺘــﺎﺑﻲ ﻛــﻪ ﻫــﻢ اﻛﻨــﻮن در ﺣــﺎل ﻣﻄﺎﻟﻌــﻪ آن ﻫــﺴﺘﻴﺪ ﺑﺮﮔﺮﻓﺘــﻪ ﺷــﺪه از ﭼﻨــﺪﻳﻦ ﻛﺘــﺎب داﺧﻠــﻲ و ﺧــﺎرﺟﻲ‬ ‫ﻣﻲﺑﺎﺷﺪ)ﺑﺮاي ﻣﺸﺎﻫﺪهي ﻣﻨﺎﺑﻊ‪ ،‬ﺑﻪ آﺧﺮﻳﻦ ﺑﺨﺶ از اﻳﻦ ﻛﺘﺎب ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ(‪ .‬اﻳـﻦ ﻛﺘـﺎب‪ ،‬در ﻣﻘﺎﻳـﺴﻪ ﺑـﺎ‬ ‫ﻛـﺎﻣﻼ راﻳﮕـﺎن اراﺋـﻪ‬ ‫دﻳﮕﺮ ﻛﺘﺎﺑﻬﺎي ﻣﻮﺟﻮد در وب‪ ،‬ﺑﺴﻴﺎر ﻛﺎﻣﻠﺘﺮ و ﻏﻨﻲﺗﺮ ﻣﻲﺑﺎﺷﺪ‪ .‬اﻳﻦ ﻛﺘﺎب ﺑﻪ ﺻـﻮرت ً‬ ‫ﺷﺪه اﺳﺖ‪ ,‬در ﻧﺘﻴﺠﻪ ﺗﻌﻴﻴﻦ ﻛﭙﻲ راﻳﺖ ﺑﺮاي آن‪ ،‬اﻣﺮي ﻏﻴﺮ ﻣﻌﻤﻮل ﺑﻪ ﻧﻈﺮ ﻣﻲرﺳﺪ‪.‬‬ ‫اﻣﺎ در ﺻﻮرت ﺑﺮوز ﻫﺮﮔﻮﻧﻪ ﻣﺸﻜﻞ در راﺑﻄﻪ ﺑﺎ اﻳﻦ ﻛﺘﺎب و ﻳﺎ در ﻣﻴﺎن ﮔﺬاﺷﺘﻦ ﻧﻈﺮات‪ ،‬ﭘﻴـﺸﻨﻬﺎدات و‬ ‫اﻧﺘﻘﺎدات‪ ،‬ﻣﻲﺗﻮاﻧﻴﺪ از ﻃﺮﻳﻖ زﻳﺮ ﺑﺎ ﻣﻦ در ارﺗﺒﺎط ﺑﺎﺷﻴﺪ‪:‬‬

‫‪http://Ir-E-Book.BlogFa.com‬‬

‫‪[email protected]‬‬

‫ﺻﻔﺤﻪ‪٢ :‬‬

‫ﻓﺼﻞ اول‬ ‫آﺷﻨﺎﻳﻲ ﺑﺎ وﻳﮋوال ﺑﻴﺴﻴﻚ‬

‫ﺻﻔﺤﻪ‪٣ :‬‬

‫آﺷﻨﺎﻳﻲ ﺑﺎ ﺗﺎرﻳﺨﭽﻪي زﺑﺎن ﺑﻴﺴﻴﻚ‬ ‫‪ Basic‬ﺳﺮﻧﺎم ﻛﻠﻤﺎت ‪Beginner's All‐purpose Symbolic Instruction Code‬‬ ‫و ﺑﻪ ﻣﻌﻨﻲ زﺑﺎن ﻫﻤﻪﻣﻨﻈـﻮره ﺑـﺮاي اﻓـﺮاد ﻣﺒﺘـﺪي اﺳـﺖ‪ .‬اﻳـﻦ زﺑـﺎن ﺑﺮﻧﺎﻣـﻪﻧﻮﻳـﺴﻲ‪ ،‬ﺑـﻪ دﻟﻴـﻞ ﺳـﺎدﮔﻲ‬ ‫ﺳﺎﺧﺘﺎري‪ ،‬از ﻣﺤﺒﻮﺑﻴﺖ زﻳﺎدي ﺑﺮﺧﻮردار اﺳﺖ‪ .‬زﺑـﺎن ﺑﺮﻧﺎﻣـﻪﻧﻮﻳـﺴﻲ ﺑﻴـﺴﻴﻚ در ﺳـﺎل ‪ 1964‬ﻣـﻴﻼدي‪ ،‬ﺑـﻪ‬ ‫وﺳـﻴﻠﻪي ﺟــﺎن ﻛﻨــﻲ و ﺗﻮﻣــﺎس ﻛـﻮرﺗﺲ در داﻧــﺸﻜﺪه دارﺗﻤــﻮث ﭘﺪﻳــﺪ آﻣـﺪ‪ .‬اﻳــﻦ زﺑــﺎن‪ ،‬ﻧﺨــﺴﺘﻴﻦ زﺑــﺎن‬ ‫ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻧﺒﻮد وﻟﻲ ﻫﺪف آن‪ ،‬ﻓﺮاﻫﻢ ﻛﺮدن ﻳﻚ زﺑﺎن ﺳﺎده ﺑﺮاي داﻧﺸﺠﻮﻳﺎن رﺷﺘﻪﻫﺎي ﻣﺨﺘﻠﻒ ﺑـﻮد‪.‬‬ ‫ﺗﺎ ﺑﻪ اﻣﺮوز ﻧﺴﺨﻪﻫﺎي ﻣﺘﻌﺪدي از زﺑﺎن ﺑﻴﺴﻴﻚ اراﻳﻪ ﺷﺪه اﺳﺖ ﻛﻪ ﻣﻲﺗﻮان ﺑﻪ‪:‬‬ ‫‪ GW BASICA, BASICA, ANSI BASIC, QBASIC‬و ‪ QUICK BASIC‬اﺷﺎره ﻛﺮد‪.‬‬ ‫زﺑﺎن ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺑﻴﺴﻴﻚ ﺑﺎ اراﺋﻪ وﻳﮋوال ﺑﻴﺴﻴﻚ ﺟﺎن ﺗﺎزهاي ﮔﺮﻓﺖ و دوﺑـﺎره روﻧـﻖ ﻳﺎﻓـﺖ و ﺑﻴـﺸﺘﺮ‬ ‫ﻛﺎرﺑﺮان ﺑﻪ دﻟﻴﻞ ﺳﻬﻮﻟﺖ‪ ،‬اﻳﻦ زﺑﺎن را ﺑﺮاي ﻳﺎدﮔﻴﺮي اﻧﺘﺨﺎب ﻧﻤﻮدﻧﺪ‪.‬‬

‫‪--------------‬‬‫وﻳﺮاﻳﺶﻫﺎي ﻣﺨﺘﻠﻒ وﻳﮋوال ﺑﻴﺴﻴﻚ‬ ‫وﻳــﺮاﻳﺶ آﻣﻮزﺷــﻲ ﻳــﺎ ‪ ،Learning  Edition‬اﺑﺘــﺪاﻳﻲ و ﺳــﺎدهﺗــﺮﻳﻦ وﻳــﺮاﻳﺶ وﻳــﮋوال ﺑﻴــﺴﻴﻚ‬ ‫ﻣﻲﺑﺎﺷﺪ‪ .‬در اﻳﻦ وﻳﺮاﻳﺶ‪ ،‬اﺑﺰار ﺧﺎﺻﻲ در اﺧﺘﻴﺎر ﺷﻤﺎ ﻗﺮار ﻧﻤﻲﮔﻴـﺮد‪ .‬اﻳـﻦ وﻳـﺮاﻳﺶ ﮔﺰﻳﻨـﻪاي ﻣﻨﺎﺳـﺐ‪،‬‬ ‫ﺑﺮاي اﻓﺮاد ﻣﺒﺘﺪي ﻣﻲﺑﺎﺷﺪ‪.‬‬ ‫وﻳﺮاﻳﺶ ﺣﺮﻓﻪاي ﻳﺎ ‪ ،Professional  Edition‬ﺑﺮاي ﺣﺮﻓﻪايﻫﺎ ﻃﺮاﺣﻲ ﺷﺪه اﺳـﺖ‪ .‬اﻳـﻦ ﻧـﺴﺨﻪ‪،‬‬ ‫وﻳـــﺮاﻳﺶ آﻣﻮزﺷـــﻲ را ﺑـــﺎ اﺑﺰارﻫـــﺎي ﺑﻴـــﺸﺘﺮ ﺑـــﻪ ﻃـــﻮر ﻛﺎﻣـــﻞ ﺗﺤـــﺖ ﭘﻮﺷـــﺶ ﻗـــﺮار ﻣـــﻲدﻫـــﺪ‪.‬‬ ‫وﻳﺮاﻳﺶ ﺗﺠﺎري ﻳﺎ ‪ ،Enterprise Edition‬ﻛﺎﻣـﻞﺗـﺮﻳﻦ و در ﻋـﻴﻦ ﺣـﺎل ﻣﺤﺒـﻮبﺗـﺮﻳﻦ وﻳـﺮاﻳﺶ‬ ‫وﻳﮋوال ﺑﻴﺴﻴﻚ ﻣﻲﺑﺎﺷﺪ‪ .‬وﻳﺮاﻳﺸﻲ ﻛﻪ ﻫﻢ ﻛﺎرﺑﺮان ﺣﺮﻓﻪاي و ﻫﻢ ﻛﺎرﺑﺮان ﻣﺒﺘﺪي از آن اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ‪.‬‬

‫‪---------------‬‬

‫ﺻﻔﺤﻪ‪٤ :‬‬

‫ﮔﺬري ﺑﺮ وﻳﮋﮔﻲﻫﺎي وﻳﮋوال ﺑﻴﺴﻴﻚ‬ ‫← ﻧﺰدﻳﻜﻲ ﺑﻪ زﺑﺎن ﻣﺎﺷﻴﻦ‪:‬‬ ‫وﻳﮋوال ﺑﻴﺴﻴﻚ ﺟﺰو زﺑﺎﻧﻬﺎي ﺳﻄﺢ ﺑﺎﻻ ‪ 1‬ﻣـﻲﺑﺎﺷـﺪ‪ .‬زﺑﺎﻧﻬـﺎي ﺳـﻄﺢ ﺑـﺎﻻ‪ ،‬زﺑـﺎنﻫـﺎﻳﻲ ﻫـﺴﺘﻨﺪ ﻛـﻪ ﺑـﻪ زﺑـﺎن‬ ‫ﻣﺤﺎورهاي اﻧﮕﻠﻴﺴﻲ ﻧﺰدﻳﻚ ﻫﺴﺘﻨﺪ ﺑﻪ ﻫﻤﻴﻦ دﻟﻴـﻞ‪ ،‬ﺑﺎﻳـﺪ ﺑـﻪ وﺳـﻴﻠﻪي ﻛﺎﻣﭙﺎﻳﻠﺮﻫـﺎ و ﻣﻔـﺴﺮﻫﺎ ‪ 2‬ﻛـﻪ ﻧـﻮﻋﻲ‬ ‫ﻣﺘﺮﺟﻢ زﺑﺎن ﻫﺴﺘﻨﺪ‪ ،‬ﺑﻪ زﺑﺎن ﻣﺎﺷﻴﻦ ﺗﺒﺪﻳﻞ ﺷﻮﻧﺪ‪.‬‬ ‫← راﺑﻂ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ‪:‬‬ ‫راﺑﻂﻫﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺑﻪ دو دﺳﺘﻪ ﺗﻘـﺴﻴﻢ ﻣـﻲﺷـﻮﻧﺪ‪ :‬ﻳـﻚ‪ :‬ﺑـﺮ ﻣﺒﻨـﺎي ﻣـﺘﻦ ‪ 3‬دو‪ :‬ﻣﺒﺘﻨـﻲ ﺑـﺮ ﮔﺮاﻓﻴـﻚ ‪.4‬‬ ‫زﺑﺎﻧﻬﺎي ﻣﺒﺘﻨﻲ ﺑﺮ ﻣﺘﻦ‪ ،‬ﻛﺎرﺑﺮ اﻣﻜﺎن دﺳﺘﺮﺳﻲ ﻣـﺴﺘﻘﻴﻢ ﺑـﻪ ﮔﺮاﻓﻴـﻚ را ﻧـﺪارد‪ .‬ﻣﺎﻧﻨـﺪ زﺑـﺎن ‪ C‬ﻛـﻪ ﺗﻮﺳـﻂ‬ ‫دﻧﻴﺲ رﻳﭽﻲ در ﺳﺎل ‪ 1972‬ﻧﻮﺷﺘﻪ ﺷﺪ‪.‬‬ ‫زﺑﺎﻧﻬﺎي ﻣﺒﺘﻨﻲ ﺑﺮ ﮔﺮاﻓﻴﻚ ﻳﺎ وﻳﮋوال‪ ،‬اﻣﻜﺎن دﺳﺘﺮﺳﻲ ﻣﺴﺘﻘﻴﻢ ﻛﺎرﺑﺮ ﺑﻪ ﮔﺮاﻓﻴﻚ را ﻓﺮاﻫﻢ ﻣﻲآورﻧﺪ‪ .‬ﻳﻌﻨﻲ‬ ‫اول ﻃﺮاﺣﻲ و ﺳﭙﺲ ﻛﺪﻧﻮﻳﺴﻲ ﺑﺮﻧﺎﻣﻪ ﺻﻮرت ﻣﻲﮔﻴﺮد‪ .‬ﻣﺎﻧﻨﺪ‪ :‬وﻳﮋوال ﺑﻴﺴﻴﻚ‬ ‫← ﻣﺤﻴﻂ ﺳﺎده‪:‬‬ ‫وﻳﮋوال ﺑﻴﺴﻴﻚ ﻣﺤﻴﻄﻲ ﺑﺴﻴﺎر ﺳﺎده دارد‪ .‬اﻳﻦ ﻣﺤـﻴﻂ ﻛـﻪ ﻳﻜـﻲ از ﻣﺤـﻴﻂﻫـﺎي ﺗﻮﺳـﻌﻪﻳﺎﻓﺘـﻪي ﻣﺠﺘﻤـﻊ ﻳﻌﻨـﻲ‬ ‫‪ IDE 5‬ﻣﻲﺑﺎﺷﺪ‪ ،‬ﺑﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن اﻳﻦ اﻣﻜﺎن را ﻣﻲدﻫﺪ ﻛﻪ ﺑﺮﻧﺎﻣﻪﻫﺎي ﺗﺤﺖ وﻳﻨﺪوز ﺧﻮد را ﺑﺪون ﻧﻴﺎز ﺑﻪ‬ ‫اﺳﺘﻔﺎده از ﺑﺮﻧﺎﻣﻪﻫﺎي ﻛﺎرﺑﺮدي دﻳﮕـﺮ اﻳﺠـﺎد‪ ،‬اﺟـﺮا و ﺧﻄﺎﻳـﺎﺑﻲ ﻛﻨﻨـﺪ‪ .‬اﻳـﻦ ﻣﺤـﻴﻂ ﻫﻤﭽﻨـﻴﻦ اﻣﻜـﺎن ﻧﻮﺷـﺘﻦ‬ ‫ﺑﺮﻧﺎﻣﻪﻫﺎي ﺗﺤﺖ وﻳﻨﺪوز را ﺣﺘﻲ ﺑﻪ ﻛﺴﺎﻧﻲ ﻛﻪ آﺷﻨﺎﻳﻲ ﭼﻨﺪاﻧﻲ ﺑﺎ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ وﻳﻨﺪوز ﻧﺪارﻧﺪ ﻣﻲدﻫﺪ‪.‬‬

‫‪--------------‬‬‫ﻣﻔﺎﻫﻴﻢ ﺑﻨﻴﺎدي‬ ‫ﻗﺒﻞ از ﺷﺮوع ﻫﺮ ﻛﺎري ﻻزم اﺳﺖ ﺗﺎ ﺑﺎ ﺑﺮﺧﻲ از ﻣﻔﺎﻫﻴﻢ و اﺻﻄﻼﺣﺎت آﺷﻨﺎ ﺑﺸﻮﻳﺪ‪ .‬ﻫﺮ ﭼﻪ ﺟﻠﻮﺗﺮ ﺑﺮوﻳﺪ‬ ‫ﺑﺎ اﺻﻄﻼﺣﺎت ﺑﻴﺸﺘﺮي آﺷﻨﺎ ﺧﻮاﻫﻴﺪ ﺷﺪ‪.‬‬ ‫‪High‐Level Languages 1‬‬ ‫‪Interpreters 2‬‬ ‫‪Text‐Based 3‬‬ ‫‪Graphical Based 4‬‬ ‫‪Integrated Development Environment 5‬‬

‫ﺻﻔﺤﻪ‪٥ :‬‬

‫ﻓﺮم‪:‬‬ ‫در وﻳﮋوال ﺑﻴﺴﻴﻚ‪ ،‬ﻳﻚ ﭘﻨﺠﺮه‪ ،‬ﻓﺮم ﻧﺎﻣﻴﺪه ﻣﻲﺷﻮد‪ .‬ﻫﺮ ﻓﺮم ﺷﺎﻣﻞ ﻳﻚ ﻧﻮار ﻋﻨﻮان در ﻗﺴﻤﺖ ﺑﺎﻻي‬ ‫ﺧﻮد ﻣﻲﺑﺎﺷﺪ‪ .‬اﻳﻦ ﻓﺮم اﺳﺎس راﺑﻂ ﮔﺮاﻓﻴﻜﻲ ﻳﻚ ﺑﺮﻧﺎﻣﻪي ﻛﺎرﺑﺮدي ﻣﻲﺑﺎﺷﺪ‪ .‬ﺑﺮﺧﻲ از ﺑﺮﻧﺎﻣﻪﻫﺎ از ﻳﻚ‬ ‫ﻓﺮم و ﺑﺮﺧﻲ دﻳﮕﺮ از دو ﻳﺎ ﺑﻴﺸﺘﺮ از دو ﻓﺮم اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ‪.‬‬

‫ﻛﻨﺘﺮل‪:‬‬ ‫ﺷﻴﺌﻲ ﻛﻪ ﻣﻲﺗﻮان در زﻣﺎن ﻃﺮاﺣﻲ ﻳﺎ اﺟﺮا‪ ،‬ﺑﺮاي ﻧﻤﺎﻳﺶ ﻳﺎ ﺗﻐﻴﻴﺮ دادهﻫﺎ روي آن ﻋﻤﻠﻴﺎﺗﻲ اﻧﺠﺎم داد‪.‬‬ ‫ﻫﺮ ﻳﻚ از اﻳﻦ ﺷﻲءﻫﺎ ﺷﺎﻣﻞ ﺷﻤﺎﻳﻞ ﮔﺮاﻓﻴﻜﻲ ‪ 1‬ﻣﺨﺼﻮص ﺑﻪ ﺧﻮد ﻫﺴﺘﻨﺪ‪  .‬‬

‫ﺷﻲء‪:‬‬ ‫ﻳﻚ ﺗﺮﻛﻴﺐ از ﻛﺪﻫﺎ و دادهﻫﺎ ﻛﻪ ﻣﻲﺗﻮان روي آن ﻛﺎر ﻛﺮد‪ .‬ﺷﻲءﻫﺎ ﺷﺎﻣﻞ ﻣﺸﺨﺼﻪﻫﺎ و ﻣﺘﺪﻫﺎ ﺑﻮده و ﺑﻪ‬ ‫وﺳﻴﻠﻪي ﻛﻼس ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫ﻣﺸﺨﺼﻪﻫﺎ‪:‬‬ ‫ﻫﺮ ﺷﻲء ﺷﺎﻣﻞ ﻣﺸﺨﺼﻪﻫﺎﻳﻲ ‪ 2‬اﺳﺖ ﻛﻪ ﺑﻪ ﻃﻮر ﻛﺎﻣﻞ ﻇﺎﻫﺮ و رﻓﺘﺎر آن را ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﺪ‪ .‬ﺗﻤﺎﻣﻲ اﻳﻦ‬ ‫ﺧﺼﻮﺻﻴﺎت و ﻣﺸﺨﺼﻪﻫﺎ در ﭘﻨﺠﺮهي ‪ Properties‬ﺟﻤﻊ ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫آرﮔﻮﻣﺎن‪:‬‬ ‫دادهﻫﺎي ارﺳﺎل ﺷﺪه ﺑﻪ ﻳﻚ روال را آرﮔﻮﻣﺎن ‪ 3‬ﮔﻮﻳﻨﺪ‪ .‬آرﮔﻮﻣﺎن ﻣﻲﺗﻮاﻧﺪ ﻳﻚ ﺛﺎﺑﺖ‪ ،‬ﻣﺘﻐﻴﺮ ﻳﺎ ﻋﺒﺎرت‬ ‫دﻳﮕﺮي ﺑﺎﺷﺪ‪.‬‬

‫روال‪:‬‬ ‫ﺑﻼﻛﻲ از ﻛﺪ ﻛﻪ ﻣﻲﺗﻮاﻧﺪ از درون ﻳﻚ ﺑﺮﻧﺎﻣﻪي ﻛﺎرﺑﺮدي ﻓﺮاﺧﻮاﻧﻲ ﺷﻮد‪ .‬ﻳﻚ روال ﻣﻤﻜﻦ اﺳﺖ ﺑﺮاي‬ ‫ﺗﻌﻴﻴﻦ ﻣﺤﻞ ﺷﻲءﻫﺎ روي ﻓﺮم ﻳﺎ ﺑﺮاي ﻣﺤﺎﺳﺒﻪي اﻃﻼﻋﺎت از ﻣﺠﻤﻮﻋﻪي دادهﻫﺎي ﻛﺎرﺑﺮ ﻣﻮرد اﺳﺘﻔﺎده‬ ‫ﻗﺮار ﻣﻲﮔﻴﺮد‪.‬‬

‫ﭘﺮوژه‪:‬‬ ‫ﻣﺠﻤﻮﻋﻪاي از ﻓﺮمﻫﺎ و ﻣﺪولﻫﺎ ﻛﻪ ﻳﻚ ﺑﺮﻧﺎﻣﻪي ﻛﺎرﺑﺮدي را اﻳﺠﺎد ﻣﻲﻛﻨﻨﺪ‪.‬‬

‫‪--------------‬‬‫‪  Icon 1‬‬ ‫‪  Properties 2‬‬ ‫‪  Argument 3‬‬

‫ﺻﻔﺤﻪ‪٦ :‬‬

‫اﻫﻤﻴﺖ راﺑﻂِ ﮔﺮاﻓﻴﻜﻲ‪ ،‬ﻇﺎﻫﺮ ﺑﺮﻧﺎﻣﻪ‬ ‫اوﻟﻴﻦ و ﻣﻬﻤﺘﺮﻳﻦ ﻣﺮﺣﻠﻪي ﺳﺎﺧﺖ ﻳﻚ ﺑﺮﻧﺎﻣﻪ‪ ،‬ﺗﺼﻤﻴﻢﮔﻴﺮي ﻣﻲﺑﺎﺷﺪ؛ ﺗﺼﻤﻴﻢﮔﻴﺮي درﺑﺎرهي اﻳﻨﻜﻪ از‬ ‫ﻛﺎﻣﭙﻴﻮﺗﺮ ﭼﻪ ﻣﻲﺧﻮاﻫﻴﺪ‪ .‬اﻣﺎ دوﻣﻴﻦ ﻣﺮﺣﻠﻪ ﻛﻪ از ﻧﻈﺮ اﻫﻤﻴﺖ ﺗﻔﺎوﺗﻲ ﭼﻨﺪاﻧﻲ ﺑﺎ ﻣﺮﺣﻠﻪي اول ﻧﺪارد‪ ،‬ﻇﺎﻫﺮ‬ ‫ﺑﺮﻧﺎﻣﻪ ﻣﻲﺑﺎﺷﺪ‪ .‬ﻇﺎﻫﺮي ﻛﻪ ﻣﻲﺗﻮاﻧﺪ ﺑﻪ ﻛﻠﻲ دﻳﺪ ﻛﺎرﺑﺮ را ﻧﺴﺒﺖ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺗﻐﻴﻴﺮ دﻫﺪ‪ .‬ﺑﺮاي داﺷﺘﻦ‬ ‫ﻇﺎﻫﺮي ﻛﺎرﺑﺮﭘﺴﻨﺪ‪ ،‬و ﻫﻤﭽﻨﻴﻦ ﻣﺤﺼﻮﻟﻲ ﻗﺪرﺗﻤﻨﺪ ﺑﺎﻳﺪ ﺳﻪ ﻓﺎﻛﺘﻮر ﺑﺴﻴﺎر ﻣﻬﻢ زﻳﺮ را در ﻧﻈﺮ داﺷﺘﻪ ﺑﺎﺷﻴﺪ‪:‬‬ ‫‪ .1‬ﺳﻄﺢ ﻣﻬﺎرت ﻛﺎرﺑﺮ‬ ‫‪ .2‬ﻋﺎدتﻫﺎي ﻛﺎرﺑﺮ‬ ‫‪ .3‬ﻗﺎﺑﻠﻴﺖ ﺗﻐﻴﻴﺮ ﺗﻨﻈﻴﻤﺎت‬ ‫‪ .1‬اﮔﺮ ﺷﻤﺎ ﺳﻄﺢ داﻧﺶ و ﻣﻬﺎرت ﻛﺎرﺑﺮ ﺧﻮد را در ﻫﻨﮕﺎم ﻃﺮاﺣﻲ ﻇﺎﻫﺮ ﺑﺮﻧﺎﻣﻪ در ﻧﻈﺮ ﻧﮕﻴﺮﻳﺪ‪ ،‬ﻗﻄﻌﺎ ﺑﺎ‬ ‫اﻧﺘﻘﺎد روﺑﻪرو ﺧﻮاﻫﻴﺪ ﺷﺪ‪ .‬ﻣﻌﻤﻮﻻ ﻛﺎرﺑﺮان ﻣﺒﺘﺪي ﻋﻼﻗﻪي زﻳﺎدي ﺑﻪ ﺳﺮك ﻛﺸﻴﺪن در ﺑﺮﻧﺎﻣﻪ را دارﻧﺪ‪ ،‬در‬ ‫ﺣﺎﻟﻲ ﻛﻪ ﻛﺎرﺑﺮان ﺣﺮﻓﻪاي ﻣﻲﺧﻮاﻫﻨﺪ ﻫﺮ ﭼﻪ زودﺗﺮ ﻛﺎرﺷﺎن ﺑﺎ ﺑﺮﻧﺎﻣﻪ ﺗﻤﺎم ﺷﻮد‪.‬‬ ‫‪ .2‬ﻋﺎدتﻫﺎي ﻛﺎرﺑﺮ را ﺗﻐﻴﻴﺮ ﻧﺪﻫﻴﺪ ﻳﺎ ﺑﻪ ﻋﺒﺎرﺗﻲ دﻳﮕﺮ اﺳﺘﺎﻧﺪاردﻫﺎ را رﻋﺎﻳﺖ ﻛﻨﻴﺪ‪ .‬ﻣﺜﻼ ﻛﺎرﺑﺮ ﻋﺎدت‬ ‫دارد ﻛﻪ ‪ Exit‬را آﺧﺮﻳﻦ ﮔﺰﻳﻨﻪ از اوﻟﻴﻦ ﻣﻨﻮي ﻣﻮﺟﻮد در ﺳﻤﺖ ﭼﭗ )ﻣﻨﻮي ‪ (File‬ﺑﺒﻴﻨﺪ ﻳﺎ از ﻛﻠﻴﺪﻫﺎي‬ ‫ﺗﺮﻛﻴﺒﻲ ‪ Ctrl+C‬ﺑﺮاي ﻛﭙﻲ ﻛﺮدن اﺳﺘﻔﺎده ﻛﻨﺪ‪ .‬ﺣﺎل اﮔﺮ ﺷﻤﺎ اﻳﻦ ﻋﺎدتﻫﺎ را ﺗﻐﻴﻴﺮ ﺑﺪﻫﻴﺪ ﺑﺎﻋﺚ‬ ‫ﻋﺼﺒﺎﻧﻴﺖ ﺑﻌﻀﻲ از ﻛﺎرﺑﺮاﻧﺘﺎن ﻣﻲﺷﻮﻳﺪ‪.‬‬ ‫‪ .3‬راﺑﻂ ﻛﺎرﺑﺮ ﺑﺎﻳﺪ ﻗﺎﺑﻞ ﺗﻨﻈﻴﻢ ﺑﺎﺷﺪ‪ .‬ﻛﺎرﺑﺮﻫﺎ ﺳﻠﻴﻘﻪﻫﺎي ﻣﺨﺘﻠﻔﻲ دارﻧﺪ‪ ،‬در ﻧﺘﻴﺠﻪ ﺑﺎﻳﺪ ﺑﺘﻮاﻧﻨﺪ‪ ،‬ﺑﺮﻧﺎﻣﻪي‬ ‫ﺷﻤﺎ را ﺑﺮ ﺣﺴﺐ ﺳﻠﻴﻘﻪي ﺧﻮدﺷﺎن ﺗﻨﻈﻴﻢ ﻛﻨﻨﺪ‪ .‬اﻣﺎ ﭘﻴﺶ ﻓﺮض ﺑﺎﻳﺪ ﺑﻬﺘﺮﻳﻦ ﺗﻨﻈﻴﻢ ﺑﺎﺷﺪ‪ ،‬ﺗﺎ ﻛﺎرﺑﺮ ﻣﺠﺒﻮر‬ ‫ﻧﺸﻮد در اوﻟﻴﻦ ﺑﺮﺧﻮرد ﺑﺎ ﺑﺮﻧﺎﻣﻪ‪ ،‬ﺑﻪ ﻣﻨﻮي ‪ Setting‬ﻳﺎ ‪ Option‬ﺑﺮود‪ .‬ﻧﺤﻮهي ارﺗﺒﺎط ﺑﺮﻗﺮار ﻛﺮدن‬ ‫ﻛﺎرﺑﺮ ﺑﺎ ﺑﺮﻧﺎﻣﻪ ﺷﻤﺎ ﺑﺴﻴﺎر اﻫﻤﻴﺖ دارد‪ ،‬ﭘﺲ ﺳﻌﻲ ﻛﻨﻴﺪ ﺳﺎدهﺗﺮﻳﻦ‪ ،‬ﺷﻴﻚﺗﺮﻳﻦ و ﺟﺬابﺗﺮﻳﻦ ﻣﺤﻴﻂ‬ ‫ﻛﺎرﺑﺮي را اﻳﺠﺎد ﻛﻨﻴﺪ‪.‬‬

‫‪--------------‬‬‫اﺟﺮاي وﻳﮋوال ﺑﻴﺴﻴﻚ‬ ‫وﻳﮋوال ﺑﻴﺴﻴﻚ را از ﻃﺮﻳﻖ زﻳﺮ اﺟﺮا ﻛﻨﻴﺪ‪:‬‬ ‫‪Start → All Programs → Microsoft Visual Studio 6.0 → Microsoft Visual Basic 6.0‬‬

‫‪--------------‬‬‫ﺻﻔﺤﻪ‪٧ :‬‬

‫آﺷﻨﺎﻳﻲ ﺑﺎ ﻣﺤﻴﻂ وﻳﮋوال ﺑﻴﺴﻴﻚ‬ ‫ﺑﻌﺪ از اﺟﺮاي ﺑﺮﻧﺎﻣﻪ‪ ،‬ﻛﺎدر ﻣﺤﺎورهاي ‪ New  Project‬ﺑﻪ ﻧﻤﺎﻳﺶ در ﻣﻲآﻳﺪ‪ .‬اﻳﻦ ﻛﺎدر ﺑـﻪ ﺑﺮﻧﺎﻣـﻪﻧـﻮﻳﺲ‬ ‫اﻣﻜﺎن اﻧﺘﺨﺎب ﻳﻜﻲ از اﻧﻮاع ﺑﺮﻧﺎﻣﻪﻫﺎﻳﻲ را ﻣﻲدﻫﺪ ﻛﻪ ﻣﻲﺗﻮان در وﻳﮋوال ﺑﻴﺴﻴﻚ اﻳﺠﺎد ﻛﺮد‪.‬‬

‫اﻳﻦ ﻛﺎدر ﻣﺤﺎورهاي داراي ﺳﻪ زﺑﺎﻧﻪ ‪ 1‬ﻣﻲﺑﺎﺷﺪ‪  .‬‬ ‫• زﺑﺎﻧﻪ ‪ :New‬ﺑﺮاي اﻳﺠﺎد ﻳﻚ ﭘﺮوژه ﺟﺪﻳﺪ ‪ ‬‬ ‫• زﺑﺎﻧﻪ ‪ :Existing‬ﺑﺮاي ﺑﺎز ﻛﺮدن ﭘﺮوژهﻫﺎﻳﻲ ﻛﻪ از ﻗﺒﻞ اﻳﺠﺎد ﺷﺪهاﻧﺪ‪  .‬‬ ‫• زﺑﺎﻧﻪ ‪ :Recent‬ﻟﻴﺴﺘﻲ از آﺧﺮﻳﻦ ﭘﺮوژهﻫﺎي ﺑﺎز ﺷﺪه ﻳﺎ اﻳﺠﺎد ﺷﺪه را ﻧﺸﺎن ﻣﻲدﻫﺪ‪  .‬‬ ‫ﻧﻜﺘﻪ‪:‬‬ ‫اﮔﺮ ﻛﺎدر ﻣﺤﺎورهاي ‪ New  Project‬ﻧﻤﺎﻳﺶ داده ﻧﺸﺪ‪ ،‬اﺣﺘﻤﺎﻻ ﻛﺴﻲ ﮔﺰﻳﻨﻪ‬ ‫‪ Don’t show this Dialog in the future‬را ﺗﻴﻚ زده اﺳﺖ‪ .‬ﺑﺮاي ﻧﻤﺎﻳﺶ ﻣﺠﺪد اﻳﻦ ﻛﺎدر در‬ ‫ﻫﻨﮕﺎم ﺷﺮوع ﺑﺮﻧﺎﻣﻪ و ﺷﺮوع اﻳﺠﺎد ﭘﺮوژهي ﺟﺪﻳﺪ‪ ،‬اﺑﺘﺪا ﺑﻪ ﻣﻨﻮي ‪ Tools‬رﻓﺘﻪ‪ ،‬ﺳﭙﺲ ﺑﺮ روي ‪Option‬‬ ‫ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪ .‬ﺑﻌﺪ ﺑﻪ زﺑﺎﻧﻪ ‪ Environment‬رﻓﺘﻪ و ﮔﺰﻳﻨﻪ ‪ Prompt for project‬را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪ .‬ﻧﻮع‬ ‫‪ Standard  EXE‬ﻛﻪ ﺑﻪ ﻃﻮر ﭘﻴﺶﻓﺮض در اﻳﻦ ﻛﺎدر اﻧﺘﺨﺎب ﺷﺪه اﺳﺖ‪ ،‬ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ اﻣﻜﺎن‬ ‫ﻣﻲدﻫﺪ ﻛﻪ ﺑﺮﻧﺎﻣﻪي اﺟﺮاﻳﻲ اﺳﺘﺎﻧﺪاردي را اﻳﺠﺎد ﻛﻨﺪ؛ ﺑﺮﻧﺎﻣﻪﻫﺎﻳﻲ ﻛﻪ ﭘﺴﻮﻧﺪ ‪ EXE‬دارﻧﺪ‪ .‬ﺑﺮاي ﺑﺎز ﻛﺮدن‬ ‫ﻳﻚ ﭘﺮوژه ﺑﺮ روي آﻳﻜﻦ ﻣﻮرد ﻧﻈﺮ‪ ،‬داﺑﻞ ﻛﻠﻴﻚ ﻛﺮده ﻳﺎ رو آﻳﻜﻦ‪ ،‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪ ،‬ﺳﭙﺲ ﻛﻠﻴﺪ ‪ Enter‬ﻳﺎ‬

‫‪Tab 1‬‬

‫ﺻﻔﺤﻪ‪٨ :‬‬

‫دﻛﻤﻪي ‪ Open‬را ﻓﺸﺎر دﻫﻴﺪ‪ .‬ﻧﻮع ﭘﻴﺶ ﻓﺮض را ﺑﺎز ﻛﻨﻴﺪ‪ .‬ﺑﺎ ﺑﺎز ﺷﺪن ﭘﺮوژه‪ ،‬ﻛﺎدر ﻣﺤﺎورهاي ﺑﺴﺘﻪ‬ ‫ﺷﺪه و وارد ﻣﺤﻴﻂ ‪ IDE‬ﻣﻲﺷﻮﻳﻢ‪ .‬ﭘﺮوژهي ‪ Standard EXE‬داراي ﻛﺎدر و ﭘﻨﺠﺮهﻫﺎي‪ ‬زﻳﺮ اﺳﺖ‪:‬‬ ‫• ﭘﻨﺠﺮهي‪  Project ‬‬ ‫• ﭘﻨﺠﺮهي‪  Form Layout ‬‬ ‫• ﭘﻨﺠﺮهي ‪  Properties‬‬ ‫• ﭘﻨﺠﺮهي ‪  Form‬‬ ‫• ﺟﻌﺒﻪاﺑﺰار ﻳﺎ ‪  Toolbox‬‬ ‫• ﻧﻮار ﻣﻨﻮ ﻳﺎ ‪  Menu Bar‬‬ ‫• ﻧﻮاراﺑﺰار ﻳﺎ ‪  Toolbar‬‬ ‫‪ ‬‬

‫ﺻﻔﺤﻪ‪٩ :‬‬

‫ﭘﻨﺠﺮهي ﭘﺮوژه‬ ‫ﭘﻨﺠﺮه ﭘﺮوژه ﻳﺎ ‪ Project  Explorer‬ﺗﻤﺎم ﻓﺎﻳﻠﻬﺎﻳﻲ ﻛﻪ ﺑﺎﻋﺚ اﻳﺠﺎد ﻳﻚ ﺑﺮﻧﺎﻣﻪ در وﻳﮋوال ﺑﻴﺴﻴﻚ‬ ‫ﻣﻲﺷﻮﻧﺪ را ﻟﻴﺴﺖ ﻣﻲﻛﻨﺪ‪ .‬اﻳﻦ ﭘﻨﺠﺮه ﻳﻜﻲ از ﻣﻬﻢﺗﺮﻳﻦ اﺑﺰارﻫﺎي ﻣﺪﻳﺮﻳﺖ ﭘﺮوژه ﻣﻲﺑﺎﺷﺪ‪ .‬در ﺻﻮرت‬ ‫ﻋﺪم ﻣﺸﺎﻫﺪهي اﻳﻦ ﭘﻨﺠﺮه‪ ،‬ﻛﻠﻴﺪﻫﺎي ‪ Ctrl+R‬را ﻓﺸﺎر دﻫﻴﺪ ﻳﺎ از ﻣﻨﻮي ‪ View‬ﮔﺰﻳﻨﻪي ‪Project ‬‬ ‫‪ Explorer‬را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪ .‬در ﻗﺴﻤﺖ ﺑﺎﻻي اﻳﻦ ﭘﻨﺠﺮه‪ ،‬ﺗﻌﺪادي دﻛﻤﻪ وﺟﻮد دارد ﻛﻪ ﺑﻪ ﻋﻨﻮان ﻧﻮار‬ ‫اﺑﺰار اﻳﻦ ﭘﻨﺠﺮه ﺷﻨﺎﺧﺘﻪ ﻣﻲﺷﻮﻧﺪ‪:‬‬

‫• اوﻟﻴﻦ دﻛﻤﻪ از ﺳﻤﺖ ﭼﭗ‪ ،‬دﻛﻤﻪ ‪ View Code‬ﻣﻲﺑﺎﺷﺪ؛ ﺑﺎ ﻛﻠﻴﻚ ﺑﺮ روي اﻳﻦ دﻛﻤﻪ وارد‬ ‫ﻣﺤﻴﻂ ﻛﺪﻧﻮﻳﺴﻲ وﻳﮋوال ﺑﻴﺴﻴﻚ ﻣﻲﺷﻮﻳﺪ‪.‬‬ ‫• دوﻣﻴﻦ دﻛﻤﻪ ‪ View Object‬ﻧﺎم دارد‪ .‬اﮔﺮ در ﻗﺴﻤﺖ ﻛﺪﻧﻮﻳﺴﻲ ﺑﺮﻧﺎﻣﻪ ﺑﺎﺷﻴﺪ و اﻳﻦ دﻛﻤﻪ را‬ ‫ﻛﻠﻴﻚ ﻛﻨﻴﺪ ﺑﻪ ﻗﺴﻤﺖ ﻃﺮاﺣﻲ ﺑﺮﻧﺎﻣﻪ ﺑﺎز ﻣﻲﮔﺮدﻳﺪ‪.‬‬ ‫• ﺑﺎ ﻓﻌﺎل ﺑﻮدن دﻛﻤﻪي آﺧﺮ ﻳﻌﻨﻲ ‪ ،Toggle  Folders‬ﺗﻤﺎﻣﻲ ﻓﺎﻳﻞﻫﺎي ﻣﻮﺟﻮد در ﭘﻨﺠﺮهي‬ ‫‪ Project Explorer‬ﺑﻪ ﺻﻮرت ﺳﺎزﻣﺎﻧﺪﻫﻲ ﺷﺪه در ﻣﻲآﻳﻨﺪ و ﻫﺮ ﻳﻚ از اﻧﻮاع ﻣﺨﺘﻠﻒ اﻳﻦ‬ ‫ﻓﺎﻳﻠﻬﺎ داراي ﭘﻮﺷﻪاي اﺧﺘﺼﺎﺻﻲ ﻣﻲﺷﻮﻧﺪ‪  .‬‬ ‫ﻳﺎدآوري‪:‬‬ ‫ﺷﻤﺎ ﻣﻲﺗﻮاﻧﻴﺪ در ﻓﻀﺎي ﺧﺎﻟﻲ اﻳﻦ ﭘﻨﺠﺮه ﻛﻠﻴﻚ راﺳﺖ ﻛﻨﻴﺪ ﺗﺎ ﺑﺎ اﻣﻜﺎﻧﺎت اﻳﻦ ﭘﻨﺠﺮه آﺷﻨﺎ ﺑﺸﻮﻳﺪ‪ .‬ﻳﻜﻲ از‬ ‫اﻳﻦ ﮔﺰﻳﻨﻪﻫﺎ ‪ Add‬ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﻣﻲﺗﻮاﻧﻴﺪ در ﺻﻮرت ﻟﺰوم‪ ،‬اﺟﺰاي دﻳﮕﺮي را ﺑﻪ ﭘﺮوژه اﺿﺎﻓﻪ ﻛﻨﻴﺪ‪ .‬ﻣﻨﻈﻮر‬ ‫از اﺟﺰا ﻫﻤﺎن ﻓﺮﻣﻬﺎ‪ ،‬ﻣﺎژوﻟﻬﺎ و ‪ ...‬ﻣﻲﺑﺎﺷﻨﺪ‪.‬‬

‫‪---------------‬‬

‫ﺻﻔﺤﻪ‪١٠ :‬‬

‫ﭘﻨﺠﺮهي ‪Form Layout‬‬ ‫اﻳﻦ ﭘﻨﺠﺮه ﻣﺤﻞ ﻓﺮم را ﺑﻪ ﻫﻨﮕﺎم اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﺑﺮ روي ﺻﻔﺤﻪي ﻧﻤﺎﻳﺶ ﻣﺸﺨﺺ ﻣﻲﻛﻨﺪ‪.‬‬

‫ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻲﺑﻴﻨﻴﺪ اﻳﻦ ﭘﻨﺠﺮه ﻳﻚ ﺻﻔﺤﻪي ﻧﻤﺎﻳﺶ را ﻧﺸﺎن ﻣﻲدﻫﺪ ﻛﻪ در داﺧﻞ آن ﻣﺤﻞ ﻗﺮار ﮔﺮﻓﺘﻦ‬ ‫ﻓﺮم ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ‪ .‬ﺷﻤﺎ ﻣﻴﺘﻮاﻧﻴﺪ ﺑﺎ ﻛﻠﻴﻚ راﺳﺖ ﺑﺮ روي ‪ Form1‬و اﻧﺘﺨﺎب ﮔﺰﻳﻨﻪ ‪Startup ‬‬ ‫‪ Position‬ﻳﻜﻲ از اﻧﻮاع ﻣﺨﺘﻠﻒ ﻗﺮار ﮔﻴﺮي را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪ .‬ﺣﺎﻟﺖ ‪ Manual‬ﻓﺮم را در ﻫﻤﺎن‬ ‫ﻗﺴﻤﺘﻲ ﻗﺮار ﻣﻲدﻫﺪ ﻛﻪ ﺷﻤﺎ ﻗﺒﻼ ﺗﻌﻴﻴﻦ ﻛﺮدهاﻳﺪ‪ .‬ﺣﺎﻟﺖ ‪ Center Owner‬ﻓﺮم را در ﻗﺴﻤﺖ ﻣﺮﻛﺰ‬ ‫ﻓﺮم واﻟﺪ ﻗﺮار ﻣﻲدﻫﺪ‪ .‬ﺣﺎﻟﺖ ‪ Center Screen‬ﻓﺮم را در ﻣﺮﻛﺰ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻗﺮار ﻣﻲدﻫﺪ؛ اﻳﻦ‬ ‫ﮔﺰﻳﻨﻪ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ رزﻟﻮﺷﻦ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻛﺎر ﻣﻲﻛﻨﺪ‪ .‬ﺣﺎﻟﺖ آﺧﺮ ﻳﻌﻨﻲ ‪ Windows Default‬ﻓﺮم را در‬ ‫ﻫﺮ ﺑﺎر اﺟﺮا ﺑﻪ ﺻﻮرت ﺗﺼﺎدﻓﻲ در ﻳﻚ ﺟﺎﻳﻲ از ﺻﻔﺤﻪ ﻗﺮار ﻣﻲدﻫﺪ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺷﻤﺎ ﻣﻲﺗﻮاﻧﻴﺪ ﻣﺤﻞ‬ ‫ﻗﺮارﮔﻴﺮي ﻓﺮم را ﺑﻪ ﺻﻮرت دﺳﺘﻲ ﺗﻨﻈﻴﻢ ﻛﻨﻴﺪ‪ .‬ﺑﺮاي اﻳﻦ ﻛﺎر ‪ Form1‬را درگ‪ ،‬و در ﺟﺎﻳﻲ دﻳﮕﺮ دراپ‬ ‫ﻛﻨﻴﺪ‪ .‬در ﺻﻮرت ﻋﺪم ﻣﺸﺎﻫﺪه اﻳﻦ ﭘﻨﺠﺮه از ﻣﻨﻮي ‪ View‬ﮔﺰﻳﻨﻪي ‪ Form  Layout  Window‬را‬ ‫اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪.‬‬

‫‪--------------‬‬‫ﭘﻨﺠﺮهي ﻣﺸﺨﺼﻪﻫﺎ‬ ‫اﻳﻦ ﭘﻨﺠﺮه وﻳﮋﮔﻲﻫﺎ و ﻣﺸﺨﺼﻪﻫﺎي ﻓﺮم ﻳﺎ ﺷﻲء اﻧﺘﺨﺎب ﺷﺪه را ﺑﻪ دو ﺻﻮرت اﻟﻔﺒﺎﻳﻲ و ﮔﺮوﻫﻲ ﻧﺸﺎن‬ ‫ﻣﻲدﻫﺪ‪ .‬در ﺻﻮرت ﻋﺪم ﻣﺸﺎﻫﺪهي اﻳﻦ ﭘﻨﺠﺮه ﻛﻠﻴﺪ ‪ F4‬را ﻓﺸﺎر دﻫﻴﺪ ﻳﺎ از ﻣﻨﻮي ‪ View‬ﮔﺰﻳﻨﻪ‬ ‫‪ Properties Window‬را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪.‬‬

‫ﺻﻔﺤﻪ‪١١ :‬‬

‫ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺷﻜﻞ ﺑﺎﻻ ﻣﺸﺎﻫﺪه ﻣﻲﻛﻨﻴﺪ در ﺑﺎﻻي ﭘﻨﺠﺮه‪ ،‬ﺟﻌﺒﻪي ﻟﻴﺴﺘﻲ وﺟﻮد دارد ﻛﻪ در آن ﻧﺎم ﺷﻲء ﻳﺎ‬ ‫ﻓﺮﻣﻲ ﻛﻪ ﻣﺸﺨﺼﻪﻫﺎي آن در اﻳﻦ ﭘﻨﺠﺮه آورده ﺷﺪه اﺳﺖ‪ ،‬ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪ .‬داﺧﻞ اﻳﻦ ﻟﻴﺴﺖ ﻧﺎم‬ ‫ﺗﻤﺎﻣﻲ ﺷﻲءﻫﺎ و ﻫﻤﭽﻨﻴﻦ ﻧﺎم ﻓﺮﻣﻲ ﻛﻪ ﻓﻌﺎل اﺳﺖ‪ ،‬آورده ﺷﺪه اﺳﺖ‪.‬‬

‫‪--------------‬‬‫ﭘﻨﺠﺮهي ﻓﺮمﻫﺎ‬ ‫اﻳﻦ ﭘﻨﺠﺮه‪ ،‬ﻓﺮم ﻓﻌﺎل در ﭘﻨﺠﺮهي ﭘﺮوژه را ﺑﺎ ﺗﻤﺎم ﺷﻲءﻫﺎي ﻣﺮﺑﻮط ﺑﻪ آن‪ ،‬در ﻳﻚ راﺑﻂ ﮔﺮاﻓﻴﻜﻲ ﻛﺎرﺑﺮ‬ ‫ﻧﺸﺎن ﻣﻲدﻫﺪ‪.‬‬

‫‪1‬‬

‫‪--------------‬‬‫ﺟﻌﺒﻪاﺑﺰار‪:‬‬

‫اﻳﻦ ﻗﺴﻤﺖ ﺷﺎﻣﻞ ﺗﻤﺎم ﻛﻨﺘﺮﻟﻬﺎﻳﻲ اﺳﺖ ﻛﻪ در ﻃﺮاﺣﻲ ﺑﺮﻧﺎﻣﻪ از آﻧﻬﺎ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﻢ‪.‬‬

‫ﺑﺮﺧﻲ از اﻳﻦ ﻛﻨﺘﺮلﻫﺎ ﻣﺸﺨﺼﻪﻫﺎﻳﻲ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮد و ﺑﺮﺧﻲ دﻳﮕﺮ ﻣﺸﺨﺼﻪﻫﺎي ﻣﺸﺘﺮك دارﻧﺪ‪.‬‬

‫‪  Graphic User Interface 1‬‬

‫ﺻﻔﺤﻪ‪١٢ :‬‬

‫ﻧﺎم ﻛﻨﺘﺮل‬

‫ﻋﻤﻠﻜﺮد‬ ‫ﻓﻌﺎل ﺑﻮدن اﺷﺎرهﮔﺮ ﻣﻮس‬

‫‪  Pointer‬‬

‫ﻛﻨﺘﺮﻟﻲ ﺑﺮاي درج ﺗﺼﻮﻳﺮ‬

‫‪  PictureBox‬‬

‫از اﻳﻦ ﻛﻨﺘﺮل ﺑﺮاي ﻧﻤﺎﻳﺶ ﻣﺘﻦ ﻏﻴﺮ ﻗﺎﺑﻞ وﻳﺮاﻳﺶ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬ ‫از اﻳﻦ ﻛﻨﺘﺮل ﺑﺮاي ﻣﺘﻦﻫﺎي ﻗﺎﺑﻞ وﻳﺮاﻳﺶ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬ ‫وﻇﻴﻔﻪي ﻛﻨﺘﺮل ﻓﺮﻳﻢ دﺳﺘﻪﺑﻨﺪي ﻇﺎﻫﺮي و ﻣﻨﻄﻘﻲ ﻛﻨﺘﺮلﻫﺎ اﺳﺖ‪.‬‬ ‫ﺑﺮاي ﺷﺮوع‪ ،‬ﺗﻮﻗﻒ و ﭘﺎﻳﺎن ﻳﻚ ﻓﺮاﻳﻨﺪ از اﻳﻦ ﻛﻨﺘﺮل اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬ ‫ﺑﺮاي اراﻳﻪي اﻧﺘﺨﺎب ‪ Yes/No‬ﻳﺎ ‪ True/False‬ﺑﻪ ﻛﺎرﺑﺮ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬ ‫دﻛﻤﻪ اﻧﺘﺨﺎب ﺑﺮاي اﻧﺘﺨﺎب اﻧﺤﺼﺎري ﻳﻚ ﮔﺰﻳﻨﻪ از ﻣﻴﺎن ﭼﻨﺪ ﮔﺰﻳﻨﻪ ﺑﻪ ﻛﺎر ﻣﻲرود‪.‬‬

‫‪  Label‬‬ ‫‪  TextBox‬‬ ‫‪  Frame‬‬ ‫‪CommandButton‬‬ ‫‪  CheckBox‬‬ ‫‪  OptionButton‬‬ ‫‪ComboBox‬‬

‫اﻳﺠﺎد ﺟﻌﺒﻪاي ﻛﺸﻮﻳﻲ ﻳﺎ ﻛﺮﻛﺮهاي‬

‫‪  ListBox‬‬

‫ﺑﺮاي ﻧﻤﺎﻳﺶ ﻟﻴﺴﺘﻲ دادهﻫﺎ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮد‪.‬‬ ‫از اﻳﻦ ﻛﻨﺘﺮل ﺑﺮاي اﻳﺠﺎد ﭘﻴﻤﺎﻳﺶﮔﺮ اﻓﻘﻲ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬

‫‪HScrollBar‬‬

‫وﻇﻴﻔﻪي اﻳﻦ ﻛﻨﺘﺮل اﻳﺠﺎد ﭘﻴﻤﺎﻳﺶﮔﺮ ﻋﻤﻮدي ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫‪VScrollBar‬‬

‫ﻛﻨﺘﺮﻟﻲ ﻛﻪ ﻛﺎرﻫﺎي ﺗﻜﺮاري را در ﺑﺎزه زﻣﺎﻧﻲ ﺗﻌﻴﻴﻦ ﺷﺪه اﻧﺠﺎم ﻣﻲدﻫﺪ‪.‬‬

‫‪Timer‬‬

‫اﻳﻦ ﻛﻨﺘﺮل ﺗﻤﺎﻣﻲ دراﻳﻮﻫﺎي ﻣﻮﺟﻮد در روي ﺳﻴﺴﺘﻢ را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪.‬‬

‫‪DriveListBox‬‬

‫ﺑﺮاي ﻧﻤﺎﻳﺶ ﭘﻮﺷﻪﻫﺎي ﻣﻮﺟﻮد در ﻳﻚ دراﻳﻮ ﻛﺎرﺑﺮد دارد‪.‬‬

‫‪DirListBox‬‬

‫ﺑﺮاي ﻧﻤﺎﻳﺶ ﻓﺎﻳﻠﻬﺎي ﻣﻮﺟﻮد در ﻳﻚ دراﻳﻮ از اﻳﻦ ﻛﻨﺘﺮل اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬

‫‪FileListBox‬‬

‫از اﻳﻦ ﻛﻨﺘﺮل ﺑﺮاي ﻧﻤﺎﻳﺶ اﺷﻜﺎل ﻫﻨﺪﺳﻲ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬

‫‪Shape‬‬ ‫‪Line‬‬

‫ﻛﻨﺘﺮﻟﻲ ﺑﺮاي ﻛﺸﻴﺪن ﺧﻂ‬ ‫از اﻳﻦ ﻛﻨﺘﺮل ﻧﻴﺰ ﺑﺮاي ﻧﻤﺎﻳﺶ ﺗﺼﻮﻳﺮ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬

‫‪Image‬‬

‫ﻛﻨﺘﺮﻟﻲ ﺑﺮاي دﺳﺘﺮﺳﻲ آﺳﺎن ﺑﻪ ﺑﺎﻧﻚﻫﺎي اﻃﻼﻋﺎﺗﻲ‬

‫‪Data‬‬

‫اﻳﻦ ﻛﻨﺘﺮل اﻣﻜﺎن دﺳﺘﺮﺳﻲ ﺑﻪ دادهﻫﺎ از ﭼﻨﺪﻳﻦ ﻣﻨﺒﻊ ﻣﺨﺘﻠﻒ را ﻓﺮاﻫﻢ ﻣﻲﻛﻨﺪ‪.‬‬

‫‪OLE‬‬

‫‪ ‬‬ ‫ﺻﻔﺤﻪ‪١٣ :‬‬

‫آﻳﻜﻦ‬

‫‪--------------‬‬‫ﻧﻮار ﻣﻨﻮ‬ ‫ﻣﻜﺎﻧﻲ اﺳﺖ ﻛﻪ در اﻛﺜﺮ ﺑﺮﻧﺎﻣﻪﻫﺎي ﺗﺤﺖ وﻳﻨﺪوز وﺟﻮد دارد و ﺷﺎﻣﻞ دﺳﺘﻮراﺗﻲ ﺑﺮاي ﺳﺎﺧﺖ‪ ،‬ﻧﮕﻬﺪاري‬ ‫و راهاﻧﺪازي ﺑﺮﻧﺎﻣﻪﻫﺎﺳﺖ‪ .‬ﺟﺪول زﻳﺮ وﻇﺎﻳﻒ ﻫﺮ ﺑﺨﺶ از ﻣﻨﻮ را ﺑﻪ ﻃﻮر ﺧﻼﺻﻪ اراﻳﻪ ﻛﺮده اﺳﺖ‪:‬‬ ‫وﻇﺎﻳﻒ‬

‫ﻣﻨﻮي‬ ‫‪File‬‬

‫ﺑﺎز ﻛﺮدن‪ ،‬ذﺧﻴﺮه و ﭼﺎپ ﭘﺮوژه‬

‫‪Edit‬‬

‫ﻛﭙﻲ‪ ،‬اﻧﺘﻘﺎل‪ ،‬ﺟﺴﺘﺠﻮ‪ ،‬ﺣﺬف و ﻏﻴﺮه‬

‫‪View‬‬

‫ﻧﺤﻮهي ﻧﻤﺎﻳﺶ ﭘﻨﺠﺮهﻫﺎي ﻣﺤﻴﻂ ‪  IDE‬‬

‫‪Project‬‬

‫اﻓﺰودن ﺧﺼﻴﺼﻪﻫﺎﻳﻲ ﻣﺎﻧﻨﺪ ﻓﺮمﻫﺎ ﺑﻪ ﻳﻚ ﭘﺮوژه‬

‫‪Format‬‬

‫ﺗﻨﻈﻴﻢ ﺷﻲءﻫﺎي ﻣﻮﺟﻮد ﺑﺮ روي ﻓﺮم‬

‫‪Debug‬‬

‫ﺧﻄﺎﻳﺎﺑﻲ‬

‫‪Run‬‬

‫اﺟﺮا‪ ،‬ﻣﺘﻮﻗﻒ ﻛﺮدن ﺑﺮﻧﺎﻣﻪ و ‪...‬‬

‫‪Query‬‬

‫ﺑﺎزﻳﺎﺑﻲ دادهﻫﺎ از ﭘﺎﻳﮕﺎه دادهﻫﺎ‬

‫‪ Diagram‬وﻳﺮاﻳﺶ و اﺻﻼح در ﻃﺮاﺣﻲ ﭘﺎﻳﮕﺎهﻫﺎي داده‬ ‫‪Tools‬‬ ‫‪Add‐Ins‬‬

‫اﺑﺰارﻫﺎي ‪ VB‬و ﺑﻬﻴﻨﻪﺳﺎزي ﻣﺤﻴﻂ ﻛﺎري‬ ‫ﻧﺼﺐ و ﺣﺬف ﺑﺮﻧﺎﻣﻪﻫﺎي اﻓﺰودﻧﻲ‬

‫‪ Window‬ﻣﺮﺗﺐ ﻛﺮدن و ﻧﻤﺎﻳﺶ ﭘﻨﺠﺮهﻫﺎ‬ ‫‪Help‬‬

‫اﺳﺘﻔﺎده از راﻫﻨﻤﺎي ﺑﺮﻧﺎﻣﻪ )در ﺻﻮرت ﻧﺼﺐ ‪(MSDN‬‬

‫‪---------------‬‬

‫‪ ‬‬

‫ﻧﻮاراﺑﺰار‬ ‫در ﭘﺎﻳﻴﻦ ﻧﻮار ﻣﻨﻮ‪ ،‬اﺑﺰاري وﺟﻮد دارد ﻛﻪ داراي دﻛﻤﻪﻫﺎي ﻣﻌﺎدل ﮔﺰﻳﻨﻪﻫﺎي ﻣﻨﻮﻫﺎﺳﺖ و ﺑﻪ وﺳﻴﻠﻪي‬

‫ﺻﻔﺤﻪ‪١٤ :‬‬

‫آﻧﻬﺎ ﻣﻲﺗﻮان ﺑﻪ ﺳﺮﻋﺖ ﺑﺮﺧﻲ از دﺳﺘﻮرﻫﺎي ﻣﻮﺟﻮد در ﻣﻨﻮ را اﺟﺮا ﻛﺮد‪ .‬ﺑﺮﺧﻲ از اﻳﻦ دﻛﻤﻪﻫﺎ ﻫﻨﮕﺎم‬ ‫ﻓﻌﺎل ﺑﻮدن ﭘﻨﺠﺮهي ﻛﺪﻧﻮﻳﺴﻲ و ﺑﺮﺧﻲ دﻳﮕﺮ در ﻫﻨﮕﺎم ﻓﻌﺎل ﺑﻮدن ﭘﻨﺠﺮهي ﻓﺮمﻫﺎ‪ ،‬ﻓﻌﺎي ﻣﻲﺑﺎﺷﻨﺪ‪.‬‬ ‫ﻋﻤﻠﻜﺮد‬

‫آﻳﻜﻦ‬

‫ﺷﺮوع ﭘﺮوژهاي ﺟﺪﻳﺪ؛ اﻟﺒﺘﻪ ﺑﺪون اﺳﺘﻔﺎده از ﭘﻨﺠﺮهي ‪  New Project‬‬ ‫ﺑﺮاي اﺿﺎﻓﻪ ﻛﺮدن ﻓﺮم‪ ،‬ﻣﺎژول‪ ،‬ﻛﻼس و ‪ ...‬ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮد‪.‬‬ ‫ﻧﻤﺎﻳﺶ ﭘﻨﺠﺮهي ‪Menu Editor‬؛ ﺑﺮاي درج ﻣﻨﻮ در ﺑﺮﻧﺎﻣﻪ‬ ‫از اﻳﻦ دﻛﻤﻪ ﺑﺮاي ﺑﺎزﻛﺮدن ﭘﺮوژهﻫﺎﻳﻲ ﻛﻪ از ﻗﺒﻼ اﻳﺠﺎد ﺷﺪهاﻧﺪ‪ ،‬اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬ ‫ذﺧﻴﺮه ﻛﺮدن ﭘﺮوژهي در ﺣﺎل ﻛﺎر‬ ‫ﺑﺮاي اﻧﺘﻘﺎل ﻣﺘﻦ ﻳﺎ ﻛﻨﺘﺮل از اﻳﻦ دﻛﻤﻪ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ‪.‬‬ ‫اﻳﻦ دﻛﻤﻪ در ﻧﺴﺨﻪﺑﺮداري از ﻛﻨﺘﺮلﻫﺎ و ﻣﺘﻦﻫﺎ ﻛﺎرﺑﺮد دارد‪.‬‬ ‫ﺑﺎ اﺳﺘﻔﺎده از اﻳﻦ دﻛﻤﻪ ﻣﻲﺗﻮاﻧﻴﺪ ﻣﺤﺘﻮاي ﺣﺎﻓﻈﻪ ﻣﻮﻗﺖ را ﺑﻪ ﻣﺤﻞ دﻳﮕﺮي از ﺑﺮﻧﺎﻣﻪ اﻧﺘﻘﺎل دﻫﻴﺪ‪.‬‬ ‫ﺑﺮاي ﻳﺎﻓﺘﻦ ﻣﺘﻦ ﻣﻮرد ﻧﻈﺮ در ﺑﺨﺶ ﻛﺪﻧﻮﻳﺴﻲ وﻳﮋوال ﺑﻴﺴﻴﻚ‪ ،‬از اﻳﻦ دﻛﻤﻪ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪.‬‬ ‫آﺧﺮﻳﻦ ﻋﻤﻞ اﻧﺠﺎم ﺷﺪه را ﻟﻐﻮ ﻣﻲﻛﻨﺪ‪.‬‬ ‫ﺑﺎزﮔﺸﺖ ﺑﻪ آﺧﺮﻳﻦ ﻋﻤﻞ ﻟﻐﻮ ﺷﺪه‪  .‬‬ ‫ﺑﺮاي اﺟﺮاي ﺑﺮﻧﺎﻣﻪ از اﻳﻦ دﻛﻤﻪ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪(F5) .‬‬ ‫ﻣﺘﻮﻗﻒ ﻛﺮدن ﻣﻮﻗﺖ ﺑﺮﻧﺎﻣﻪي در ﺣﺎل اﺟﺮا‪ ،‬ﺟﻬﺖ ﻋﻴﺐﻳﺎﺑﻲ‪ ،‬ﺑﺎزﺑﻴﻨﻲ و ‪. ...‬‬ ‫اﻳﻦ دﻛﻤﻪ ﺑﺮﻧﺎﻣﻪي در ﺣﺎل اﺟﺮا را‪ ،‬ﺑﻪ ﻃﻮر ﻛﺎﻣﻞ ﻣﺘﻮﻗﻒ ﻣﻲﻛﻨﺪ‪.‬‬ ‫ﻧﻤﺎﻳﺶ ﭘﻨﺠﺮهي ‪Project Explorer‬‬

‫ﻧﻤﺎﻳﺶ ﭘﻨﺠﺮهي ﻣﺸﺨﺼﻪﻫﺎ‬ ‫ﻧﻤﺎﻳﺶ ﭘﻨﺠﺮهي ‪Form Layout‬‬

‫ﻧﻤﺎﻳﺶ ﭘﻨﺠﺮهي ‪  Object Browser‬‬ ‫ﻧﻤﺎﻳﺶ ‪Toolbox‬‬

‫اﺑﺰاري ﺑﺮاي ﺑﺮرﺳﻲ ﻛﺮدن ﺳﺎﺧﺘﺎر و ﻣﺤﺘﻮﻳﺎت ﻳﻚ ﭘﺎﻳﮕﺎه داده‪.‬‬ ‫اﺑﺰاري ﺑﺮاي ذﺧﻴﺮهﺳﺎزي‪ ،‬ﺳﺎزﻣﺎﻧﺪﻫﻲ و اﺷﺘﺮاك ﮔﺬاري ﻛﺎﻣﭙﻮﻧﻨﺖﻫﺎ‪.‬‬ ‫ﺻﻔﺤﻪ‪١٥ :‬‬

‫‪ ‬‬

‫‪--------------‬‬‫اوﻟﻴﻦ ﭘﺮوژه‪ ،‬اوﻟﻴﻦ ﺑﺮﻧﺎﻣﻪ‬ ‫وﻳﮋوال ﺑﻴﺴﻴﻚ را اﺟﺮا ﻛﺮده و ﻳﻚ ﭘﺮوژه از ﻧﻮع اﺳﺘﺎﻧﺪارد اﻳﺠﺎد ﻛﻨﻴﺪ‪ .‬ﻓﺮم اﺻﻠﻲ ﻳﺎ ‪ Form1‬را‬ ‫ﻣﺸﺎﻫﺪه ﻣﻲﻛﻨﻴﺪ‪ .‬ﻣﺎ در اﻳﻦ ﺑﺨﺶ ﻗﺼﺪ دارﻳﻢ ﻛﺎرﻣﺎن را ﺑﺎ ﻣﺜﺎل ﻣﻌﺮوف و ﻛﻼﺳﻴﻚ ‪Hello World‬‬ ‫ﺷﺮوع ﻛﻨﻴﻢ‪ .‬از ﺟﻌﺒﻪاﺑﺰار ﻛﻨﺘﺮلﻫﺎي ‪ Label‬و ‪ CommandButton‬را ﭘﻴﺪا ﻛﻨﻴﺪ؛ از ﻫﺮﻛﺪام ﻳﻜﻲ‬ ‫ﺑﺮ روي ﻓﺮم ﻗﺮار دﻫﻴﺪ؛ ﺑﺮاي ﻗﺮار دادن اﻳﻦ ﺷﻲءﻫﺎ ﺑﺮ روي ﻓﺮم دو روش وﺟﻮد دارد‪:‬‬ ‫• اﻧﺘﺨﺎب ﻛﻨﺘﺮل ﻣﻮرد ﻧﻈﺮ ←‪  ‬درگ ﻛﺮدن ﺑﺮ روي ﻓﺮم ‪ ‬‬ ‫• داﺑﻞﻛﻠﻴﻚ ﺑﺮ روي ﻛﻨﺘﺮل ‪ ‬‬ ‫ﺣﺎل ﺑﺎﻳﺪ ﺳﺮاغ ﻛﺪﻧﻮﻳﺴﻲ ﺑﺮﻧﺎﻣﻪ ﺑﺮوﻳﻢ‪ .‬ﺑﺮاي رﻓﺘﻦ ﺑﻪ ﺑﺨﺶ ﻛﺪﻧﻮﻳﺴﻲ وﻳﮋوال ﺑﻴﺴﻴﻚ ﭼﻨﺪ راه وﺟﻮد‬ ‫دارد‪:‬‬ ‫• داﺑﻞ ﻛﻠﻴﻚ روي ﺷﻲء ‪ ‬‬ ‫• اﻧﺘﺨﺎب ﺷﻲء ﺑﺎ ﻣﺎوس و ﻓﺸﺎر دادن ﻛﻠﻴﺪ ‪  F7‬‬ ‫• اﻧﺘﺨﺎب ﺷﻲء ﻣﻮرد ﻧﻈﺮ و اﻧﺘﺨﺎب ﮔﺰﻳﻨﻪ ‪ Code‬از ﻣﻨﻮي ‪  View‬‬ ‫• اﺳﺘﻔﺎده از دﻛﻤﻪي ﻣﻮﺟﻮد در ﻧﻮار اﺑﺰار ﭘﻨﺠﺮهي ‪  Project Explorer‬‬ ‫• ﻛﻠﻴﻚ راﺳﺖ ﺑﺮ روي ﺷﻲء ﻣﻮرد ﻧﻈﺮ و اﻧﺘﺨﺎب ﮔﺰﻳﻨﻪي ‪  View Code‬‬ ‫• ﻛﻠﻴﻚ راﺳﺖ در ﭘﻨﺠﺮهي ‪ Project Explorer‬و اﻧﺘﺨﺎب ﮔﺰﻳﻨﻪي ‪  View Code‬‬ ‫ﻫﻢ اﻛﻨﻮن ﻛﺪ زﻳﺮ را ﺑﺮاي ‪ Command1‬ﺑﻨﻮﻳﺴﻴﺪ‪  :‬‬

‫‪ ‬‬

‫ﺻﻔﺤﻪ‪١٦ :‬‬

‫ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﻛﻨﻴﺪ و ﺳﭙﺲ ﺑﺮ روي ‪ Command1‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪ .‬ﺧﻮاﻫﻴﺪ دﻳﺪ ﻛﻪ ﻣﺘﻦ ﻣﻮﺟﻮد ﺑﺮ روي‬ ‫ﻟﻴﺒﻞ ﺗﻐﻴﻴﺮ ﻣﻲﻛﻨﺪ‪ .‬ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ ﻫﺮ ﺷﻲء ﻣﺠﻤﻮﻋﻪاي از ﺧﻮاص را ﺑﺎ ﺧﻮد ﻳﺪك ﻣﻲﻛﺸﺪ‪ .‬ﻳﻜﻲ از‬ ‫ﺧﻮاص ﻛﻨﺘﺮل ‪ ،Label‬ﻋﻨﻮان ﻳﺎ ‪ Caption‬آن ﻣﻲﺑﺎﺷﺪ‪ Caption .‬ﻫﻤﺎن ﻣﺘﻨﻲ اﺳﺖ ﻛﻪ در ﻟﻴﺒﻞ‬ ‫ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪ .‬اﮔﺮ ﺑﺮﻧﺎﻣﻪ ﻫﻨﻮز در ﺣﺎل اﺟﺮا ﻣﻲﺑﺎﺷﺪ‪ ،‬آن را ﺑﺒﻨﺪﻳﺪ‪ ،‬ﺗﺎ ﺑﻪ ﻣﺤﻴﻂ ﻃﺮاﺣﻲ ﺑﺎزﮔﺮدﻳﺪ‪.‬‬ ‫دوﺑﺎره ﻫﻤﺎن ‪ Label‬را اﻧﺘﺨﺎب ﻛﻨﻴﺪ و در ﭘﻨﺠﺮهي ﻣﺸﺨﺼﻪﻫﺎ‪ ،‬ﺑﻪ دﻧﺒﺎل ‪ Caption‬ﺑﮕﺮدﻳﺪ و ﻣﻘﺪار آن‬ ‫را ﺑﻪ ﻛﻠﻤﻪاي دﻟﺨﻮاه ﺗﻐﻴﻴﺮ دﻫﻴﺪ‪ .‬ﺣﺎل اﮔﺮ ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﻛﻨﻴﺪ‪ ،‬ﻣﻲﺑﻴﻨﻴﺪ ﻛﻪ در اﺑﺘﺪا ﻛﻠﻤﻪي ﻧﻮﺷﺘﻪ ﺷﺪه‬ ‫ﺗﻮﺳﻂ ﺷﻤﺎ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد و ﻫﻤﭽﻨﻴﻦ ﻣﻲﺗﻮاﻧﻴﺪ ﺑﺎ ﻓﺸﺎر دادن دﻛﻤﻪ ‪ Command1‬آن را ﺑﻪ‬ ‫‪ Hello World‬ﺗﻐﻴﻴﺮ دﻫﻴﺪ‪ .‬اﻣﺎ ﻣﻌﻨﻲ ﻛﺪي ﻛﻪ ﻧﻮﺷﺘﻴﻢ ﭼﻪ ﺑﻮد؟ ﺑﺮاي ﭘﺎﺳﺦ ﺑﻪ اﻳﻦ ﺳﻮال اﺑﺘﺪا ﺑﺎﻳﺪ ﺑﺎ‬ ‫ﻣﻔﻬﻮم روﻳﺪاد آﺷﻨﺎ ﺑﺸﻮﻳﺪ‪.‬‬ ‫روﻳﺪاد ﻳﻚ ﺳﻴﮕﻨﺎل ﺗﻮﻟﻴﺪﺷﺪه ﺑﻪوﺳﻴﻠﻪي ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ در ﭘﺎﺳﺦ ﺑﻪ ﻋﻤﻞ ﻛﺎرﺑﺮ اﺳﺖ‪ .‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل‪،‬‬ ‫ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﻛﺎرﺑﺮ ﻛﻠﻴﻚ ﻣﻲﻛﻨﺪ‪ ،‬روﻳﺪاد ‪ MouseDown‬ﺑﻪ وﺳﻴﻠﻪي ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ارﺳﺎل ﻣﻲﺷﻮد‪.‬‬ ‫ﺑﺮﻧﺎﻣﻪي ﻛﺎرﺑﺮدي ﻓﻌﺎل‪ ،‬اﻳﻦ ﺳﻴﮕﻨﺎل را درﻳﺎﻓﺖ ﻛﺮده و ﻛﺪ ﻣﺮﺑﻮط ﺑﻪ روﻳﺪاد ‪ MouseDown‬را اﺟﺮا‬ ‫ﻣﻲﻛﻨﺪ‪ .‬در وﻳﮋوال ﺑﻴﺴﻴﻚ ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻪ ﻧﺎم ‪ Event Handler‬ﻣﺴﺌﻮل اﻳﻦ اﺳﺖ ﻛﻪ روﻳﺪادﻫﺎ‬ ‫را ﻛﻨﺘﺮل ﻛﻨﺪ‪ .‬اﻳﻦ ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﺑﺮاي ﻫﺮ روﻳﺪاد ﻛﺎرﻫﺎي ﺧﺎﺻﻲ را اﻧﺠﺎم ﻣﻲدﻫﺪ و از ﺟﻤﻠﻪ اﻳﻦ ﻛﺎرﻫﺎ‪،‬‬ ‫ﺻﺪا ﻛﺮدن ﺗﺎﺑﻊ)زﻳﺮﺑﺮﻧﺎﻣﻪ( ﻧﻮﺷﺘﻪ ﺷﺪه ﺗﻮﺳﻂ ﻣﺎ ﻣﻲﺑﺎﺷﺪ‪ .‬اﻣﺎ ﻣﺮاﺣﻞ اﺟﺮاي دﺳﺘﻮرات ﻧﻮﺷﺘﻪ ﺷﺪه ﺗﻮﺳﻂ‬ ‫ﻣﺎ ﭼﮕﻮﻧﻪ ﻣﻲﺑﺎﺷﺪ؟‬ ‫‪ .1‬ﻛﺎرﺑﺮ روي دﻛﻤﻪ ﻛﻠﻴﻚ ﻣﻲﻛﻨﺪ‪  .‬‬ ‫‪ .2‬ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﭘﻴﻐﺎﻣﻲ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻣﺎ ﻣﻲﻓﺮﺳﺘﺪ و ﻣﺎ را از رخ دادن ﻛﻠﻴﻚ ﺑﺮ روي دﻛﻤﻪ ﺑﺎ ﺧﺒﺮ‬ ‫ﻣﻲﻛﻨﺪ‪  .‬‬ ‫‪ Event Handler .3‬ﭘﻴﻐﺎم ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ را درﻳﺎﻓﺖ ﻣﻲﻛﻨﺪ و اﮔﺮ ﻣﺎ زﻳﺮ ﺑﺮﻧﺎﻣﻪاي ﺑﺮاي اﻳﻦ‬ ‫رﺧﺪاد ﻧﻮﺷﺘﻪ ﺑﺎﺷﻴﻢ‪ ،‬آن را ﺻﺪا ﻣﻲﻛﻨﺪ‪  .‬‬ ‫‪ .4‬زﻳﺮﺑﺮﻧﺎﻣﻪي ﻣﺎ ﻋﻨﻮان ‪ Label‬را ﺗﻐﻴﻴﺮ ﻣﻲدﻫﺪ‪  .‬‬ ‫ﺷﺎﻳﺪ ﺑﭙﺮﺳﻴﺪ آﻳﺎ روﻳﺪادﻫﺎي دﻳﮕﺮي ﻫﻢ ﺑﺮاي ﻳﻚ دﻛﻤﻪ اﺗﻔﺎق ﻣﻲاﻓﺘﺪ؟ ﺑﻠﻪ‪ .‬ﺑﺮاي اﻳﻨﻜﻪ ﻟﻴﺴﺖ ﺗﻤﺎم‬ ‫روﻳﺪادﻫﺎي ﻳﻚ ﺷﻲء را ﺑﺒﻴﻨﻴﺪ ﻛﺎﻓﻴﺴﺖ روي ﻗﺴﻤﺘﻲ ﻛﻪ در ﺷﻜﻞ ﭘﺎﻳﻴﻦ ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ ﻛﻠﻴﻚ ﻛﻨﻴﺪ‬ ‫ﺗﺎ ﺑﺴﺘﻪ ﺑﻪ ﻧﻴﺎز ﺧﻮد‪ ،‬ﺑﺮاي روﻳﺪادﻫﺎي ﻣﺨﺘﻠﻒ ﻳﻚ ﺷﻲء ﻛﺪ ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬

‫ﺻﻔﺤﻪ‪١٧ :‬‬

‫ﻧﻜﺘﻪي ﻳﻚ‪:‬‬ ‫روالﻫﺎي روﻳﺪاد از ﺗﺮﻛﻴﺐ ﻧﺎم ﺷﻲء ﺑﺎ ﻧﺎم روﻳﺪاد ﺑﻪ وﺟﻮد ﻣﻲآﻳﻨﺪ و ﺷﻜﻞ ﻛﻠﻲ آن ﺑﻪ ﺻﻮرت زﻳﺮ‬ ‫ﻣﻲﺑﺎﺷﺪ‪.‬‬ ‫‪Private Sub objectName_event() ‬‬ ‫‪Statements ‬‬ ‫‪End Sub ‬‬

‫ﻧﻜﺘﻪي دو‪:‬‬ ‫دادهﻫﺎي رﺷﺘﻪاي ‪ 1‬ﻫﻤﻴﺸﻪ ﺑﻴﻦ دو ﻧﻘﻞ ﻗﻮل )”“( ﻗﺮار ﻣﻲﮔﻴﺮﻧﺪ و ﻣﻲﺗﻮاﻧﻨﺪ ﺷﺎﻣﻞ ﻫﺮ ﻧﻮﻳﺴﻪاي ﺑﺎﺷﻨﺪ‪.‬‬ ‫ﻧﻜﺘﻪي ﺳﻪ‪:‬‬ ‫ﻣﻬﻢﺗﺮﻳﻦ ﻧﻜﺘﻪ در ﻣﻮرد ﻋﺒﺎرت ﺑﺎﻻ اﻳﻦ اﺳﺖ ﻛﻪ ﻣﻘﺪار ﺳﻤﺖ راﺳﺖ ﻣﺴﺎوي ﺑﻪ ﻋﺒﺎرت ﻣﻮﺟﻮد در‬ ‫ﺳﻤﺖ ﭼﭗ ﻧﺴﺒﺖ داده ﻣﻲﺷﻮد‪ .‬ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﻣﻘﺪار ﺳﻤﺖ راﺳﺖ ﻋﺒﺎرت ﺑﺎﻳﺪ ﺑﺎ ﻧﻮع ﻋﺒﺎرت ﺳﻤﺖ‬ ‫ﭼﭗ ﻣﺘﻨﺎﺳﺐ ﺑﺎﺷﺪ‪ ،‬ﻳﺎ اﻳﻨﻜﻪ اﻣﻜﺎن ﺗﺒﺪﻳﻞ آن ﺑﺮاي وﻳﮋوال ﺑﻴﺴﻴﻚ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬ ‫ﻧﻜﺘﻪي ﭼﻬﺎر‪:‬‬ ‫اﮔﺮ درك روﻳﺪادﻫﺎ ﺑﺮاي ﺷﻤﺎ ﻣﺸﻜﻞ ﻣﻲﺑﺎﺷﺪ ﻣﻲﺗﻮاﻧﻴﺪ آن را ﺑﺮاي ﺧﻮد ﺗﺮﺟﻤﻪ ﻛﻨﻴﺪ‪ .‬ﺷﻤﺎ ﻣﻲﺗﻮاﻧﻴﺪ از‬ ‫ﻛﻠﻤﻪي ﻛﻠﻴﺪي” اﮔﺮ” اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﻣﺜﻼ در ﻣﺜﺎل ﺑﺎﻻ ﻣﻲﺗﻮاﻧﻴﺪ ﺑﮕﻮﻳﻴﺪ اﮔﺮ ‪ Command1‬ﻛﻠﻴﻚ ‪ 2‬ﺷﺪ‪،‬‬ ‫ﻋﻨﻮان ﻟﻴﺒﻞ ﻳﻚ را ﺑﻪ ‪ Hello World‬ﺗﻐﻴﻴﺮ ﺑﺪه‪) .‬ﻓﻘﻂ ﺑﺮاي ﻣﺒﺘﺪﻳﺎن(‬

‫‪String Literal 1‬‬

‫‪ 2‬ﻣﻨﻈﻮر ﻫﻤﺎن روﻳﺪاد ﻛﻠﻴﻚ ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫ﺻﻔﺤﻪ‪١٨ :‬‬

‫‪--------------‬‬‫ذﺧﻴﺮه ﻛﺮدن ﭘﺮوژه‬ ‫ﺑﺮاي ذﺧﻴﺮه ﻛﺮدن ﭘﺮوژه ﻛﺎﻓﻴﺴﺖ ﺑﻪ ﻣﻨﻮي ﻓﺎﻳﻞ رﻓﺘﻪ و ﮔﺰﻳﻨﻪ ‪ Save Project‬را اﻧﺘﺨﺎب ﻧﻤﺎﻳﻴﺪ‪ .‬اﮔﺮ‬ ‫ﺑﻪ ﻣﺤﻞ ﭘﺮوژهي ذﺧﻴﺮه ﺷﺪه ﺑﺮوﻳﺪ‪ ،‬ﺧﻮاﻫﻴﺪ دﻳﺪ ﻛﻪ ﻋﻼوه ﺑﺮ ﻓﺎﻳﻞ ﭘﺮوژه‪ ،‬ﭼﻨﺪﻳﻦ ﻓﺎﻳﻞ دﻳﮕﺮ ﻫﻢ وﺟﻮد‬ ‫دارد‪ .‬اﻳﻦ ﻓﺎﻳﻞﻫﺎ ﻋﺒﺎرﺗﻨﺪ از‪:‬‬

‫• ﻓﺎﻳﻞ ﭘﺮوژه‪  :‬‬ ‫اﻳﻦ ﻓﺎﻳﻞ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ VBP 1‬ذﺧﻴﺮه ﻣﻲﺷﻮد و ﻣﺤﺘﻮاي آن ﻣﺸﺨﺼﺎت ﭘﺮوژه‪ ،‬ﻧﻮع ﭘﺮوژه‪ ،‬ﻧﺎم ﻓﺎﻳﻞﻫﺎي‬ ‫ﻓﺮم و ﻓﺮم اﺻﻠﻲ و ‪ ...‬اﺳﺖ‪  .‬‬

‫• ﻓﺎﻳﻞ ﻣﺤﻴﻂ ﻛﺎري‪:‬‬ ‫اﻳﻦ ﻓﺎﻳﻞ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ VBW 2‬ذﺧﻴﺮه ﻣﻲﺷﻮد و ﻣﺤﺘﻮاي آن‪ ،‬اﻃﻼﻋﺎت ﻣﺤﻴﻂ ﻛﺎري و ﻓﺮمﻫﺎي ﭘﺮوژه‬ ‫اﺳﺖ‪.‬‬

‫• ﻓﺎﻳﻞ ﻓﺮم‪:‬‬

‫‪ ‬‬

‫اﻳﻦ ﻓﺎﻳﻞ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ FRM‬ذﺧﻴﺮه ﻣﻲﺷﻮد و ﻣﺤﺘﻮاي آن اﻃﻼﻋﺎت ﻳﻚ ﻓﺮم و ﺗﻤﺎم ﻣﺸﺨﺼﺎت ﻓﺮم ﺑﻪ‬ ‫ﻫﻤﺮاه ﻧﺎم و ﻣﺸﺨﺼﺎت ﻛﻨﺘﺮلﻫﺎي روي ﻓﺮم اﺳﺖ‪ ،‬در ﺿﻤﻦ ﺗﻤﺎم روﻳﺪادﻫﺎ و ﻛﺪﻫﺎي ﻣﺮﺑﻮط ﺑﻪ آن‬ ‫ﻧﻴﺰ در اﻳﻦ ﻓﺎﻳﻞ ذﺧﻴﺮه ﻣﻲﺷﻮﻧﺪ‪.‬‬ ‫• ﻓﺎﻳﻞ ﺗﺼﺎوﻳﺮ‪  :‬‬ ‫اﻳﻦ ﻓﺎﻳﻞ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ FRX‬ذﺧﻴﺮه ﻣﻲﺷﻮد و ﻣﺤﺘﻮي ﺗﺼﺎوﻳﺮي اﺳﺖ ﻛﻪ روي ﻓﺮم ﻳﺎ ﻛﻨﺘﺮلﻫﺎي دﻳﮕﺮ از‬ ‫آﻧﻬﺎ اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‪.‬‬

‫• ﻓﺎﻳﻞﻫﺎي دﻳﮕﺮ‪:‬‬

‫‪ ‬‬

‫ﺷﺎﻣﻞ ﻓﺎﻳﻞﻫﺎي ‪ DLL, OCX‬و ‪ ...‬ﻣﻲﺑﺎﺷﺪ ﻛﻪ در آﻳﻨﺪه ﺑﺎ آﻧﻬﺎ آﺷﻨﺎ ﺧﻮاﻫﻴﺪ ﺷﺪ‪.‬‬

‫‪--------------‬‬‫ﺑﺮﻧﺎﻣﻪﻫﺎي ﺟﺪﻳﺪ‪) ‬آﺷﻨﺎﻳﻲ ﺑﺎ دﻳﮕﺮ ﺧﺼﻮﺻﻴﺎت ‪ CommandButton ،Label‬و ﻓﺮم(‬ ‫‪  Visual Basic Project 1‬‬ ‫‪Visual Basic Workspace 2‬‬

‫ﺻﻔﺤﻪ‪١٩ :‬‬

.‫ﺑﺮاي درك ﺑﻬﺘﺮ اﻳﻦ ﻛﺪﻫﺎ ﺑﻪ ﺑﺨﺶ ﻣﺸﺨﺼﻪﻫﺎي ﻛﻨﺘﺮل ﻟﻴﺒﻞ ﺑﺮوﻳﺪ‬

‫ ﺗﻐﻴﻴﺮ رﻧﮓ ﭘﺲزﻣﻴﻨﻪ‬:BackColor ‫ﺧﺎﺻﻴﺖ‬ Private Sub Command1_Click()    Label1.BackColor = 0   End Sub

‫ ﺗﻌﻴﻴﻦ ﻧﻮع و اﻧﺪازهي ﻗﻠﻢ‬:Font ‫ﺧﺎﺻﻴﺖ‬ Private Sub Command1_Click()    Label1.Font.Name = “Tohoma”    Label1.Font.Size = “12”      Label1.Font.Underline = True   End Sub

Or Private Sub Command1_Click()    Label1.Font = “Tohoma”    Label1.FontSize = “12”    Label1.FontUnderline = True   End Sub

‫ ﺗﻐﻴﻴﺮ رﻧﮓ ﻗﻠﻢ‬:ForeColor ‫ﺧﺎﺻﻴﺖ‬   Private Sub Command1_Click()    Label1.ForeColor = &HC00000   End Sub

‫ ﺗﻌﻴﻴﻦ ﺷﻜﻞ اﺷﺎرهﮔﺮ ﻣﺎوس‬:MousePointer ‫ﺧﺎﺻﻴﺖ‬ Private Sub Form_Load()    Label1.MousePointer = 5   End Sub

‫ ﺗﻌﻴﻴﻦ ﺷﻜﻠﻲ دﻟﺨﻮاه ﺑﺮاي ﻣﺎوس‬:MouseIcon ‫ﺧﺎﺻﻴﺖ‬ ‫ ﺑﺮاي‬.‫ اﺳﺖ ﻛﻪ ﺧﻮدﺗﺎن ﻫﻢ ﻣﻲﺗﻮاﻧﻴﺪ آن را ﺑﺴﺎزﻳﺪ‬ICO ‫ ﺑﺎ ﭘﺴﻮﻧﺪ‬16 X 16 ‫اﺷﺎرهﮔﺮ ﻣﺎوس ﻳﻚ آﻳﻜﻦ‬ ،‫ ﻗﺮار داده‬99‐Custom ‫ را ﺑﺮاﺑﺮ‬MousePointer ‫ اﺑﺘﺪا ﺑﺎﻳﺪ ﺧﺎﺻﻴﺖ‬،‫ﻧﻤﺎﻳﺶ اﻳﻦ اﺷﺎرهﮔﺮ‬ ‫ اﻳﻦ‬،‫ ﺗﺎ زﻣﺎﻧﻲ ﻛﻪ اﺷﺎرهﮔﺮ را دوﺑﺎره ﺗﻐﻴﻴﺮ ﻧﺪادهاﻳﺪ‬.‫ را ﺗﻐﻴﻴﺮ ﺑﺪﻫﻴﺪ‬MouseIcon ‫ﺳﭙﺲ ﺧﺎﺻﻴﺖ‬ .‫ﺷﻜﻞ ﺑﻪ ﻋﻨﻮان اﺷﺎرهﮔﺮ اﻧﺠﺎم وﻇﻴﻔﻪ ﺧﻮاﻫﺪ ﻛﺮد‬

٢٠ :‫ﺻﻔﺤﻪ‬

‫ﻧﻜﺘﻪ‪  :‬‬ ‫اﮔﺮ دﻗﺖ ﻛﺮده ﺑﺎﺷﻴﺪ‪ ،‬ﺑﻌﺪ از ﻧﻮﺷﺘﻦ ﻧﺎم ﻛﻨﺘﺮل و زدن ﻧﻘﻄﻪ‪ ،‬ﻟﻴﺴﺘﻲ از ﻣﺸﺨﺼﻪﻫﺎي آن ﻛﻨﺘﺮل ﺑﺮاي‬ ‫ﺷﻤﺎ ﻇﺎﻫﺮ ﻣﻲﺷﻮد‪ .‬ﺑﺮاي رﺳﻴﺪن ﺑﻪ ﻣﺸﺨﺼﻪي ﻣﻮرد ﻧﻈﺮ‪ ،‬ﻛﺎﻓﻴﺴﺖ از ﻛﻠﻴﺪﻫﺎي ﺟﻬﺘﻲ اﺳﺘﻔﺎده ﻛﻨﻴﺪ ﻳﺎ ﻧﺎم‬ ‫اول آن ﻣﺸﺨﺼﻪ را ﺗﺎﻳﭗ ﻛﻨﻴﺪ و ﺳﭙﺲ ﻛﻠﻴﺪ ﺗﺐ را از روي ﺻﻔﺤﻪ ﻛﻠﻴﺪ ﺑﻔﺸﺎرﻳﺪ‪.‬‬

‫‪--------------‬‬‫ﺑﺮاي درك ﺑﻬﺘﺮ اﻳﻦ ﺑﺨﺶ‪ ،‬ﻣﺸﺨﺼﻪﻫﺎي ﻓﺮم را ﺑﺮرﺳﻲ ﻛﻨﻴﺪ‪.‬‬ ‫ﺧﺎﺻﻴﺖ ‪ :Caption‬ﺗﻐﻴﻴﺮ ﻋﻨﻮان ﻓﺮم‬ ‫)(‪  Private Sub Command1_Click‬‬ ‫"‪     Form1.Caption = "Changed‬‬ ‫‪End Sub‬‬

‫ﺧﺎﺻﻴﺖ ‪ :BorderStyle‬ﺗﻐﻴﻴﺮ ﻋﻨﺎﺻﺮ ﭘﻨﺠﺮه‬ ‫اﻳﻦ ﻣﺸﺨﺼﻪ ﻛﻪ ﻳﻜﻲ از ﻣﻬﻢﺗﺮﻳﻦ ﻣﺸﺨـﺼﻪﻫـﺎي ﻓـﺮم ﻣـﻲﺑﺎﺷـﺪ‪ ،‬ﻋﻨﺎﺻـﺮ ﭘﻨﺠـﺮهاي )ﻧـﻮار ﻋﻨـﻮان‪ ،‬ﺣﺎﺷـﻴﻪ‪،‬‬ ‫ﺟﻌﺒﻪي ﻛﻨﺘﺮل و ﻏﻴﺮه( را ﻛﻪ ﻓﺮم ﺧﻮاﻫﺪ داﺷﺖ را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ‪.‬‬ ‫ﺗﻮﺿﻴﺢ‬

‫ﻣﻘﺪار ﻣﺸﺨﺼﻪ‬

‫‪   0‐None‬ﺑﺪون ﺣﺎﺷﻴﻪ‪ ،‬ﺑﺪون ﻧﻮار ﻋﻨﻮان و ﻏﻴﺮ ﻗﺎﺑﻞ ﺟﺎﺑﻪﺟﺎﻳﻲ‬

‫‪1‬‬

‫‪   1‐Fixed Single‬ﺑﺎ درگ ﻛﺮدن ﺣﺎﺷﻴﻪﻫﺎ ﻧﻤﻲﺗﻮان ﺗﻐﻴﻴﺮ اﻧﺪازه داد‪.‬‬ ‫‪   2‐Sizable‬داراي ﻗﺎﺑﻠﻴــﺖ ﺗﻐﻴﻴــﺮ اﻧــﺪازه ﺑــﻪ وﺳــﻴﻠﻪي درگ ﻛــﺮدن و وﺟــﻮد‬ ‫دﻛﻤﻪﻫﺎي ‪ Maximize‬و ‪.Minimize‬‬ ‫‪   3‐Fixed Dialog ‬ﻋﺪم ﻗﺎﺑﻠﻴﺖ ﺗﻐﻴﻴﺮ اﻧﺪازه و ﻋﺪم وﺟﻮد دﻛﻤـﻪﻫـﺎي ‪Maximize‬‬

‫و ‪.Minimize‬‬ ‫‪ 4‐Fixed ToolWindow‬ﺷﺒﻴﻪ ﺣﺎﻟﺖ ﻗﺒﻞ ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ ﻧﻮار ﻋﻨﻮان ﻛﻮﺗﺎهﺗﺮ اﺳـﺖ و‬ ‫ﻗﻠﻢ ﻧﻮار ﻋﻨﻮان و دﻛﻤﻪي ‪ Close‬ﻛﻮﭼﻚﺗﺮ اﺳﺖ‪.‬‬ ‫‪   5‐Sizable ToolWindow‬ﺷﺒﻴﻪ ﺣﺎﻟﺖ ﻓﻮق ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ ﺑـﺎ درگ ﻛـﺮدن ﺣﺎﺷـﻴﻪ ﺗﻐﻴﻴـﺮ‬ ‫اﻧﺪازه ﻣﻤﻜﻦ اﺳﺖ‪.‬‬ ‫‪1‬‬

‫اﻟﺒﺘﻪ ﺑﺎ ﺑﺮﺧﻲ از ﻛﺪﻫﺎ ﻗﺎﺑﻞ ﺟﺎﺑﻪﺟﺎ ﺷﺪن ﻣﻲﺑﺎﺷﺪ‪.‬‬

‫ﺻﻔﺤﻪ‪٢١ :‬‬

‫ﻧﻜﺘﻪ‪:‬‬ ‫ﺗﻔﺎوت ‪ Fixed Single‬ﺑﺎ ‪ Fixed Dialog‬ﭼﻴﺴﺖ؟‬ ‫‪ :Fixed  Single‬در اﻳﻦ ﺣﺎﻟﺖ ﻋﻼوه ﺑﺮ ﻇﺎﻫﺮ ﺷﺪن ﻓﺮم در ‪ ،Taskbar‬ﺷﻤﺎ ﻣﻲﺗﻮاﻧﻴﺪ دﻛﻤﻪﻫﺎي‬ ‫ﻣﻜﺲ و ﻣﻴﻦ را ﺑﻪ ﻓﺮم اﺧﺘﺼﺎص دﻫﻴﺪ‪.‬‬ ‫‪ :Fixed Dialog‬ﻫﻤﺎﻧﻄﻮر ﻛﻪ از ﻧﺎﻣﺶ ﭘﻴﺪاﺳﺖ‪ ،‬ﻳﻚ ﻛﺎدر ﻣﺤﺎورهاي ﺑﺮاي ﺷﻤﺎ اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪ .‬اﻳﻦ ﻛﺎدر‬ ‫در ‪ Taskbar‬دﻳﺪه ﻧﻤﻲﺷﻮد )وﻳﮋﮔﻲ ﻛﺎدرﻫﺎي ﻣﺤﺎورهاي( و ﻧﻤﻲﺗﻮاﻧﺪ ﺧﺎﺻﻴﺖ ‪ MaxButton‬و‬ ‫‪ MinButton‬را ﺑﻪ ﺧﻮد اﺧﺘﺼﺎص دﻫﺪ‪.‬‬

‫ﺧﺎﺻﻴﺖ ‪ :ControlBox‬ﻧﻤﺎﻳﺶ ﻳﺎ ﻋﺪم ﻧﻤﺎﻳﺶ ﺟﻌﺒﻪي ﻛﻨﺘﺮل‬ ‫اﮔﺮ ﺑﺮاﺑﺮ ‪ False‬ﺑﺎﺷﺪ‪ ،‬ﺟﻌﺒﻪي ﻛﻨﺘﺮل ﻛﻪ ﺷﺎﻣﻞ دﻛﻤﻪﻫﺎي ‪ Maximize ،Close‬و ‪Minimize‬‬

‫ﻣﻲﺑﺎﺷﺪ ﻧﻤﺎﻳﺶ داده ﻧﺨﻮاﻫﺪ ﺷﺪ‪.‬‬

‫ﺧﺎﺻﻴﺖ ‪ MaxButton‬و ‪:MinButton‬‬ ‫اﮔﺮ ﺑﺮاﺑﺮ ‪ False‬ﺑﺎﺷﻨﺪ‪ ،‬دﻛﻤﻪﻫﺎي ‪ Maximize‬و ‪ Minimize‬ﻧﻤﺎﻳﺶ داده ﻧﺨﻮاﻫﻨﺪ ﺷﺪ‪.‬‬

‫ﺧﺎﺻﻴﺖ ‪ :Movable‬ﻋﺪم ﺟﺎﺑﻪﺟﺎﻳﻲ ﻓﺮم‬ ‫اﮔﺮ ﺑﺮاﺑﺮ ‪ False‬ﺑﺎﺷﺪ‪ ،‬ﻓﺮم ﻗﺎﺑﻠﻴﺖ ﺟﺎﺑﻪﺟﺎﻳﻲ ﻧﺪارد و در ﻣﺤﻞ از ﻗﺒﻞ ﺗﻌﻴﻴﻦ ﺷﺪهي ﺧﻮد ﺛﺎﺑﺖ ﻣﻲﻣﺎﻧﺪ‪.‬‬

‫ﺧﺎﺻﻴﺖ ‪ :ShowInTaskbar‬ﻧﻤﺎﻳﺶ ﻓﺮم در ﻧﻮار وﻇﻴﻔﻪ‬ ‫اﮔﺮ ﺑﺮاﺑﺮ ‪ False‬ﺑﺎﺷﺪ‪ ،‬ﺑﺮﻧﺎﻣﻪي ﻛﺎرﺑﺮدي در ﻧﻮار وﻇﻴﻔﻪ ﻧﻤﺎﻳﺎن ﻧﺨﻮاﻫﺪ ﺷﺪ‪.‬‬ ‫ﺧﺎﺻﻴﺖ ‪ :StartUpPosition‬ﻣﺤﻞ ﻧﻤﺎﻳﺶ ﻓﺮم‬ ‫اﻳﻦ ﻣﺸﺨﺼﻪ‪ ،‬دﻗﻴﻘﺎ ﻛﺎر ‪ Form  Layout‬را اﻧﺠﺎم ﻣﻲدﻫﺪ‪ .‬اﮔﺮ ﻗﺼﺪ ﺗﻨﻈﻴﻢ ﻣﺤﻞ ﻗﺮارﮔﻴﺮي ﻓﺮم در‬ ‫ﻫﻨﮕﺎم اﺟﺮاي ﺑﺮﻧﺎﻣﻪ را دارﻳﺪ‪ ،‬ﻣﻲﺗﻮاﻧﻴﺪ از اﻳﻦ ﮔﺰﻳﻨﻪ ﻧﻴﺰ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬

‫ﺧﺎﺻﻴﺖ ‪ :WindowState‬ﻧﺤﻮهي ﻧﻤﺎﻳﺶ ﻓﺮم‬ ‫اﮔﺮ ﻗﺼﺪ دارﻳﺪ ﻛﻪ ﺑﺮﻧﺎﻣﻪي ﺷﻤﺎ در ﻫﻨﮕﺎم اﺟﺮا ﺑﻪ ﺻﻮرت ﺗﻤﺎم ﺻﻔﺤﻪ در ﺑﻴﺎﻳﺪ‪ ،‬ﺑﺎﻳﺪ ﻣﺸﺨﺼﻪي‬ ‫‪ WindowState‬را ﺑﺎ ‪ Miximized‬ﻣﻘﺪاردﻫﻲ ﻛﻨﻴﺪ‪ .‬ﺑﺮاي ﻣﺜﺎل ﭼﻬﺎر دﻛﻤﻪ ﺑﻪ ﻓﺮم اﺿﺎﻓﻪ ﻛﻨﻴﺪ و‬ ‫ﻛﺪﻫﺎي زﻳﺮ را‪ ،‬ﺑﺮاي روﻳﺪاد ﻛﻠﻴﻚ آﻧﻬﺎ ﺑﻨﻮﻳﺴﻴﺪ‪.‬‬ ‫ﺻﻔﺤﻪ‪٢٢ :‬‬

‫ﻛﺪِ ﻣﺮﺑﻮﻃﻪ‬

‫ﻛﻠﻴﺪ ﻣﻮرد ﻧﻈﺮ‬

‫‪  End‬‬ ‫‪  Form1.WindowState = 2‬‬ ‫‪  Form1.WindowState = 1‬‬ ‫‪  Form1.WindowState = 0‬‬

‫‪  Close‬‬ ‫‪  Maximize‬‬ ‫‪  Minimize‬‬ ‫‪  Restore‬‬

‫ﻧﻜﺘﻪي ﻳﻚ‪:‬‬ ‫اﮔﺮ ﻣﻲﺧﻮاﻫﻴﺪ ﻗﻠﻢ ﺗﻤﺎم اﺷﻴﺎﺋﻲ را ﻛﻪ روي ﻓﺮم ﻗﺮار ﻣﻲدﻫﻴﺪ ﻳﻜﺴﺎن ﺑﺎﺷﻨﺪ‪ ،‬ﺑﺎﻳﺪ ﻗﺒﻞ از ﻃﺮاﺣﻲ ﻇﺎﻫﺮ‬ ‫ﺑﺮﻧﺎﻣﻪ‪ ،‬ﻗﻠﻢ ﻓﺮم را ﺗﻐﻴﻴﺮ دﻫﻴﺪ؛ ﭼﻮن ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻲداﻧﻴﺪ اﺷﻴﺎﺋﻲ ﻛﻪ روي ﻓﺮم ﻗﺮار ﻣﻲﮔﻴﺮﻧﺪ‪ ،‬از ﺑﺮﺧﻲ‬ ‫از ﻣﺸﺨﺼﻪﻫﺎي ﻓﺮم ﺗﺒﻌﻴﺖ ﻣﻲﻛﻨﻨﺪ‪.‬‬ ‫ﻧﻜﺘﻪي دو‪:‬‬ ‫در ﻫﻨﮕﺎم ﻛﺪﻧﻮﻳﺴﻲ‪ ،‬اﮔﺮ ﭼﻨﺪ ﺣﺮف اول ﻳﻚ ﻛﻠﻤﻪي ﺷﻨﺎﺧﺘﻪﺷﺪه ﺗﻮﺳﻂ وﻳﮋوال ﺑﻴﺴﻴﻚ )ﻣﺎﻧﻨﺪ ﻧﺎم‬ ‫ﻛﻨﺘﺮلﻫﺎ‪Property ،‬ﻫﺎ‪Method ،‬ﻫﺎ و ﻏﻴﺮه( را ﺑﻨﻮﻳﺴﻴﻢ و ‪ CTRL+Space‬را ﻓﺸﺎر دﻫﻴﻢ‪ ،‬اﮔﺮ ‪VB‬‬ ‫ﺗﻨﻬﺎ ﻳﻚ ﻛﻠﻤﻪ از ﺣﺮف اول آﻧﭽﻪ را ﻛﻪ ﻧﻮﺷﺘﻴﻢ ﭘﻴﺪا ﻛﻨﺪ‪ ،‬ﺑﻘﻴﻪ ﺣﺮوف را ﺧﻮد ﻛﺎﻣﻞ ﻣﻲﻛﻨﺪ و اﮔﺮ ﺗﻌﺪادي‬ ‫ﻛﻠﻤﻪ ﺑﺎ اﻳﻦ ﻣﺸﺨﺼﺎت ﭘﻴﺪا ﻛﻨﺪ‪ ،‬ﻟﻴﺴﺖ آﻧﻬﺎ را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ ﻛﻪ ﻣﻲﺗﻮاﻧﻴﺪ ﻳﻜﻲ از آﻧﻬﺎ را اﻧﺘﺨﺎب‬ ‫ﻛﻨﻴﺪ‪.‬‬

‫‪--------------‬‬‫ﺑﺮﺧﻲ از ﺧﺼﻮﺻﻴﺎت ‪CommandButton‬‬ ‫ﺧﺎﺻﻴﺖ ‪ :Cancel‬اﮔﺮ ﺑﺮاﺑﺮ ‪ True‬ﺑﺎﺷﺪ ﻛﺪ ﻣﺮﺑﻮط ﺑﻪ روﻳﺪاد ‪ Click‬دﻛﻤﻪي ﻓﺮﻣﺎن‪ ,‬ﻫﻨﮕﺎم ﻓﺸﺎردادن‬ ‫ﻛﻠﻴﺪ ‪ Esc‬از روي ﺻﻔﺤﻪ ﻛﻠﻴﺪ اﺟﺮا ﻣﻲﺷﻮد‪ .‬ﻓﻘﻂ ﻳﻜﻲ از دﻛﻤﻪﻫﺎي روي ﻓﺮم ﻣﻲﺗﻮاﻧﺪ اﻳﻦ ﺧﺎﺻﻴﺖ را‬ ‫ﺑﻪ ﺻﻮرت ﻓﻌﺎل داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬ ‫ﺧﺎﺻﻴﺖ ‪ :Caption‬ﻣﺘﻦ روي دﻛﻤﻪ را ﻣﺸﺨﺺ ﻣﻲﻛﻨﺪ‪.‬‬ ‫ﺧﺎﺻﻴﺖ ‪ :Default‬اﮔﺮ ﺑﺮاﺑﺮ ‪ True‬ﺑﺎﺷﺪ‪ ،‬اﻳﻦ دﻛﻤﻪ ﺑﻪ ﻋﻨﻮان دﻛﻤﻪي ﭘﻴﺶﻓﺮض ﺑﻪ ﺣﺴﺎب ﻣﻲآﻳﺪ و‬ ‫ﺣﺘﻲ اﮔﺮ ﻣﻜﺎنﻧﻤﺎ ﻫﻢ در روي ﺷﻲء دﻳﮕﺮي ﺑﺎﺷﺪ و ﻛﻠﻴﺪ ‪ Enter‬ﻓﺸﺮده ﺷﻮد‪ ،‬دﺳﺘﻮرات درون اﻳﻦ‬ ‫دﻛﻤﻪ اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪ .‬در اﻳﻨﺠﺎ ﻫﻢ ﻓﻘﻂ ﻳﻜﻲ از دﻛﻤﻪﻫﺎي روي ﻓﺮم ﻣﻲﺗﻮاﻧﺪ اﻳﻦ ﺧﺎﺻﻴﺖ را ﺑﻪ ﺻﻮرت‬ ‫ﻓﻌﺎل داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬ ‫ﺻﻔﺤﻪ‪٢٣ :‬‬

‫ﺧﺎﺻﻴﺖ ‪ :Enabled‬اﮔﺮ ﺑﺮاﺑﺮ ‪ False‬ﺑﺎﺷﺪ دﻛﻤﻪ ﻏﻴﺮﻓﻌﺎل ﻳﺎ ﺧﺎﻣﻮش اﺳﺖ و ﻧﻤﻲﺗﻮان رو آن ﻛﻠﻴﻚ‬ ‫ﻛﺮد‪.‬‬ ‫ﺧﺎﺻﻴﺖ ‪ :Picture‬ﻓﺎﻳﻞ ‪ .bmp‬ﻛﻪ روي دﻛﻤﻪ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪.‬‬

‫‪---------------‬‬

‫ﺻﻔﺤﻪ‪٢٤ :‬‬

‫ﻓﺼﻞ دوم‬ ‫اﻧﻮاع دادهﻫﺎ‬

‫ﺻﻔﺤﻪ‪٢٥ :‬‬

‫ﻫﺮ زﺑﺎن ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﺑﺮاي ﭘﺮدازش دادهﻫﺎ‪ ،‬ﺑﻪ اﻧﻮاع ﻣﺨﺘﻠﻔﻲ از دادهﻫﺎ ﻧﻴﺎز دارد و وﻳﮋوال ﺑﻴﺴﻴﻚ‬ ‫ﻫﻢ از اﻳﻦ ﻗﺎﻋﺪه ﻣﺴﺘﺜﻨﻲ ﻧﻴﺴﺖ‪ .‬وﻳﮋوال ﺑﻴﺴﻴﻚ از اﻧﻮاع دادهﻫﺎي ﻣﺨﺘﻠﻒ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲﻛﻨﺪ ﻛﻪ‬ ‫ﻣﻲﺗﻮاﻧﻨﺪ ﻧﻴﺎزﻫﺎي ﻣﺘﻌﺪد ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ را ﺑﺮآورده ﺳﺎزﻧﺪ‪ .‬ﺑﻪ ﻃﻮر ﻛﻠﻲ‪ ،‬ﻣﻲﺗﻮان دادهﻫﺎ را ﺑﻪ دو ﻧﻮع‬ ‫ﻋﺪدي و ﻏﻴﺮﻋﺪدي ﺗﻘﺴﻴﻢ ﻛﺮد‪.‬‬

‫دادهﻫﺎي ﻋﺪدي‬ ‫ﺗﻤﺎم اﻧﻮاع دادهﻫﺎي ﻋﺪدي در ﻳﻜﻲ از دو ﮔﺮوه زﻳﺮ ﻗﺮار دارﻧﺪ‪:‬‬ ‫اﻋﺪاد ﺻﺤﻴﺢ )‪ :(Integer‬اﻋﺪاد ﺻﺤﻴﺢ ﺑﺪون ﻧﻘﻄﻪي اﻋﺸﺎري؛ ﻣﺎﻧﻨﺪ ‪.-684 ،0 ،132‬‬ ‫اﻋﺪاد اﻋﺸﺎري )‪ :(Decimal‬اﻋﺪاد ﺑﺎ ﻧﻘﻄﻪي اﻋﺸﺎري )ﻣﻤﻴﺰ(؛ ﻣﺎﻧﻨﺪ ‪ .-432/65 ،0/005 ،654/6‬ﺑﻪ‬ ‫اﻋﺪاد اﻋﺸﺎري‪ ،‬اﻋﺪاد ﻣﻤﻴﺰ ﺷﻨﺎور ﻫﻢ ﮔﻔﺘﻪ ﻣﻲﺷﻮد‪ .‬در ﺗﻤﺎم اﻋﺪاد اﻋﺸﺎري ﺑﺎﻳﺪ ﻣﻤﻴﺰ اﻋﺸﺎر وﺟﻮد‬ ‫داﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﺣﺘﻲ اﮔﺮ رﻗﻢﻫﺎي ﺑﻌﺪ از آن ﺻﻔﺮ ﺑﺎﺷﺪ‪.‬‬ ‫وﻳﮋوال ﺑﻴﺴﻴﻚ اﻋﺪاد اﻋﺸﺎري و ﺻﺤﻴﺢ را ﺑﻪ روشﻫﺎي ﻣﺨﺘﻠﻒ ذﺧﻴﺮه و ﺑﺎ آﻧﻬﺎ ﻛﺎر ﻣﻲ ﻛﻨﺪ‪ .‬ﺑﺎ آﻧﻜﻪ‬ ‫ﺑﺮاي ﻛﺎرﺑﺮ ‪ 8‬و ‪ 8/00‬ﻫﻴﭻ ﻓﺮﻗﻲ ﻧﺪارد‪ ،‬وﻟﻲ از ﻧﻈﺮ وﻳﮋوال ﺑﻴﺴﻴﻚ آﻧﻬﺎ ﻣﺘﻔﺎوت ﻫﺴﺘﻨﺪ‪ .‬ﻣﻘﺪار‬ ‫ﺣﺎﻓﻈﻪاي ﻛﻪ اﻧﻮاع دادهﻫﺎي ﻣﺨﺘﻠﻒ ﺑﻪ ﺧﻮد اﺧﺘﺼﺎص ﻣﻲدﻫﻨﺪ‪ ،‬ﻳﻜﺴﺎن ﻧﻴﺴﺖ‪ .‬ﺑﺎ ﻧﮕﺎه ﻛﺮدن ﺑﻪ ﻳﻚ ﻋﺪد‬ ‫ﻫﻢ ﻧﻤﻲﺗﻮان ﮔﻔﺖ ﻛﻪ ﭼﻘﺪر ﺣﺎﻓﻈﻪ اﺷﻐﺎل ﺧﻮاﻫﺪ ﻛﺮد‪ .‬ﺑﺎ وﺟﻮد اﻳﻨﻜﻪ اﻣﺮوزه‪ ،‬دﻳﮕﺮ ﺣﺎﻓﻈﻪ ﻳﻚ ﻣﺸﻜﻞ‬ ‫ﻛﻠﻴﺪي ﻧﻴﺴﺖ و ﺷﻤﺎ ﻫﻢ ﺑﻪﻋﻨﻮان ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ ﻧﺒﺎﻳﺪ زﻳﺎد ﻧﮕﺮان آن ﺑﺎﺷﻴﺪ‪ ،‬وﻟﻲ ﻫﻤﻴﺸﻪ ﺳﻌﻲ ﻛﻨﻴﺪ‬ ‫ﺑﺮاي دادهﻫﺎﻳﺘﺎن ﻧﻮﻋﻲ را اﻧﺘﺨﺎب ﻛﻨﻴﺪ ﻛﻪ ﺣﺎﻓﻈﻪي ﻛﻤﺘﺮي اﺷﻐﺎل ﻣﻲﻛﻨﻨﺪ‪.‬‬ ‫در ﺟﺪول زﻳﺮ‪ ،‬ﺷﺶ ﻧﻮع دادهي ﻋﺪدي وﻳﮋوال ﺑﻴﺴﻴﻚ‪ ،‬ﻣﻘﺪار ﺣﺎﻓﻈﻪي ﻣﻮرد ﻧﻴﺎز ﻫﺮ ﻳﻚ و ﻣﺤﺪودهاي‬ ‫ﻛﻪ ﻣﻲﺗﻮاﻧﻨﺪ در ﺧﻮد ﺟﺎي دﻫﻨﺪ‪ ،‬ﻣﺸﺎﻫﺪه ﻣﻲﻛﻨﻴﺪ‪ .‬ﻫﻨﮕﺎم ﺗﻌﺮﻳﻒ دادهﻫﺎ اﻳﻦ ﺟﺪول را ﻣﺪﻧﻈﺮ داﺷﺘﻪ ﺑﺎﺷﻴﺪ‪.‬‬ ‫ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل‪ ،‬اﮔﺮ ﻣﻲﺧﻮاﻫﻴﺪ ﺑﺎ اﻋﺪاد ﻣﻨﻔﻲ ﻛﺎر ﻛﻨﻴﺪ ﻧﺒﺎﻳﺪ از ﻧﻮع ‪ Byte‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ ،‬اﻣﺎ اﮔﺮ ﺑﺎ ﺳﻦ‬ ‫اﻓﺮاد ﺳﺮ و ﻛﺎر دارﻳﺪ‪ ،‬اﻳﻦ ﻧﻮع ﺑﻬﺘﺮﻳﻦ اﻧﺘﺨﺎب ﻣﻤﻜﻦ اﺳﺖ‪.‬‬ ‫‪ ‬‬

‫ﻣﺤﺪودهي ﻣﻘﺎدﻳﺮ‬

‫ﻧﻮع داده‬

‫ﻓﻀﺎي‬ ‫ذﺧﻴﺮهﺳﺎزي‬

‫‪  Byte‬‬

‫‪ 1‬ﺑﺎﻳﺖ‬

‫‪ 0‬ﺗﺎ ‪  255‬‬

‫‪Integer‬‬

‫‪ 2‬ﺑﺎﻳﺖ‬

‫‪ ‐32,768‬ﺗﺎ ‪  32,767‬‬

‫‪Long‬‬

‫‪ 4‬ﺑﺎﻳﺖ‬

‫‪ ‐2,147,483,648‬ﺗﺎ‬

‫‪  2,147,483,647‬‬

‫ﺻﻔﺤﻪ‪٢٦ :‬‬

‫‪ ‬‬

‫‪Single‬‬

‫‪ 4‬ﺑﺎﻳﺖ‬

‫اﻋﺪاد ﻣﻨﻔﻲ‪ ‐3.402823E38 :‬ﺗﺎ‬ ‫اﻋﺪاد ﻣﺜﺒﺖ‪ 1.401298E‐45 :‬ﺗﺎ ‪  3.402823E38‬‬

‫‪Double‬‬

‫‪ 8‬ﺑﺎﻳﺖ‬

‫اﻋﺪاد ﻣﻨﻔﻲ‪ ‐1.79769313486232E308 :‬ﺗﺎ‬ ‫اﻋﺪاد ﻣﺜﺒﺖ‪ 4.94065645841247E‐324 :‬ﺗﺎ ‪  1.79769313486232E308‬‬

‫‪Currency‬‬

‫‪ 8‬ﺑﺎﻳﺖ‬

‫‪ ‐922,337,203,685,477.5808‬ﺗﺎ‬

‫‪‐1.401298E‐45‬‬

‫‪  ‐4.94065645841247E‐324‬‬

‫‪  922,337,203,685,477.5807‬‬

‫ﻧﻜﺘﻪ‪:‬‬ ‫ﺑﺮاي اﻋﺪاد اﻋﺸﺎري‪ ،‬ﺑﻬﺘﺮ اﺳﺖ از ﻧﻮع ‪ Single‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬

‫‪--------------‬‬‫ﺳﺎﻳﺮ اﻧﻮاع دادهﻫﺎ )دادهﻫﺎي ﻏﻴﺮﻋﺪدي(‬ ‫درك دادهﻫﺎي ﻏﻴﺮﻋﺪدي )ﺑﺮاي ﻛـﺴﺎﻧﻲ ﻛـﻪ ﻋﻼﻗـﻪاي ﺑـﻪ رﻳﺎﺿـﻴﺎت ﻧﺪارﻧـﺪ( آﺳـﺎنﺗـﺮ اﺳـﺖ‪ .‬ﻳﻜـﻲ از‬ ‫دﻻﻳﻠﻲ ﻛﻪ ‪ ،BASIC‬ﻋﻠﻴﺮﻏﻢ ﺣﻀﻮر زﺑﺎنﻫﺎي ﭘﻴﺸﺮﻓﺘﻪﺗﺮ ﻫﻤﭽﻨﺎن ﻣﻄﺮح ﺑﺎﻗﻲ ﻣﺎﻧﺪه اﺳﺖ‪ ،‬ﺗﻮاﻧـﺎﻳﻲﻫـﺎي‬ ‫آن در ﻛﺎر ﺑﺎ رﺷﺘﻪﻫﺎي ﻣﺘﻨﻲ اﺳﺖ‪ .‬رﺷﺘﻪ ﺗﺮﻛﻴﺒﻲ از ﭼﻨﺪ ﻧﻮﻳﺴﻪ ﻣﻲﺑﺎﺷﺪ‪ ،‬ﻛﻪ ﺣﺘﻲ ﻣـﻲﺗﻮاﻧـﺪ رﻗـﻢ ﻋـﺪدي‬ ‫ﺑﺎﺷﺪ؛ اﻣﺎ ﻧﻤﻲﺗﻮان روي آﻧﻬﺎ ﻣﺤﺎﺳﺒﻪ اﻧﺠﺎم داد‪ .‬ﻫﻤﻮاره ﺳﻌﻲ ﻛﻨﻴﺪ ﻓﻘﻂ ﺑﺮاي اﻋﺪادي ﻛﻪ ﻧﻴﺎز ﺑﻪ ﻣﺤﺎﺳﺒﻪ‬ ‫دارﻧﺪ‪ ،‬از اﻧﻮاع ﻋﺪدي اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬در ﺟﺪول زﻳﺮ اﻧﻮاع دادهﻫﺎي ﻏﻴﺮﻋﺪدي وﻳﮋوال ﺑﻴﺴﻴﻚ را ﻣﺸﺎﻫﺪه‬ ‫ﻣﻲﻛﻨﻴﺪ‪.‬‬ ‫ﻣﻘﺪار ﺣﺎﻓﻈﻪ‬

‫ﻧﻮع داده‬ ‫)ﻃﻮل ﺛﺎﺑﺖ( ‪String‬‬

‫ﻃﻮل رﺷﺘﻪ‬

‫)ﻃﻮل ﻣﺘﻐﻴﺮ( ‪String‬‬

‫ﻃﻮل رﺷﺘﻪ ‪ 10 +‬ﺑﺎﻳﺖ‬

‫ﻣﺤﺪوده‬ ‫از ‪ 1‬ﺗﺎ ﺗﻘﺮﻳﺒﺎ ‪ 65400‬ﻧﻮﻳﺴﻪ‬ ‫‪ 0‬ﺗﺎ ‪ 2‬ﻣﻴﻠﻴﺎرد ﻧﻮﻳﺴﻪ‬

‫‪  Date‬‬

‫‪ 8‬ﺑﺎﻳﺖ‬

‫‪1‬ز اول ژاﻧﻮﻳﻪ ‪ 100‬ﺗﺎ ‪ 31‬دﺳﺎﻣﺒﺮ ‪9999‬‬

‫‪  Boolean‬‬

‫‪ 2‬ﺑﺎﻳﺖ‬

‫‪ True‬ﻳﺎ ‪  False‬‬

‫[‪  Object‬‬

‫‪ 4‬ﺑﺎﻳﺖ‬

‫ﻣﻌﺎدل ﺷﻲء ﺗﻌﺮﻳﻒﺷﺪه‬

‫)ﻋﺪدي( ‪  Variant‬‬

‫‪ 16‬ﺑﺎﻳﺖ‬

‫ﻫﺮ ﻋﺪدي ﺗﺎ ‪  Double‬‬

‫)ﻣﺘﻦ( ‪   Variant‬ﻃﻮل رﺷﺘﻪ ‪ 22 +‬ﺑﺎﻳﺖ‬ ‫ﺻﻔﺤﻪ‪٢٧ :‬‬

‫‪ 0‬ﺗﺎ ﺗﻘﺮﻳﺒﺎ ‪ 2‬ﻣﻴﻠﻴﺎرد ﻧﻮﻳﺴﻪ ‪ ‬‬

‫ﻣﺘﻐﻴﺮﻫﺎ‬ ‫ﮔﺎﻫﻲ ﻻزم اﺳﺖ در ﻃﻮل ﺑﺮﻧﺎﻣﻪﺗﺎن ﻋﺪدي ﻳﺎ دادهاي را در ﺟﺎﻳﻲ ذﺧﻴﺮه ﻛﻨﻴﺪ و روي آن ﻋﻤﻠﻴﺎﺗﻲ اﻧﺠﺎم‬ ‫دﻫﻴﺪ؛ ﺑﺮاي اﻳﻦ ﻛﺎر ﺑﻪ ﻣﺘﻐﻴـﺮ ﻧﻴـﺎز دارﻳـﺪ‪ .‬ﻣﺘﻐﻴـﺮ ﻳـﺎ ‪ Variable‬ﻣﻜـﺎﻧﻲ در ﺣﺎﻓﻈـﻪ اﺳـﺖ ﻛـﻪ ﻣـﻲﺗﻮاﻧـﺪ‬ ‫ﻣﻘﺪاري را در ﺧﻮد ﻧﮕﻪ دارد ﻛﻪ اﻳﻦ ﻣﻘـﺪار‪ ،‬ﻗﺎﺑـﻞ ﺗﻐﻴﻴـﺮ اﺳـﺖ‪ .‬وﻗﺘـﻲ ﻣﻘـﺪاري را در ﻳـﻚ ﻣﺘﻐﻴـﺮ ﻗـﺮار‬ ‫ﻣﻲدﻫﻴﺪ‪ ،‬ﻣﻘﺪار ﻗﺒﻠﻲ آن از ﺑﻴﻦ ﺧﻮاﻫﺪ رﻓﺖ‪.‬‬ ‫ﻣﺘﻐﻴﺮﻫﺎ ﺑﺎ ﻧﺎﻣﺸﺎن ﺷﻨﺎﺧﺘﻪ ﻣﻲﺷﻮﻧﺪ‪ ،‬ﺑﻨﺎﺑﺮ اﻳﻦ در ﻳﻚ ﻗﺴﻤﺖ از ﺑﺮﻧﺎﻣﻪ )روال( اﺳـﺘﻔﺎده از دو ﻣﺘﻐﻴـﺮ ﺑـﺎ‬ ‫ﻳﻚ ﻧﺎم ﻣﺠﺎز ﻧﻴﺴﺖ‪ ،‬زﻳﺮا وﻳﮋوال ﺑﻴﺴﻴﻚ ﻗﺎدر ﺑﻪ ﺗﺸﺨﻴﺺ آﻧﻬـﺎ ﻧﺨﻮاﻫـﺪ ﺑـﻮد‪ .‬ﻗﺒـﻞ از اﺳـﺘﻔﺎده از ﻳـﻚ‬ ‫ﻣﺘﻐﻴﺮ ﺑﺎﻳﺪ آن را اﻋﻼن )‪ (Declare‬ﻛﻨﻴﺪ‪ .‬اﻋﻼن ﻳﻚ ﻣﺘﻐﻴﺮ‪ ،‬ﻳﻌﻨﻲ ﻧﺎمﮔﺬاري آن و ﺗﻌﻴﻴﻦ ﻧـﻮع ﻣﻘـﺪاري‬ ‫ﻛﻪ ﻣﻲﺗﻮاﻧﺪ ﺑﮕﻴﺮد‪.‬‬ ‫ﻧﻜﺘﻪ‪:‬‬ ‫ﻣﺘﻐﻴﺮﻫﺎ ﻓﻘﻂ ﻣﻲﺗﻮاﻧﻨﺪ از ﻫﻤﺎن ﻧﻮﻋﻲ ﻛﻪ اﻋـﻼن ﺷـﺪهاﻧـﺪ ﻣﻘـﺪار ﺑﮕﻴﺮﻧـﺪ؛ اﻟﺒﺘـﻪ ﺑـﻪاﺳـﺘﺜﻨﺎي ﻣﺘﻐﻴـﺮﻫـﺎي‬ ‫‪ Variant‬ﻛﻪ ﻣﻲﺗﻮاﻧﻨﺪ از ﺗﻤﺎم اﻧﻮاع دادهﻫﺎ ﻣﻘﺪار ﺑﮕﻴﺮﻧﺪ‪.‬‬

‫ﻗﻮاﻧﻴﻦ اﻳﺠﺎد ﻣﺘﻐﻴﺮﻫﺎ‬ ‫ﺑﻪدﻟﻴﻞ اﻳﻨﻜﻪ ﻧﺎمﮔﺬاري ﻣﺘﻐﻴﺮﻫﺎ ﺑﻪ ﻋﻬﺪهي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ اﺳﺖ‪ ،‬ﺑﺎﻳﺪ ﻗﻮاﻋﺪ ﻧﺎمﮔﺬاري آﻧﻬﺎ را ﺑﺪاﻧﻴﺪ‪:‬‬ ‫• ﻧﺎم ﻣﺘﻐﻴﺮ ﺑﺎﻳﺪ ﺑﺎ ﻳﻜﻲ از ﺣﺮوف اﻟﻔﺒﺎ ﺷﺮوع ﺷﻮد‪  .‬‬ ‫• اﺳﺘﻔﺎده از ﺣﺮوف و اﻋﺪاد در ﻧﺎم ﻣﺘﻐﻴﺮﻫﺎ ﻣﺠﺎز اﺳﺖ ‪ ‬‬ ‫• ﻧﺎم ﻳﻚ ﻣﺘﻐﻴﺮ ﻣﻲﺗﻮاﻧﺪ ﺗﺎ ‪ 255‬ﻧﻮﻳﺴﻪ ﻃﻮل داﺷﺘﻪ ﺑﺎﺷﺪ‪  .‬‬ ‫• ﺳﻌﻲ ﻛﻨﻴﺪ ﺗﺎ ﺣﺪ اﻣﻜﺎن از ﺣﺮوف ﺧﺎص )ﻏﻴﺮاﻟﻔﺒﺎﻳﻲ‪-‬ﻋﺪدي( اﺳﺘﻔﺎده ﻧﻜﻨﻴﺪ‪ .‬ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ دﻳﮕـﺮ‬ ‫ﻧﻴﺎزي ﻧﻴﺴﺖ ﻧﮕﺮان ﺑﺎﺷﻴﺪ ﻛﻪ ﻛﺪام ﺣﺮوف ﺧﺎص ﻣﺠﺎزﻧﺪ و ﻛﺪام ﺣﺮوف ﻏﻴﺮﻣﺠﺎز‪  .‬‬ ‫• ﻓﺎﺻﻠﻪ در ﻧﺎم ﻣﺘﻐﻴﺮﻫﺎ ﻣﺠﺎز ﻧﻴﺴﺖ‪  .‬‬ ‫ﻋﻼوه ﺑﺮ ﻗﻮاﻋﺪ اﻟﺰاﻣﻲ ﻓﻮق‪ ،‬ﺳﻌﻲ ﻛﻨﻴﺪ ﻫﻨﮕﺎم ﻧﺎمﮔﺬاري ﻣﺘﻐﻴﺮﻫﺎ ﻧﻜﺎت زﻳﺮ را ﻫﻢ رﻋﺎﻳﺖ ﻛﻨﻴﺪ‪.‬‬ ‫• در ﻧﺎم ﻣﺘﻐﻴﺮﻫﺎ از ﭘﻴﺸﻮﻧﺪﻫﺎﻳﻲ اﺳﺘﻔﺎده ﻛﻨﻴﺪ ﻛـﻪ ﻧـﻮع آن را ﻣـﺸﺨﺺ ﻛﻨـﺪ‪ .‬ﺑـﺪﻳﻦ ﺗﺮﺗﻴـﺐ دﻳﮕـﺮ‬ ‫ﻧﻴﺎزي ﻧﻴﺴﺖ ﻛﻪ ﻣﺪام ﺑﺮاي اﻃﻼع از ﻧﻮع ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﻪ ﻗﺴﻤﺖ اﻋـﻼن ﻣﺘﻐﻴـﺮﻫـﺎ ﻣﺮاﺟﻌـﻪ ﻛﻨﻴـﺪ‪.‬‬ ‫ﺟﺪول زﻳﺮ ﭘﻴﺸﻮﻧﺪ اﻧﻮاع دادهﻫﺎي ﻣﺘﻌﺎرف وﻳﮋوال ﺑﻴﺴﻴﻚ را ﻧﺸﺎن ﻣﻲدﻫﺪ‪  .‬‬ ‫ﺟﺪول ﭘﻴﺸﻮﻧﺪ ﻧﺎم ﻣﺘﻐﻴﺮﻫﺎ ‪ ‬‬ ‫ﺻﻔﺤﻪ‪٢٨ :‬‬

‫ﭘﻴﺸﻮﻧﺪ‬

‫ﻧﻮع داده‬

‫‪  bln‬‬ ‫‪  byt‬‬ ‫‪  cur‬‬ ‫‪  dte‬‬ ‫‪  dbl‬‬ ‫‪  int‬‬ ‫‪  lng‬‬ ‫‪  obj‬‬ ‫‪  sng‬‬ ‫‪  str‬‬ ‫‪  vnt‬‬

‫‪  Boolean‬‬ ‫‪  Byte‬‬ ‫‪  Currency‬‬ ‫‪  Date‬‬ ‫‪  Double‬‬ ‫‪  Integer‬‬ ‫‪  Long‬‬ ‫‪  Object‬‬ ‫‪  Single‬‬ ‫‪  String‬‬ ‫‪  Variant‬‬

‫ﻣﺜﺎل‬ ‫‪  blnButtonEnabled‬‬ ‫‪  bytLenght‬‬ ‫‪  curSales98‬‬ ‫‪  dteOverdue‬‬ ‫‪  DblScientificAmt‬‬ ‫‪  intYear1998‬‬ ‫‪  lngWeatherDistance‬‬ ‫‪  objWorksheetAcct99‬‬ ‫‪  sngSales1stQte‬‬ ‫‪  strFirstName‬‬ ‫‪  vntValue‬‬

‫ﻧﻜﺘﻪي ﻳﻚ‪:‬‬ ‫در ﺟﺪول ﺑﺎﻻ از ﻧﺎمﻫﺎي ﺑﺎﻣﻌﻨﻲ اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‪ ،‬اﻳﻦ ﻛﺎر ﺳﺒﺐ ﻗﺎﺑﻞ ﻓﻬﻢﺗـﺮ ﺷـﺪن ﺑﺮﻧﺎﻣـﻪ ﺧﻮاﻫـﺪ‬ ‫ﺷﺪ‪ ،‬در ﻧﺘﻴﺠﻪ ﺑﻪ ﻣﺴﺘﻨﺪﺳﺎزي ﻛﻤﺘﺮي ﻧﻴﺎز ﺧﻮاﻫﺪ داﺷﺖ‪.‬‬ ‫ﻧﻜﺘﻪي دو‪:‬‬ ‫ﺑﺮاي ﺟﺪاﻛﺮدن ﻗﺴﻤﺖﻫﺎي ﻧﺎم ﻣﺘﻐﻴﺮ از ﺣﺮوف ﺑﺰرگ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﻣﺎﻧﻨﺪ‪intTotal :‬‬

‫اﻋﻼن ﻣﺘﻐﻴﺮﻫﺎ‬ ‫ﺑﺮاي اﻋﻼن ﻳﻚ ﻣﺘﻐﻴﺮ از ﻛﻠﻤﻪي ﻛﻠﻴﺪي ‪ Dim‬اﺳﺘﻔﺎده ﻣﻲﺷﻮد‪ .‬ﻗﺒﻞ از اﺳﺘﻔﺎده از ﻳﻚ ﻣﺘﻐﻴﺮ ﺣﺘﻤﺎ ﺑﺎﻳـﺪ‬ ‫آن را اﻋﻼن ﻛﺮد‪ .‬اﻟﺒﺘﻪ ‪ VB‬اﺟﺎزه ﻣﻲدﻫﺪ ﻛﻪ اﻳﻦ ﻗﺎﻋﺪهي ﻛﻠﻲ را زﻳﺮ ﭘﺎ ﺑﮕﺬارﻳـﺪ‪ ،‬وﻟـﻲ ﺗﺨﻠـﻒ از اﻳـﻦ‬ ‫ﻗﺎﻋﺪه ﻣﻲﺗﻮاﻧﺪ ﺑﻪ ﺳﺮدرﮔﻤﻲ ﻣﻨﺠﺮ ﺷﻮد‪ .‬اﻟﺰام ﻳﺎ ﻋﺪم اﻟﺰام ﺑﻪ اﻋـﻼن ﻣﺘﻐﻴـﺮﻫـﺎ را ﻣـﻲﺗﻮاﻧﻴـﺪ در ﻣﻨـﻮي‬ ‫‪ ،Tools\Option‬زﺑﺎﻧﻪي ‪ Editor‬و ﮔﺰﻳﻨﻪي ‪ Require Variable Declaration‬ﻣﺸﺨﺺ ﻛﻨﻴـﺪ‪.‬‬ ‫اﮔﺮ اﻳﻦ ﮔﺰﻳﻨﻪ اﻧﺘﺨﺎب ﺷﻮد‪ ،‬در ﻗﺴﻤﺖ ﺗﻌﺎرﻳﻒ ﭘﻨﺠﺮهي ﻛـﺪ‪ ،‬ﻛﻠﻤـﻪي ‪ Option  Explicit‬ﺑـﻪ ﺻـﻮرت‬ ‫ﭘﻴﺶ ﻓﺮض ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪.‬‬ ‫ﺗﻘﺮﻳﺒـﺎ ﻣـﻲﺗـﻮان ﮔﻔـﺖ ﻛـﻪ اﻳـﻦ ﻋﺒـﺎرت ﻣﺨﻔـﻒ ‪All Variables Used Must Be Explicitly ‬‬ ‫‪ Declared‬ﻣﻲﺑﺎﺷﺪ‪ .‬اﻳﻦ دﺳﺘﻮر ﺑﻪ وﻳﮋوال ﺑﻴﺴﻴﻚ ﻣﻲﮔﻮﻳﺪ ﻛﻪ ﺗﻤﺎﻣﻲ ﻣﺘﻐﻴـﺮﻫـﺎي ﻣـﻮرد اﺳـﺘﻔﺎده‪ ،‬ﺑﺎﻳـﺪ‬

‫ﺻﻔﺤﻪ‪٢٩ :‬‬

‫ﺻﺮﻳﺤﺎ ﺗﻌﺮﻳﻒ ﺷﻮﻧﺪ‪ .‬در ﭼﻨﻴﻦ ﺣﺎﻟﺘﻲ‪ ،‬ﻫﺮﮔﺎه ﻧﺎم ﻳﻚ ﻣﺘﻐﻴﺮ را اﺷﺘﺒﺎه ﺑﻨﻮﻳﺴﻴﺪ‪ ،‬وﻳـﮋوال ﺑﻴـﺴﻴﻚ آن را ﺑـﻪ‬ ‫ﺷﻤﺎ ﮔﻮﺷﺰد ﺧﻮاﻫﺪ ﻛﺮد؛ اﻣﺎ اﮔﺮ اﻳﻦ ﮔﺰﻳﻨﻪ ﻏﻴﺮﻓﻌﺎل ﺑﺎﺷـﺪ‪ ،‬وﻳـﮋوال ﺑﻴـﺴﻴﻚ اﺷـﺘﺒﺎه در ﻧﻮﺷـﺘﻦ ﻧـﺎم ﻳـﻚ‬ ‫ﻣﺘﻐﻴﺮ را ﻣﺘﻐﻴﺮ ﺟﺪﻳﺪي ﺗﻠﻘﻲ ﻛﺮده و ﺑﻪ ﻛـﺎر ﺧـﻮد اداﻣـﻪ ﺧﻮاﻫـﺪ داد‪ .‬در اﻳـﻦ ﺣﺎﻟـﺖ ﺗﻤـﺎم ﻣﺘﻐﻴﺮﻫـﺎﻳﻲ ﻛـﻪ‬ ‫اﻋﻼن ﻧﺸﻮﻧﺪ‪ ،‬از ﻧﻮع ‪ Variant‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺧﻮاﻫﻨﺪ ﺷﺪ‪.‬‬ ‫ﺷﻜﻞ ﻛﻠﻲ اﺳﺘﻔﺎده از دﺳﺘﻮر ‪ Dim‬ﺑﺮاي اﻋﻼن ﻳﻚ ﻣﺘﻐﻴﺮ ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ‪:‬‬ ‫]‪Dim       VarName       [As DataType‬‬ ‫‪Dim‬‬ ‫] ﻧﻮع داده ‪     [As‬ﻧﺎم ﻣﺘﻐﻴﺮ‬

‫ﻳﺎ‬ ‫‪:‬ﻧﻮع ﭘﺴﻮﻧﺪ‬

‫‪  Dim      VarName‬‬ ‫‪Dim        A%‬‬

‫ﻧﻜﺘﻪي ﻳﻚ‪:‬‬ ‫در ﻣﺜﺎل ﺑـﺎﻻ )‪ ،(Dim A%‬از ﭘـﺴﻮﻧﺪ ﻋـﺪدي اﺳـﺘﻔﺎده ﻛـﺮدﻳﻢ‪ .‬وﻗﺘـﻲ در ﻳـﻚ ﺑﺮﻧﺎﻣـﻪ‪ ،‬ﻋـﺪدي را ﺻـﺮﻳﺤﺎ‬ ‫ﻣﻲﻧﻮﻳﺴﻴﺪ‪ ،‬وﻳﮋوال ﺑﻴﺴﻴﻚ ﻣﻨﺎﺳﺐﺗﺮﻳﻦ ﻧﻮع را ﺑﺮاي آن ﺑﺮﻣـﻲﮔﺰﻳﻨـﺪ‪ ،‬وﻟـﻲ ﮔـﺎﻫﻲ ﻻزم اﺳـﺖ دادهي‬ ‫ﻋﺪدي ﻣﻮرد اﺳﺘﻔﺎده از ﻧﻮﻋﻲ ﺑﺎﺷﺪ ﻛﻪ ﺷﻤﺎ دارﻳﺪ‪ ،‬ﻧﻪ آﻧﭽﻪ ﻛﻪ وﻳﮋوال ﺑﻴـﺴﻴﻚ ﺗﻌﻴـﻴﻦ ﻣـﻲﻛﻨـﺪ‪ .‬در ﭼﻨـﻴﻦ‬ ‫ﻣﻮاردي ﻣﻲﺗﻮاﻧﻴﺪ ﻧﻮع داده را ﺻﺮﻳﺤﺎ ﺑﻪ وﻳﮋوال ﺑﻴﺴﻴﻚ ﻣﻌﺮﻓﻲ ﻛﻨﻴﺪ‪ .‬اﻳﻦ ﻛﺎر ﺑﺎ اﺳـﺘﻔﺎده از ﭘـﺴﻮﻧﺪ ﻧـﻮع‬ ‫داده ﻳﺎ ‪ Data‐type  Suffix‬اﻣﻜﺎنﭘﺬﻳﺮ اﺳﺖ‪ .‬ﺟﺪول زﻳﺮ اﻧﻮاع ﭘﺴﻮﻧﺪﻫﺎي ﻋﺪدي در وﻳﮋوال ﺑﻴﺴﻴﻚ‬ ‫را ﻧﺸﺎن ﻣﻲدﻫﺪ‪.‬‬ ‫ﭘﺴﻮﻧﺪ‬

‫ﻧﻮع داده‬

‫‪ %‬‬ ‫&‪ ‬‬ ‫!‪ ‬‬ ‫‪ #‬‬ ‫@‪ ‬‬

‫‪  Integer‬‬ ‫‪  Long‬‬ ‫‪  Single‬‬ ‫‪  Double‬‬ ‫‪  Currency‬‬

‫ﺻﻔﺤﻪ‪٣٠ :‬‬

‫ﻧﻜﺘﻪي دو‪:‬‬ ‫اﮔﺮ ﺑﻪ ﻣﺜـﺎل ﺑـﺎﻻ دﻗـﺖ ﻛـﺮده ﺑﺎﺷـﻴﺪ‪ As  DataType ،‬درون ﻛﺮوﺷـﻪ ﻗـﺮار ﮔﺮﻓﺘـﻪ اﺳـﺖ‪ .‬ﻳﻌﻨـﻲ اﻳـﻦ‬ ‫ﻗﺴﻤﺖ ‪ Optional‬ﻳﺎ اﺧﺘﻴﺎري ﻣﻲﺑﺎﺷﺪ‪ .‬ﻫﺮﮔﺎه ‪ As DataType‬ذﻛﺮ ﻧﺸﻮد‪ VB ،‬ﺑﻪ ﻃـﻮر ﺧﻮدﻛـﺎر آن را‬ ‫از ﻧﻮع ‪ Variant‬ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﺪ‪ .‬اﮔﺮ از ﻧﻮع داده ﺧﻮد ﺑﻲاﻃﻼع ﻫﺴﺘﻴﺪ از ﻧـﻮع ‪ Variant‬اﺳـﺘﻔﺎده ﻛﻨﻴـﺪ‪.‬‬ ‫ﭘﺲ ﻋﻤﻼ دو دﺳﺘﻮر زﻳﺮ ﻣﻌﺎدﻟﻨﺪ‪:‬‬ ‫‪  Dim x as Variant‬‬ ‫‪  Dim x‬‬

‫ﻧﻜﺘﻪي ﺳﻪ‪:‬‬ ‫ﻫﻨﮕﺎم اﺳﺘﻔﺎده از ﻣﻘﺎدﻳﺮي ﻛﻪ ﺷﺎﻣﻞ ﺗﺎرﻳﺦ و زﻣﺎن ﻫﺴﺘﻨﺪ از ﻋﻼﻣﺖ ‪ #‬در اﺑﺘﺪا و اﻧﺘﻬﺎي اﻳﻦ ﻣﻘـﺎدﻳﺮ‪،‬‬ ‫اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬وﻳﮋوال ﺑﻴﺴﻴﻚ از ﺗﻤﺎم ﻗﺎﻟﺐﻫﺎي ﺗﺎرﻳﺦ و زﻣﺎن ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲﻛﻨﺪ‪ .‬ﺑﻪ ﻣﺜﺎلﻫﺎي زﻳﺮ ﺗﻮﺟﻪ‬ ‫ﻛﻨﻴﺪ‪:‬‬ ‫‪#July 4, 1776#‬‬ ‫‪  #9:02 pm#‬‬ ‫‪  #16:09:40#‬‬ ‫‪#1‐2‐2005#‬‬ ‫‪  #5‐Dec‐99#‬‬

‫ﻧﻜﺘﻪي ﭼﻬﺎر‪:‬‬ ‫ﻧﻮع دادهي ‪ Boolean‬ﺑﺮاي ﻣﻮاردي ﻣﻨﺎﺳﺐ اﺳﺖ ﻛﻪ ﻓﻘﻂ دو ﻣﻘـﺪار ﻣﺨـﺎﻟﻒ ﻫـﻢ دارﻳـﺪ‪ .‬ﻣﺸﺨـﺼﻪي‬ ‫‪ Enabled‬ﻛﻨﺘﺮلﻫـﺎ‪ ،‬از اﻳـﻦ ﻧﻤﻮﻧـﻪ اﺳـﺖ‪ .‬ﺳـﻌﻲ ﻛﻨﻴـﺪ ﻫﻨﮕـﺎم ﻧـﺎمﮔـﺬاري ﻣﺘﻐﻴـﺮﻫـﺎي ‪ Boolean‬از‬ ‫ﺳﻮاﻻﺗﻲ اﺳﺘﻔﺎده ﻛﻨﻴﺪ ﻛﻪ ﺑﺘﻮان ﺑﻪ آﻧﻬﺎ ﺟﻮاب ﺑﻠﻲ ﻳﺎ ﺧﻴﺮ داد‪  .‬‬ ‫ﻧﻜﺘﻪي ﭘﻨﺞ‪:‬‬ ‫ﻧﻮع دادهي ‪ Variant‬ﻣﻲﺗﻮاﻧﺪ ﻫﺮ ﻣﻘﺪاري )ﺑﺠﺰ رﺷﺘﻪﻫﺎي ﺑﺎ ﻃﻮل ﺛﺎﺑﺖ( را در ﺧﻮد ﺟﺎي دﻫـﺪ‪ .‬زﻣـﺎﻧﻲ‬ ‫از اﻳﻦ ﻧﻮع داده اﺳﺘﻔﺎده ﻛﻨﻴﺪ ﻛﻪ از ﻗﺒﻞ‪ ،‬دﻗﻴﻘﺎ ﻧﻤﻲداﻧﻴﺪ ﺑﺎ ﭼﻪ ﻧﻮع دادهاي ﺳﺮوﻛﺎر ﺧﻮاﻫﻴﺪ داﺷﺖ‪.‬‬ ‫ﻧﻜﺘﻪي ﺷﺶ‪:‬‬ ‫اﮔﺮ اﻣﻜﺎن اﻧﺘﺨﺎب ﺑﻴﻦ دو ﻳﺎ ﭼﻨﺪ ﻧﻮع اﻧﺘﺨﺎب را دارﻳﺪ‪ ،‬ﻧﻮع دادهاي را اﻧﺘﺨﺎب ﻛﻨﻴﺪ ﻛﻪ‪ ،‬ﻛﻤﺘﺮﻳﻦ ﻣﻴـﺰان‬ ‫اﺷﻐﺎﻟﻲ ﺣﺎﻓﻈﻪ را داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬اﻳـﻦ ﻛـﺎر ﺑﺎﻋـﺚ ﺑـﺎرﮔﺰاري ﺳـﺮﻳﻊﺗـﺮ ﺑﺮﻧﺎﻣـﻪ در ﺣﺎﻓﻈـﻪ و ﺑﻬﻴﻨـﻪ ﺷـﺪن آن‬ ‫ﻣﻲﺷﻮد‪.‬‬ ‫ﻧﻜﺘﻪي ﻫﻔﺖ‪:‬‬

‫ﺻﻔﺤﻪ‪٣١ :‬‬

‫رﺷﺘﻪاي ﻛﻪ ﻃﻮل آن ﺻﻔﺮ ﺑﺎﺷﺪ‪ ،‬رﺷﺘﻪي ‪ Null‬ﻧﺎﻣﻴﺪه ﻣﻲﺷـﻮد‪ .‬ﻛﻠﻤـﻪي رزرو ﺷـﺪهي ‪VBNullString‬‬

‫در ‪ VB‬ﻣﻌﺎدل رﺷﺘﻪي ﺗﻬﻲ ﻣﻲﺑﺎﺷﺪ‪ .‬اﻳﻦ ﻛﻠﻤﻪ ﻣﻲﺗﻮاﻧﺪ ﺑﻪ ﺟﺎي دو ﻋﻼﻣﺖ ﻧﻘﻞ ﻗﻮل اﺳﺘﻔﺎده ﺷﻮد‪.‬‬ ‫ﻧﻜﺘﻪي ﻫﺸﺖ‪:‬‬ ‫ﻣﻲﺗﻮان ﺗﻌﺎرﻳﻒ ﻣﺘﻐﻴﺮﻫﺎ را ﺑﺎ ﺟﺪاﺳﺎزي ﺗﻮﺳﻂ ﻛﺎﻣﺎ در ﻳﻚ دﺳﺘﻮر ‪ Dim‬ﺗﺮﻛﻴﺐ ﻛﺮد‪ .‬وﻟﻲ اﮔـﺮ ﻣﺘﻐﻴـﺮﻫـﺎ‬ ‫از اﻧﻮاع ﮔﻮﻧﺎﮔﻮن ﺑﺎﺷﻨﺪ ﺑﺎﻳﺪ ‪ As DataType‬را ﻧﻮﺷﺖ‪:‬‬ ‫‪  Dim a1, Total, Sum As Integer‬‬ ‫‪  Dim a1 As Integer, strFirstName As String, t As Boolean‬‬

‫ﻣﺘﻐﻴﺮﻫﺎي رﺷﺘﻪاي‬ ‫ﻧﻮع دادهي ‪ String‬ﺑﺮاي دو ﻧﻮع رﺷـﺘﻪ ﺑـﺎ ﻃـﻮل ﺛﺎﺑـﺖ و ﻣﺘﻐﻴـﺮ ﺑـﻪ ﻛـﺎر ﻣـﻲرود‪ .‬در وﻳـﮋوال ﺑﻴـﺴﻴﻚ‪،‬‬ ‫ﺗﻌﺮﻳﻒ رﺷﺘﻪ ﺑﺎ ﻃﻮل ﻣﺘﻐﻴﺮ‪ ،‬ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ‪.‬‬ ‫‪Dim strCityName As String‬‬

‫ﻫﺮ دوي اﻳﻦ ﻣﺘﻐﻴﺮﻫﺎ ﻣﻲﺗﻮاﻧﻨﺪ رﺷﺘﻪﻫﺎﻳﻲ ﺑﺎ ﻃﻮل ﻣﺘﻔﺎوت را در ﺧﻮد ﻧﮕﻪ دارﻧﺪ‪ .‬ﻣﺜﻼ‪ ،‬اﮔﺮ اﺑﺘﺪا در ﻣﺘﻐﻴﺮ‬ ‫‪ strCityName‬رﺷﺘﻪي "‪  "Tehran‬و ﺳﭙﺲ رﺷﺘﻪي "‪ "Barare‬را ذﺧﻴﺮه ﻛﻨـﻴﻢ‪ ،‬اﻳـﻦ ﻣﺘﻐﻴـﺮ ﻃـﻮل‬ ‫ﺧﻮد را ﻣﺘﻨﺎﺳﺐ ﺑﺎ آن ﺗﻐﻴﻴﺮ ﺧﻮاﻫﺪ داد‪ .‬وﻟﻲ اﮔﺮ ﺑﺨﻮاﻫﻴﺪ رﺷﺘﻪﻫﺎﻳﻲ ﺑﺎ ﻃﻮل ﺛﺎﺑﺖ اﻳﺠﺎد ﻛﻨﻴﺪ‪ ،‬ﺑﺎﻳـﺪ ﻃـﻮل‬ ‫رﺷﺘﻪ را ﻣﺸﺨﺺ ﻛﻨﻴﺪ‪:‬‬ ‫‪Dim VarName As String * Length‬‬

‫ﻣﺎﻧﻨﺪ‪:‬‬ ‫‪Dim strZipCode As String * 5‬‬

‫ﻳﻌﻨﻲ ﻣﺘﻐﻴﺮ ‪ strZipCode‬ﻫﻴﭽﮕﺎه ﺑﻴﺶ از ‪ 5‬ﻧﻮﻳﺴﻪ را ﻧﻤﻲﺗﻮاﻧﺪ در ﺧﻮد ذﺧﻴﺮه ﻛﻨﺪ‪ .‬اﮔﺮ ﺷـﻤﺎ ﺳـﻌﻲ ﻛﻨﻴـﺪ‬ ‫رﺷﺘﻪاي ﻛﻪ ﺑﻴﺶ از ‪ 5‬ﻧﻮﻳﺴﻪ دارد را در ‪ strZipCode‬ذﺧﻴﺮه ﻛﻨﻴـﺪ‪ VB ،‬ﺗﻨﻬـﺎ ‪ 5‬ﻧﻮﻳـﺴﻪي اول آن را‬ ‫در ‪ strZipCode‬ﻗﺮار ﻣﻲدﻫﺪ و ﻣﺎﺑﻘﻲ را ﻧﺎدﻳﺪه ﻣﻲﮔﻴﺮد‪.‬‬

‫ﻣﻘﺪار دادن ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎ‬ ‫ﺑﻌﺪ از اﻋﻼن ﻳﻚ ﻣﺘﻐﻴﺮ‪ ،‬ﻣﻲﺗﻮان دادهﻫﺎ را در آن ذﺧﻴﺮه ﻛﺮد‪ .‬ﺳﺎدهﺗﺮﻳﻦ راه ﻣﻘﺪار دادن ﺑﻪ ﻳﻚ ﻣﺘﻐﻴـﺮ‪،‬‬ ‫اﺳﺘﻔﺎده از دﺳﺘﻮر اﻧﺘﺴﺎب ‪ 1‬ﻣﻲﺑﺎﺷﺪ‪ .‬ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮر ﭼﻨﻴﻦ اﺳﺖ‪:‬‬ ‫‪Assignment Statement 1‬‬

‫ﺻﻔﺤﻪ‪٣٢ :‬‬

‫‪  VarName = Expression‬‬ ‫‪ ‬‬

‫ﻛﻪ در آن ‪ VarName‬ﻧﺎم ﻣﺘﻐﻴـﺮ ﻳـﺎ ﺧﺎﺻـﻴﺖ ﻳـﻚ ﻛﻨﺘـﺮل اﺳـﺖ و ‪ Expression‬ﻳﻜـﻲ از ﻣـﻮاد زﻳـﺮ‬ ‫ﻣﻲﺑﺎﺷﺪ‪:‬‬ ‫• ﻋﺒﺎرات ﻣﺤﺎﺳﺒﺎﺗﻲ ﻳﺎ رﻳﺎﺿﻲ ‪ ‬‬ ‫‪ ‬‬

‫‪Sum = 12+34‬‬

‫ﻳﺎ‬

‫‪  x = 2 * n + i‬‬

‫• ﻳﻚ ﻣﻘﺪار )ﺛﺎﺑﺖ‪ ،‬ﻣﺘﻐﻴﺮ و ‪  (...‬‬ ‫‪ ‬‬

‫"‪     Name = "Meisam‬ﻳﺎ‬

‫‪Even = 2‬‬

‫ﻳﺎ‬

‫‪  x = a‬‬

‫• ﻣﺸﺨﺼﻪي ﻳﻚ ﻛﻨﺘﺮل ‪ ‬‬ ‫‪ ‬‬

‫‪x = LblTitle.Enabled‬‬

‫ﻳﺎ‬

‫"‪  LblTitle.Caption = "Esteghlal Ghahreman‬‬

‫ﻧﻜﺘﻪي ﻳﻚ‪:‬‬ ‫ﻣﺸﺨﺼﻪي ﻛﻨﺘﺮلﻫﺎ از ﻧﻮع ‪ Variant‬ﻣﻲﺑﺎﺷﻨﺪ وﻟﻲ وﻳـﮋوال ﺑﻴـﺴﻴﻚ ﻫﻨﮕـﺎم ذﺧﻴـﺮه ﻛـﺮدن آﻧﻬـﺎ در ﻳـﻚ‬ ‫ﻣﺘﻐﻴﺮ‪ ،‬ﻧﻮع آﻧﻬﺎ را ﺗﺒﺪﻳﻞ ﺧﻮاﻫﺪ ﻛﺮد‪.‬‬ ‫ﻧﻜﺘﻪي دو‪:‬‬ ‫ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ ﻣﻬﻢﺗﺮﻳﻦ ﻧﻜﺘﻪ درﺑﺎرهي ﻳﻚ ﻋﺒﺎرت آن اﺳﺖ ﻛﻪ ﻣﻘﺪار ﺳﻤﺖ راﺳﺖ ﻋﺒﺎرت ﺑﻪ‬ ‫ﻣﺘﻐﻴﺮ ﺳﻤﺖ ﭼﭗ آن ﻧﺴﺒﺖ داده ﻣﻲﺷﻮد‪ .‬ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﻣﻘﺪار ﺳﻤﺖ راﺳﺖ ﻋﺒﺎرت ﺑﺎﻳﺪ ﺑﺎ ﻧﻮع ﻣﺘﻐﻴﺮ‬ ‫ﺳﻤﺖ ﭼﭗ ﻋﺒﺎرت ﻣﺘﻨﺎﺳﺐ ﺑﺎﺷﺪ‪.‬‬ ‫ﻧﻜﺘﻪي ﺳﻪ‪:‬‬ ‫در وﻳﮋوال ﺑﻴﺴﻴﻚ ﺑﺮاي ﺣﻔﻆ ﺳﺎزﮔﺎري ﺑﺎ ﺑﻴﺴﻴﻚﻫﺎي ﻗﺪﻳﻤﻲ‪ ،‬ﻣـﻲﺗـﻮان از ﻛﻠﻤـﻪي ﻛﻠﻴـﺪي ‪ Let‬ﺑـﺮاي‬ ‫ﻣﻘﺪار دادن ﺑﻪ ﻣﺘﻐﻴﺮﻫﺎ اﺳﺘﻔﺎده ﻛﺮد؛ ﭘﺲ در ﻋﻤﻞ دو دﺳﺘﻮر زﻳﺮ ﻣﻌﺪل ﻳﻜﺪﻳﮕﺮﻧﺪ‪:‬‬ ‫‪  Let intSales = 4582‬‬ ‫‪intSales = 4582‬‬

‫ﻧﻜﺘﻪي ﭼﻬﺎر‪:‬‬ ‫ﻫﺮ ﻛﻨﺘﺮل وﻳﮋوال ﺑﻴﺴﻴﻚ داراي ﻳﻚ ﻣﺸﺨﺼﻪي ﭘﻴﺶﻓﺮض اﺳﺖ ﻛﻪ اﮔﺮ ﻣﺸﺨﺼﻪ را ذﻛﺮ ﻧﻜﻨﻴﺪ‪ ،‬وﻳـﮋوال‬ ‫ﺑﻴﺴﻴﻚ آن را در ﻧﻈﺮ ﺧﻮاﻫﺪ ﮔﺮﻓﺖ‪ .‬ﻣﺸﺨﺼﻪي ﭘﻴﺶﻓﺮض ﺑﺮﭼﺴﺐ‪ Caption ،‬ﻣﻲﺑﺎﺷﺪ‪ ،‬ﻳﻌﻨﻲ ﻋﺒـﺎرت‬ ‫زﻳﺮ ﺑﺎ ﻣﺜﺎﻟﻲ ﻛﻪ در ﭼﻨﺪﻳﻦ ﺧﻂ ﺑﺎﻻﺗﺮ زدﻳﻢ‪ ،‬ﺑﺮاﺑﺮ اﺳﺖ‪:‬‬ ‫"‪LblTitle = "Esteghlal Ghahreman‬‬ ‫ﺻﻔﺤﻪ‪٣٣ :‬‬

‫ﺑﺎ اﻳﻨﻜﻪ اﻳﻦ روش ﺳﺎدهﺗﺮ اﺳﺖ‪ ،‬وﻟﻲ از وﺿﻮح ﺑﺮﻧﺎﻣﻪ ﻣﻲﻛﺎﻫﺪ‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ ﺳﻌﻲ ﻛﻨﻴﺪ ﻧﺎم ﻣﺸﺨﺼﻪ را ذﻛـﺮ‬ ‫ﻛﻨﻴﺪ‪.‬‬

‫دﻳﺪ و ﻣﺪت ﻋﻤﺮ ﻣﺘﻐﻴﺮ‬ ‫ﻣﻘﺪار ﻫﺮ ﻣﺘﻐﻴﺮ در ﻳﻚ ﻣﺤﺪودهي ﺧﺎص از ﺑﺮﻧﺎﻣﻪ ﻗﺎﺑﻞ دﻳﺪن اﺳﺖ ﻛـﻪ ﺑـﻪ آن ﻣﺤـﺪوده‪ ،‬ﻣﺤـﺪودهي دﻳـﺪ‬ ‫ﻣﺘﻐﻴﺮ ﻣﻲﮔﻮﻳﻨﺪ‪ .‬ﺗﻌﻴﻴﻦ ﻣﺤﺪوده‪ ،‬ﺑﻴﺶ از ﻫﺮ ﭼﻴﺰ ﺑﻪ ﻣﺤﻞ ﺗﻌﺮﻳﻒ ﻣﺘﻐﻴﺮ ﺑـﺴﺘﮕﻲ دارد‪ .‬اﮔـﺮ ﺑﺨـﻮاﻫﻴﻢ از ﻳـﻚ‬ ‫ﻣﺘﻐﻴﺮ در ﻫﻤﻪ ﺟﺎي ﻓـﺮم اﺳـﺘﻔﺎده ﻛﻨـﻴﻢ‪ ،‬ﺑﺎﻳـﺪ آن را در ﻗـﺴﻤﺖ ‪ Declarations‬ﺗﻌﺮﻳـﻒ ﻛﻨـﻴﻢ؛ ﻳﻌﻨـﻲ‬ ‫ﻣﺤﻠــﻲ ﻛــﻪ ‪ Option Explicit‬وﺟــﻮد دارد‪ .‬دو ﻛﻠﻤــﻪي ﻛﻠﻴــﺪي ‪ Public‬و ‪ Private‬ﻧﻴــﺰ در ﺗﻌﻴــﻴﻦ‬ ‫ﻣﺤﺪودهي دﻳﺪ ﻣﻮﺛﺮﻧﺪ‪.‬‬ ‫وﻗﺘﻲ ﻣﺘﻐﻴﺮي را ﺑﺎ ﻛﻠﻤﻪي ﻛﻠﻴﺪي ‪ Public‬ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ‪ ،‬ﻣﻲﺗـﻮاﻧﻴﻢ از آن در ﺗﻤـﺎم ﺑﺮﻧﺎﻣـﻪ اﺳـﺘﻔﺎده‬ ‫ﻛﻨﻴﻢ‪ ،‬وﻟﻲ ﻣﺘﻐﻴﺮي ﻛﻪ ﺑﺎ ﻛﻠﻤﻪي ﻛﻠﻴﺪي ‪ Private‬ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ‪ ،‬ﻓﻘﻂ در ﻫﻤﺎن ﻓﺮم ﻳﺎ ﻣﺎژول‪ ،‬ﻗﺎﺑـﻞ‬ ‫اﺳﺘﻔﺎده ﻣﻲﺑﺎﺷﺪ‪.‬‬ ‫ﻣﺪت زﻣﺎﻧﻲ را ﻛﻪ ﻳﻚ ﻣﺘﻐﻴﺮ‪ ،‬ﻣﻘﺪار ﻓﻌﻠﻲ ﺧﻮد را ﺣﻔﻆ ﻣﻲﻛﻨﺪ‪ ،‬ﻣﺪت ﻋﻤﺮ ﻣﺘﻐﻴﺮ ﻣﻲﮔﻮﻳﻨﺪ‪ .‬ﻣﺘﻐﻴﺮﻫـﺎﻳﻲ ﻛـﻪ‬ ‫در ﺑﺨﺶ ‪ Declarations‬ﺗﻌﺮﻳﻒ ﻣﻲﻛﻨﻴﻢ ﻃﻮل ﻋﻤﺮي ﺑﺮاﺑﺮ ﺑﺎ ﻓﺮم دارﻧﺪ؛ ﻳﻌﻨﻲ ﺑﺎ اﻳﺠﺎد ﻓﺮم‪ ،‬اﻳﺠـﺎد و‬ ‫ﺑﺎ از ﺑﻴﻦ رﻓﺘﻦ ﻓﺮم‪ ،‬از ﺑﻴﻦ ﻣﻲروﻧﺪ )ﺣﺎﻓﻈﻪ را ﺑﻪ ﺳﻴﺴﺘﻢ ﺑﺮﻣﻲﮔﺮداﻧﻨﺪ(‪ .‬ﻣﺘﻐﻴﺮﻫﺎﻳﻲ ﻛﻪ داﺧﻞ ﻳـﻚ ﺗـﺎﺑﻊ‬ ‫ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮﻧﺪ‪ ،‬ﻃﻮل ﻋﻤﺮي ﺑﺮاﺑﺮ ﺑﺎ ﻃﻮل ﻋﻤﺮ ﺗﺎﺑﻊ دارﻧﺪ؛ ﻳﻌﻨﻲ ﺑﺎ از ﺑﻴﻦ رﻓﺘﻦ ﺗﺎﺑﻊ از ﺑﻴﻦ ﻣﻲروﻧﺪ‪.‬‬ ‫ﺑﻪ ﻣﺜﺎل زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪) :‬در اﻳﻦ ﻣﺮﺣﻠﻪ ﺑﺎﻳﺪ ﺑﺪاﻧﻴﺪ از ﭼﻪ ﻛﻨﺘﺮلﻫﺎﻳﻲ ﺑﺎﻳﺪ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪(.‬‬ ‫‪ ‬‬

‫)(‪Private Sub cmdRun_Click‬‬ ‫‪  Dim    X    As    Integer‬‬ ‫‪  X = X+1‬‬ ‫‪  Label1.Caption = X‬‬ ‫‪End Sub‬‬

‫ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﻛﻨﻴﺪ و ﻳﻚ ﺑﺎر روي ‪ cmdRun‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪.‬‬ ‫ﻣﺘﻐﻴﺮ ‪ X‬ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد و ﺑﻪ ﻃﻮر ﭘﻴﺶﻓﺮض ﺑﻪ آن ﻣﻘﺪار ﺻﻔﺮ داده ﻣﻲﺷﻮد‪ .‬ﺳﭙﺲ ﻣﻘﺪار آن ﺑﺮاﺑـﺮ ﺑـﺎ‬ ‫ﻳﻜﻲ ﺑﻴﺸﺘﺮ از ﻣﻘﺪار ﻗﺒﻠﻲ ﻣﻲﺷﻮد )‪ (X = X+1‬و در ﻟﻴﺒﻞ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪ .‬ﻧﺘﻴﺠﻪ ﻫﻤـﺎن اﺳـﺖ ﻛـﻪ‬ ‫ﻣﻲﺧﻮاﺳﺘﻴﻢ‪ .‬ﻋﺪد ‪ 1‬ﻧﺸﺎن داده ﻣﻲﺷﻮد‪ .‬اﻣـﺎ اﮔـﺮ ﻳـﻚ ﺑـﺎر دﻳﮕـﺮ ﻛﻠﻴـﻚ ﻛﻨـﻴﻢ ﻋـﺪد ﭼﻨـﺪ ﻣـﻲﺷـﻮد‪ .‬ﺗﻐﻴﻴـﺮي‬ ‫ﻧﻤﻲﻛﻨﺪ! ﭼﺮا؟ ﺑﻪ اﻳﻦ دﻟﻴﻞ ﻛﻪ‪ ،‬ﭘﺲ از رﺳﻴﺪن ﺑﻪ ﺧﻂ ‪ End  Sub‬ﻣﺘﻐﻴﺮ ‪ X‬ﺑﻪ ﭘﺎﻳﺎن ﻋﻤﺮ ﺧﻮد ﻣﻲرﺳـﺪ و‬ ‫ﺣﺎﻓﻈﻪاي ﻛﻪ در اﺧﺘﻴﺎر ﺧﻮد ﮔﺮﻓﺘﻪ ﺑﻮد ﺑﻪ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﺑﺎزﻣﻲﮔﺮداﻧﺪ‪.‬‬

‫ﺻﻔﺤﻪ‪٣٤ :‬‬

‫وﻗﺘﻲ دوﺑﺎره ﻛﻠﻴﻚ ﻣﻲﻛﻨﻴﻢ‪ ،‬ﻣﺘﻐﻴﺮ دوﺑﺎره ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد و ﻣﻘﺪار اوﻟﻴﻪ ﺻﻔﺮ ﻣﻲﮔﺮدد و ‪. ...‬‬ ‫ﺣﺎل از ﻛﻠﻤﻪي ﻛﻠﻴﺪي ‪ Static‬ﺑﻪ ﺟﺎي ‪ Dim‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ و ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﻛﻨﻴﺪ‪:‬‬ ‫)(‪Private Sub cmdRun_Click‬‬ ‫‪  Static    X    As    Integer‬‬ ‫‪  X = X+1‬‬ ‫‪  Label1.Caption = X‬‬ ‫‪End Sub‬‬

‫اﺣﺘﻤﺎﻻ ﺗﻌﺠﺐ ﺧﻮاﻫﻴﺪ ﻛﺮد‪ .‬ﻋﺪدي ﻛﻪ ﺗﻐﻴﻴﺮي ﻧﻤﻲﻛﺮد‪ ،‬ﺣﺎﻻ ﺑﺎ ﻫﺮ ﺑﺎر ﻛﻠﻴﻚ‪ ،‬ﻣﻘﺪارش ﻳﻚ واﺣﺪ ﺑﻴﺸﺘﺮ از‬ ‫ﻣﻘﺪار ﻗﺒﻠﻲ ﻣﻲﺷﻮد‪ .‬ﻧﺘﻴﺠﻪﮔﻴﺮي‪ :‬دﻳﺪ ﻣﺘﻐﻴﺮﻫﺎي ‪ Static‬ﻣﺎﻧﻨﺪ ‪ Dim‬و ﻃﻮل ﻋﻤﺮ آﻧﻬﺎ ﺑﺮاﺑﺮ ﻓﺮم اﺳﺖ‪.‬‬ ‫ﺑﺎ اﻳﻦ ﺗﺮﺗﻴﺐ ﺑﺎ ﺧﺮوج از ﺗﺎﺑﻊ‪ ،‬ﻣﺘﻐﻴﺮ از ﺑﻴﻦ ﻧﻤﻲرود و ﺑﺎ ﺑﺎزﮔﺸﺖ ﺑﻌﺪي ﺑﻪ ﺗﺎﺑﻊ‪ ،‬ﻣﻘﺪار ﻗﺒﻠﻲ ﺧﻮد را‬ ‫ﺣﻔﻆ و در ﻧﻈﺮ ﻣﻲﮔﻴﺮد‪.‬‬

‫‪--------------‬‬‫ﻧﻤﺎﻳﺶ ﻣﺘﻦ روي ﻓﺮم و ﻛﺎدر ﺗﺼﻮﻳﺮ‬ ‫ﺑﺮاي ﻧﻤﺎﻳﺶ ﻣﺘﻦ روي ﻳﻚ ﻓﺮم ﻳﺎ ﻛﺎدر ﺗﺼﻮﻳﺮ‪ ،‬از ﻣﺘﺪ ‪ Print‬ﻛﻪ ﺑﻌﺪ از ﻧﺎم ﻓﺮم ﻳﺎ ﻛـﺎدر ﺗـﺼﻮﻳﺮ ﻗـﺮار‬ ‫ﻣﻲﮔﻴﺮد‪ ،‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﺑﺮاي ارﺳﺎل ﺧﺮوﺟﻲ ﺑﻪ ﭼـﺎﭘﮕﺮ‪ ،‬از اﻳـﻦ ﻣﺘـﺪ روي ﺷـﻲء ‪ Printer‬اﺳـﺘﻔﺎده ﻛﻨﻴـﺪ‪.‬‬ ‫ﺷﻜﻞ ﻛﻠﻲ ﻣﺘﺪ ‪ Print‬ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬ ‫]}‪[Object.]      Print     [outputlist]     [{; | ,‬‬

‫آرﮔﻮﻣﺎن ‪ Object‬اﺧﺘﻴـﺎري اﺳـﺖ و در ﺻـﻮرﺗﻲ ﻛـﻪ ﻧﻮﺷـﺘﻪ ﻧـﺸﻮد‪ ،‬ﺧﺮوﺟـﻲ اﻳـﻦ ﻣﺘـﺪ روي ﻓـﺮم ﺟـﺎري‬ ‫ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪ .‬آرﮔﻮﻣﺎن ‪ outputlist‬ﻧﻴﺰ ﻣﺘﻨﻲ اﺳﺖ ﻛﻪ روي ﻓﺮم ﻳﺎ ﻛﺎدر ﺗﺼﻮﻳﺮ ﻇﺎﻫﺮ ﻣﻲﺷـﻮد‪.‬‬ ‫ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل‪ ،‬ﻋﺒﺎرتﻫﺎي زﻳﺮ ﭘﻴﺎﻣﻲ را ﭼﺎپ ﻣﻲﻛﻨﻨﺪ‪:‬‬ ‫• ﭼﺎپ روي ﻓﺮم‬ ‫"‪Form1.Print       "The Method is Print Not PrintForm ‬‬

‫• ﭼﺎپ درون ﻛﺎدر ﺗﺼﻮﻳﺮ‬ ‫"‪Picture1.Print    "Have a go‬‬

‫• ﭼﺎپ روي ﻓﺮم ‪ ‬‬ ‫"‪  Print  "Cool‬‬ ‫ﺻﻔﺤﻪ‪٣٥ :‬‬

‫• ﺷﻲء ‪  Printer‬‬ ‫"‪  Printer.Print    "Kakol Pesar‬‬

‫ﻧﻜﺘﻪي ﻳﻚ‪:‬‬ ‫اﮔﺮ ﭘﺲ از دﺳﺘﻮر ‪ ،Print‬ﻫﻴﭻ ﻋﺒﺎرﺗﻲ )ﻣﻘﺪار ﺛﺎﺑﺖ ﻳﺎ ﻣﺘﻐﻴﺮ( ﻧﻮﺷﺘﻪ ﻧﺸﻮد‪ ،‬ﺳﺒﺐ ﺧﻮاﻫـﺪ ﺷـﺪ ﻛـﻪ روي‬ ‫ﺷﻲء ﺟﺎري‪ ،‬ﻳﻚ ﺧﻂ ﺧﺎﻟﻲ ﻧﺸﺎن داده ﺷﻮد‪.‬‬ ‫ﻧﻜﺘﻪي دو‪:‬‬ ‫ﭘﺲ از ﻣﺘﺪ ‪ Print‬ﻣﻲﺗﻮان ﻳﻚ ﻳﺎ ﭼﻨﺪ ﻋﺒﺎرت ﻧﻮﺷﺖ‪ .‬ﺑﺮاي ﺟﺪا ﻛـﺮدن اﻳـﻦ ﻋﺒـﺎرتﻫـﺎ ﻣـﻲﺗـﻮان از‬ ‫ﻋﻼﻣﺖ ﻛﺎﻣﺎ )‪ (,‬ﻳﺎ ﺳﻤﻲﻛﻮﻟﻦ );( اﺳﺘﻔﺎده ﻛﺮد‪ .‬در ﺻﻮرﺗﻲ ﻛﻪ ﭼﻨﺪ ﻋﺒﺎرت را ﺑﺎ ﻛﺎﻣﺎ ﺟﺪا ﻛﻨﻴﺪ‪ ،‬ﺷﻲء ﺟﺎري‬ ‫ﺑﻪ ﻧﺎﺣﻴﻪﻫﺎي ‪ 14‬ﺗﺎﻳﻲ ﺗﻘﺴﻴﻢ ﻣﻲﺷﻮد و ﻫﺮ ﻋﺒﺎرت در ﻳﻚ ﻧﺎﺣﻴﻪ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷـﻮد‪ .‬اﮔـﺮ ﻋﺒـﺎرﺗﻲ‪ ،‬ﺑـﻪ‬ ‫ﺑﻴﺶ از ‪ 14‬ﻓﻀﺎ ﺑﺮاي ﻧﻤﺎﻳﺶ ﻧﻴﺎز داﺷﺘﻪ ﺑﺎﺷﺪ‪ ،‬ﻓﻀﺎي ﻣﻮرد ﻧﻴـﺎز را از ﻧﺎﺣﻴـﻪي ﺑﻌـﺪي در اﺧﺘﻴـﺎر ﺧﻮاﻫـﺪ‬ ‫ﮔﺮﻓﺖ‪.‬‬ ‫ﻧﻜﺘﻪي ﺳﻪ‪:‬‬ ‫ﻣﻌﻤﻮﻻ ﻫﺮ ﻣﺘﺪ ‪ ،Print‬ﺳﺒﺐ اﻧﺘﻘﺎل ﺧﻮدﻛﺎر ﻣﻜﺎنﻧﻤﺎ ﺑﻪ ﺳﻄﺮ ﺑﻌﺪي ﻣﻲﺷﻮد‪ ،‬وﻟﻲ اﮔﺮ در اﻧﺘﻬﺎي ﻳﻚ ﻣﺘﺪ‬ ‫‪ Print‬از ﻋﻼﻣﺖ ﺳﻤﻲﻛﻮﻟﻦ );( اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ ،‬ﺧﺮوﺟﻲ ﻣﺘﺪ ‪ Print‬ﺑﻌـﺪي در ﻫﻤـﺎن ﺳـﻄﺮ ﻇـﺎﻫﺮ ﺧﻮاﻫـﺪ‬ ‫ﺷﺪ‪.‬‬

‫ﺗﺎﺑﻊ ‪  TAB‬‬ ‫اﻳﻦ ﺗﺎﺑﻊ ﻧﻴﺰ در ﻣﺘﺪ ‪ ،Print‬ﺑﺮاي ﺗﻐﻴﻴﺮ ﻣﻮﻗﻌﻴﺖ ﻧﻤﺎﻳﺶ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮد و ﺑﻪ ﺻﻮرت ﻛﻠـﻲ‬ ‫)‪ TAB(n‬اﺳﺖ‪ .‬ﺑﻪ ﻋﺒﺎرت دﻳﮕﺮ‪ ،‬ﻣﻲﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ‪ TAB‬ﻣﺤﻞ ﺷﺮوع ﻧﻤـﺎﻳﺶ دادهاي را ﺑـﺮ‬ ‫روي ﺻﻔﺤﻪي ﻧﻤﺎﻳﺶ ﺗﻌﻴﻴﻦ ﻛﺮد‪ .‬ﻣﺜﺎل زﻳﺮ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪  :‬‬ ‫"‪  Print "One"; Tab(10); "Two"; Tab(5); "Three‬‬ ‫‪ ‬‬

‫ﺻﻔﺤﻪ‪٣٦ :‬‬

‫ﻧﻜﺘﻪي ﻳﻚ‪:‬‬ ‫اﮔﺮ ﻣﻘﺪار ‪ n‬ﻛﻮﭼﻜﺘﺮ از ﺷﻤﺎرهي ﺳﺘﻮن ﻣﺤﻞ ﺟﺎري ﻣﻜﺎنﻧﻤﺎ ﺑﺎﺷﺪ‪ ،‬دادهي ﻣﻮردﻧﻈﺮ از ﺳﺘﻮن ‪ n‬ﺑﻪ ﺑﻌﺪ‪ ،‬در‬ ‫ﺳﻄﺮ ﺑﻌﺪ ﻧﻤﺎﻳﺶ داده ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬ ‫ﻧﻜﺘﻪي دو‪:‬‬ ‫اﮔﺮ ﭘﺲ از ﺗﺎﺑﻊ )(‪ Tab‬ﻋﻼﻣـﺖ ﻛﺎﻣـﺎ ﻗـﺮار ﮔﻴـﺮد‪ ،‬ﺗـﺎﺑﻊ ‪ Tab‬ﻧﺎدﻳـﺪه ﮔﺮﻓﺘـﻪ ﺷـﺪه و داده در ﺳـﻄﺮ ﺑﻌـﺪ‬ ‫ﻧﻤﺎﻳﺶ داده ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬

‫ﺗﺒﺪﻳﻞ اﻧﻮاع دادهﻫﺎ‬ ‫اﺑﺘﺪا ﻣﺜﺎل زﻳﺮ را اﻣﺘﺤﺎن ﻛﻨﻴﺪ‪ :‬ﻧﺘﻴﺠﻪ ‪ 5‬ﻣﻲﺑﺎﺷﺪ‪.‬‬ ‫)(‪  Private Sub Command1_Click‬‬ ‫"‪Print  2 + "3‬‬ ‫‪  End Sub‬‬ ‫‪ ‬‬

‫ﺣﺎل اﻳﻦ ﻛﺪ را ﺗﺴﺖ ﻛﻨﻴﺪ‪ :‬ﻧﺘﻴﺠﻪ ‪ 23‬ﻣﻲﺷﻮد‪.‬‬ ‫)(‪  Private Sub Command1_Click‬‬ ‫"‪Print  "2" + "3‬‬ ‫‪  End Sub‬‬ ‫‪ ‬‬

‫در ﺣﺎﻟﺖ دوم وﻳﮋوال ﺑﻴﺴﻴﻚ ﺑﻪ ﺟﺎي ﺟﻤﻊ ﻛﺮدن دو ﻋـﺪد‪ ،‬آﻧﻬـﺎ را ﺑـﻪ ﻫـﻢ اﻟﺤـﺎق ﻛـﺮده اﺳـﺖ‪ .‬ﺑـﺮاي‬ ‫ﺗﺒﺪﻳﻞ اﻧﻮاع ﻣﺨﺘﻠﻒ دادهﻫﺎ ﺑﻪ ﻳﻜﺪﻳﮕﺮ‪ ،‬از ﺗﻮاﺑﻊ زﻳﺮ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪:‬‬ ‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ‪  Boolean‬‬

‫)‪CBool (Expression‬‬

‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ‪  Byte‬‬

‫)‪CByte (Expression‬‬

‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ‪  Date‬‬

‫)‪CDate (Expression‬‬

‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ‪  Double‬‬

‫)‪CDbl (Expression‬‬

‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ‪  Decimal‬‬

‫)‪CDec (Expression‬‬

‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ‪Integer‬‬

‫)‪CInt (Expression‬‬

‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ‪  Currency‬‬

‫)‪CCur (Expression‬‬

‫ﺻﻔﺤﻪ‪٣٧ :‬‬

‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ‪  Single‬‬

‫)‪  CSng (Expression‬‬

‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ‪  String‬‬

‫)‪CStr (Expression‬‬

‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ‪Variant‬‬

‫)‪CVar (Expression‬‬

‫ﺗﺒﺪﻳﻞ ﺑﻪ ﻧﻮع ‪  Long‬‬

‫)‪CLng (Expression‬‬

‫ﻣﺎﻧﻨﺪ‪:‬‬ ‫"‪  Print CInt("2") + "3‬‬

‫‪--------------‬‬‫ﺛﺎﺑﺖﻫﺎ )‪(Constants‬‬ ‫ﻣﺘﻐﻴﺮﻫﺎ ﺗﻨﻬﺎ روش ذﺧﻴﺮهي اﻃﻼﻋﺎت در ﺣﺎﻓﻈﻪ ﻧﻴﺴﺘﻨﺪ‪ .‬روش دﻳﮕـﺮ‪ ،‬اﺳـﺘﻔﺎده از ﺛﺎﺑـﺖﻫﺎﺳـﺖ‪ .‬ﺛﺎﺑـﺖ‬ ‫ﺧﺎﻧﻪاي از ﺣﺎﻓﻈﻪ ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﻣﻘﺪار آن در ﻃﻮل ﺑﺮﻧﺎﻣﻪ ﺛﺎﺑﺖ ﻣﻲ ﻣﺎﻧﺪ و ﻧﻤـﻲﺗـﻮان ﻣﻘـﺪار آن را ﺗﻐﻴﻴـﺮ‬ ‫داد‪ .‬ﺛﺎﺑﺖﻫﺎ اﻏﻠﺐ ﺑﺮاي ﺟﺎﻳﮕﺰﻳﻨﻲ ﻣﻘﺎدﻳﺮي ﻛﻪ ﺑﻪ ﺧﺎﻃﺮ ﺳﭙﺮدن آﻧﻬﺎ ﻣﺸﻜﻞ اﺳـﺖ ﻳـﺎ ﺑـﺮاي ﭘﺮﻫﻴـﺰ از‬ ‫ﻧﻮﺷﺘﻦ ﻣﻜﺮر رﺷﺘﻪﻫﺎي ﻃﻮﻻﻧﻲ اﺳﺘﻔﺎده ﻣﻲﺷﻮﻧﺪ‪ .‬ﺛﻮاﺑﺖ ﺑﺎ ﻛﻠﻤﻪي ﻛﻠﻴﺪي ‪ Const‬ﺗﻌﺮﻳﻒ ﻣﻲﺷـﻮﻧﺪ ﻛـﻪ‬ ‫ﺷﻜﻞ ﻛﻠﻲ آن ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ‪:‬‬ ‫‪[Private/Public] Const ConstantName [As ConstantType] = Value‬‬ ‫ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﻲداﻧﻴﺪ ﺑﺨﺶ اول ﺧﻂ ﺑﺎﻻ ﻳﻌﻨﻲ ‪ Private/Public‬ﻣﺮﺑﻮط ﺑﻪ ﻧﺤـﻮهي دﻳـﺪه ﺷـﺪن ﺛﺎﺑـﺖ‬ ‫ﺗﻌﺮﻳﻒ ﺷﺪه‪ ،‬ﺗﻮﺳﻂ دﻳﮕﺮ اﺟﺰاي ﭘﺮوژه ﻣﻲﺑﺎﺷـﺪ‪ ConstantName .‬ﻧـﺎم ﺛﺎﺑـﺖ‪ConstantType ،‬‬

‫ﻧﻮع دادهي ﺛﺎﺑﺖ و ‪ Value‬ﻣﻘﺪاري اﺳﺖ ﻛﻪ در ﺛﺎﺑﺖ ذﺧﻴﺮه ﻣﻲﺷﻮد‪ .‬ﻣﺎﻧﻨﺪ‪:‬‬ ‫‪Const   Pi   As   Single = 3.14159‬‬ ‫"‪Const   Name   As   String = "Meisam‬‬ ‫‪Const   BirthDate   As   Date = #05/15/1932#‬‬ ‫‐‐‐‐‐‐‐ ‪ ‬‬ ‫‪Option Explicit‬‬ ‫‪Const Pi As Single = 3.14159‬‬ ‫)(‪  Private Sub Command1_Click‬‬ ‫‪   Print Pi‬‬ ‫‪  End Sub‬‬

‫ﺻﻔﺤﻪ‪٣٨ :‬‬

‫ﻧﻜﺘﻪي ﻳﻚ‪:‬‬ ‫اﮔﺮ ﻗﺒﻞ از ﻛﻠﻤﻪي ﻛﻠﻴﺪي ‪ Const‬ﭼﻴﺰي ﻧﻮﺷﺘﻪ ﻧﺸﺪه ﺑﺎﺷﺪ‪ ،‬ﻣﻘﺪار ﭘﻴﺶﻓﺮض ‪ Private‬ﻣﻲﺑﺎﺷﺪ‪.‬‬ ‫ﻧﻜﺘﻪي دو‪:‬‬ ‫اﮔﺮ ‪ ConstantType‬ذﻛﺮ ﻧﺸﻮد ﻧﻮع ﺛﺎﺑﺖ ‪ Variant‬ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬ ‫ﻧﻜﺘﻪي ﺳﻪ‪:‬‬ ‫ﻳﻚ ﺛﺎﺑﺖ ﻋﻤﻮﻣﻲ )‪ (Public Const‬ﻓﻘﻂ ﻣﻲﺗﻮاﻧﺪ در ﻳﻚ ﻣﺎژول ﺗﻌﺮﻳﻒ ﺷﻮد‪.‬‬

‫‪--------------‬‬‫ﻣﺘﺪ ‪  cls‬‬ ‫ﺑﻪ ﻛﻤﻚ اﻳﻦ ﻣﺘﺪ ﻣﻲﺗﻮان ﻣﺘﻦ ﻳﺎ ﮔﺮاﻓﻴﻚ ﻣﻮﺟﻮد روي ﻓﺮم ﻳﺎ ﻛـﺎدر ﺗـﺼﻮﻳﺮ را در زﻣـﺎن اﺟـﺮا ﭘـﺎك ﻛـﺮد‪.‬‬ ‫اﻳﻦ ﻣﺘﺪ ﺗﺎﺛﻴﺮي روي ﻛﻨﺘﺮلﻫﺎ و ﺗﺼﺎوﻳﺮ ﻣﺮﺑﻮط ﺑﻪ ﻣﺸﺨﺼﻪي ‪ Picture‬ﻓﺮم ﻧﺨﻮاﻫﺪ داﺷﺖ‪ .‬ﺷﻜﻞ ﻛﻠﻲ‬ ‫اﻳﻦ ﻣﺘﺪ ﺑﻪ ﺻﻮرت زﻳﺮ اﺳﺖ‪:‬‬ ‫‪Object.cls‬‬ ‫)(‪  Private Sub cmdClear_Click‬‬ ‫‪   Picture1.Cls‬‬ ‫‪   Form1.Cls‬‬ ‫‪End Sub‬‬

‫ﻧﻜﺘﻪ‪:‬‬ ‫آرﮔﻮﻣﺎن ‪ Object‬اﺧﺘﻴﺎري ﺑﻮده و ﺷﺒﻴﻪ ﻣﺘﺪ ‪ Print‬ﻋﻤﻞ ﻣﻲﻛﻨﺪ‪ .‬اﻣﺘﺤﺎن ﻛﻨﻴﺪ!‬

‫‪--------------‬‬‫ﻋﻤﻠﮕﺮﻫﺎ‬ ‫ﻋﻤﻠﮕﺮﻫﺎ ﻛﺎراﻛﺘﺮﻫﺎ ﻳﺎ ﻧﻤﺎدﻫﺎي ﺧﺎﺻﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺑﺮاي اﻧﺠﺎم ﻋﻤﻠﻴﺎت ﺧﺎص روي ﻣﺘﻐﻴﺮﻫﺎ ﻣﻘﺎدﻳﺮ ﺛﺎﺑـﺖ‪،‬‬ ‫ﻋﺒﺎرات و ‪ ...‬ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮﻧﺪ‪ .‬ﻋﻤﻠﮕﺮﻫﺎ ﺑﻪ ﺳﻪ دﺳﺘﻪ ﺗﻘﺴﻴﻢ ﻣﻲﺷﻮﻧﺪ‪:‬‬ ‫‪ .1‬ﻣﺤﺎﺳﺒﺎﺗﻲ و رﺷﺘﻪاي‬ ‫‪ .2‬ﻣﻘﺎﻳﺴﻪاي ﻳﺎ راﺑﻄﻪاي‬ ‫‪ .3‬ﻣﻨﻄﻘﻲ‬ ‫ﺻﻔﺤﻪ‪٣٩ :‬‬

‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﻲ و رﺷﺘﻪاي‬ ‫ﻋﻤﻠﮕﺮ‬

‫ﻣﻔﻬﻮم‬

‫ﻣﺜﺎل‬

‫ﻧﺘﻴﺠﻪ‬

‫^‬

‫ﺗﻮان‬

‫‪  2^3‬‬

‫‪ 8‬‬

‫*‪ ‬‬

‫ﺿﺮب‬

‫‪  2*3‬‬

‫‪ 6‬‬

‫‪/‬‬

‫ﺗﻘﺴﻴﻢ‬

‫‪  6/2‬‬

‫‪ 3‬‬

‫‪ +‬‬

‫ﺟﻤﻊ‬

‫‪  2+3‬‬

‫‪ 5‬‬

‫‪ -‬‬

‫ﺗﻔﺮﻳﻖ‬

‫‪  6‐3‬‬

‫‪ 3‬‬

‫‪Mod‬‬

‫ﺑﺎﻗﻴﻤﺎﻧﺪه‬

‫‪  11 Mod 3‬‬

‫‪ 2‬‬

‫\‪ ‬‬

‫ﺗﻘﺴﻴﻢ ﺻﺤﻴﺢ‬

‫‪  11\3‬‬

‫‪ 3‬‬

‫& ﻳﺎ ‪+‬‬

‫اﻟﺤﺎق رﺷﺘﻪﻫﺎ‬

‫"‪"Moni" & "tor‬‬

‫‪  Monitor‬‬

‫ﻧﻜﺘﻪي ﻳﻚ‪:‬‬ ‫ﻋﻤﻠﮕﺮ ‪ Mod‬ﻓﻘﻂ ﺑﺮاي اﻋﺪاد ﺻﺤﻴﺢ اﺳﺖ و اﮔـﺮ از اﻋـﺪاد اﻋـﺸﺎري اﺳـﺘﻔﺎده ﻛﻨﻴـﺪ‪ ،‬وﻳـﮋوال ﺑﻴـﺴﻴﻚ‬ ‫اﺑﺘﺪا آﻧﻬﺎ را ﺑﻪ ﻋﺪد ﺻﺤﻴﺢ ﺗﺒﺪﻳﻞ ﻛﺮده و ﺳﭙﺲ ﺑﺎﻗﻴﻤﺎﻧﺪه را ﻣﺤﺎﺳﺒﻪ ﺧﻮاﻫﺪ ﻛﺮد‪.‬‬ ‫ﻧﻜﺘﻪي دو‪:‬‬ ‫ﻋﻤﻠﮕﺮ ﺗﻘﺴﻴﻢ ﺻﺤﻴﺢ‪ ،‬ﺧﺎرج ﻗﺴﻤﺖ ﺻﺤﻴﺢ ﺗﻘﺴﻴﻢ را ﺑﺮﻣـﻲ ﮔﺮداﻧـﺪ و از ﺑﺎﻗﻴﻤﺎﻧـﺪهي ﺗﻘـﺴﻴﻢ ﺻـﺮفﻧﻈـﺮ‬ ‫ﻣﻲﻛﻨﺪ‪.‬‬ ‫ﻧﻜﺘﻪي ﺳﻪ‪:‬‬ ‫ﻋﻤﻠﮕﺮ ‪ +‬دو ﻛﺎر ﻣﺘﻔﺎوت اﻧﺠﺎم ﻣﻲدﻫﺪ‪ :‬ﺟﻤﻊ ﻣﻌﻤﻮﻟﻲ و اﻟﺤﺎق )ﺗﺮﻛﻴﺐ( رﺷﺘﻪﻫﺎ‪ .‬اﻳﻦ ﻋﻤﻠﮕﺮ ﺑﺎ ﺗﻮﺟﻪ ﺑـﻪ‬ ‫ﻣﺤﻠﻲ ﻛﻪ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﮔﺮﻓﺘﻪ اﺳﺖ )ﺑﻴﻦ دو ﻋﺪد ﻳﺎ دو رﺷﺘﻪ( واﻛﻨﺶ ﻣﻨﺎﺳﺐ را ﻧﺸﺎن ﻣﻲدﻫﺪ‪.‬‬ ‫ﻧﻜﺘﻪي ﭼﻬﺎر‪:‬‬ ‫ﻫﻨﮕﺎم ﺗﺮﻛﻴﺐ رﺷﺘﻪﻫﺎ‪ ،‬وﻳﮋوال ﺑﻴﺴﻴﻚ ﻫﻴﭻﭼﻴﺰ ﺑﻪ آﻧﻬﺎ اﺿﺎﻓﻪ ﻧﺨﻮاﻫﺪ ﻛﺮد‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ اﮔﺮ ﻣـﻲﺧﻮاﻫﻴـﺪ ﺑـﻴﻦ‬ ‫دو رﺷﺘﻪ ﻳﻚ ﻓﺎﺻﻠﻪ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ﺑﺎﻳﺪ ﺧﻮدﺗﺎن آن را اﺿﺎﻓﻪ ﻛﻨﻴﺪ‪) .‬اﺳﺘﻔﺎده از ﻧﻘﻞ ﻗﻮل(‬

‫‪--------------‬‬‫ﺻﻔﺤﻪ‪٤٠ :‬‬

‫ﺗﻘﺪم ﻋﻤﻠﮕﺮﻫﺎ‬ ‫وﻳﮋوال ﺑﻴﺴﻴﻚ اﻋﻤﺎل رﻳﺎﺿﻲ را ﺑﻪ ﺗﺮﺗﻴﺐ زﻳﺮ اﻧﺠﺎم ﻣﻲدﻫﺪ‪:‬‬ ‫‪ .1‬ﭘﺮاﻧﺘﺰ‬ ‫‪ .2‬ﺗﻔﺮﻳﻖ ﻳﻜﺎﻧﻲ‬ ‫‪ .3‬ﺿﺮب و ﺗﻘﺴﻴﻢ اﻋﺸﺎري‬ ‫‪ .4‬ﺗﻘﺴﻴﻢ ﺻﺤﻴﺢ‬ ‫‪  Mod .5‬‬ ‫‪ .6‬ﺟﻤﻊ و ﺗﻔﺮﻳﻖ‬

‫اﮔﺮ از ﭘﺮاﻧﺘﺰﻫﺎ اﺳﺘﻔﺎده ﻧﻜﻨﻴﺪ‪ ،‬وﻳﮋوال ﺑﻴﺴﻴﻚ ﻫﻤﻴﺸﻪ اﺑﺘﺪا ﺗﻮان‪ ،‬ﺳﭙﺲ ﺿﺮب و ﺗﻘـﺴﻴﻢ و ﺑﻌـﺪ از آن‬ ‫ﺟﻤﻊ و ﺗﻔﺮﻳﻖ را اﻧﺠﺎم ﺧﻮاﻫﺪ داد‪ .‬ﻣﺎﻧﻨﺪ‪:‬‬ ‫‪20/2*3‬‬

‫در اﻳﻦ ﻋﺒﺎرت ﺑﻪ دﻟﻴـﻞ اﻳﻨﻜـﻪ ﺿـﺮب و ﺗﻘـﺴﻴﻢ داراي ﺗﻘـﺪم ﻳﻜـﺴﺎن ﻫـﺴﺘﻨﺪ‪ ،‬وﻳـﮋوال ﺑﻴـﺴﻴﻚ اﺑﺘـﺪا‬ ‫ﺗﻘﺴﻴﻢ را اﻧﺠﺎم داده و ﺳﭙﺲ ﺣﺎﺻﻞ ﺗﻘﺴﻴﻢ را در ‪ 3‬ﺿﺮب ﺧﻮاﻫﺪ ﻛﺮد‪.‬‬ ‫ﻧﻜﺘﻪي ﻳﻚ‪:‬‬ ‫اﮔﺮ ﻣﻲﺧﻮاﻫﻴﺪ ﺗﺮﺗﻴـﺐ اﻧﺠـﺎم ﻣﺤﺎﺳـﺒﺎت را ﺗﻐﻴﻴـﺮ دﻫﻴـﺪ ﺑﺎﻳـﺪ از ﭘﺮاﻧﺘﺰﻫـﺎ اﺳـﺘﻔﺎده ﻛﻨﻴـﺪ‪ .‬در ﭘﺮاﻧﺘﺰﻫـﺎي‬ ‫ﺗﻮدرﺗﻮ‪ ،‬وﻳﮋوال ﺑﻴﺴﻴﻚ از داﺧﻠﻲﺗﺮﻳﻦ زوج ﭘﺮاﻧﺘﺰ ﺷﺮوع ﻛﺮده و رو ﺑﻪ ﺑﻴﺮون ﺣﺮﻛـﺖ ﻣـﻲﻛﻨـﺪ‪ .‬وﻳـﮋوال‬ ‫ﺑﻴﺴﻴﻚ ﻗﺒﻞ از ﻫﺮ ﻛﺎري )‪ (8‐3‬را ﻣﺤﺎﺳﺒﻪ ﺧﻮاﻫﺪ ﻛﺮد‪ .‬ﻣﺎﻧﻨﺪ‪:‬‬ ‫‪  (10 + 2 – (8 ‐ 3)) + 1‬‬

‫‪--------------‬‬‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﻘﺎﻳﺴﻪاي ﻳﺎ راﺑﻄﻪاي‬ ‫در ﺟﺪول زﻳﺮ ﻋﻤﻠﮕﺮﻫﺎي راﺑﻄﻪاي وﻳﮋوال ﺑﻴﺴﻴﻚ را ﻣﺸﺎﻫﺪه ﻣﻲﻛﻨﻴﺪ‪ .‬اﻳﻦ ﻋﻤﻠﮕﺮﻫﺎ ﻫﻴﭽﮕﻮﻧﻪ ﻋﻤﻠﻴﺎت‬ ‫رﻳﺎﺿﻲ اﻧﺠﺎم ﻧﻤﻲدﻫﻨﺪ‪ ،‬ﺑﻠﻜﻪ دادهﻫﺎ را ﻣﻘﺎﻳﺴﻪ ﻣﻲﻛﻨﻨﺪ‪ .‬ﺑﺎ اﻳﻦ ﻋﻤﻠﮕﺮﻫﺎ ﺑﺮﻧﺎﻣﻪ ﻫﻮﺷﻤﻨﺪﺗﺮ ﺧﻮاﻫﺪ ﺷﺪ و‬ ‫ﺧﻮاﻫﺪ ﺗﻮاﻧﺴﺖ دادهﻫﺎ را ﻣﻘﺎﻳﺴﻪ ﻛﺮده و ﺑﺮ اﺳﺎس ﻧﺘﺎﻳﺞ آن‪ ،‬ﻋﻤﻠﻜﺮد ﻣﻨﺎﺳﺐ را در ﭘﻴﺶ ﮔﻴﺮد‪.‬‬ ‫ﻋﻤﻠﮕﺮﻫﺎي راﺑﻄﻪاي روي ﻋﺒﺎرتﻫﺎ‪ ،‬ﻣﺘﻐﻴﺮﻫﺎ‪ ،‬ﻣﺸﺨﺼﻪﻫﺎ‪ ،‬ﻛﻨﺘﺮلﻫﺎ ﻳﺎ ﺗﺮﻛﻴﺒﻲ از آﻧﻬﺎ ﻋﻤﻞ ﻣﻲﻛﻨﻨﺪ‪ .‬ﺑﺎ‬ ‫ﺗﻮﺟﻪ ﺑﻪ ﺗﻨﻮع دادهﻫﺎ در وﻳﮋوال ﺑﻴﺴﻴﻚ‪ ،‬اﻳﻦ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ اﺳﺖ ﻛﻪ ﺑﺎﻳﺪ ﺗﺼﻤﻴﻢ ﺑﮕﻴﺮد دادهﻫﺎ را ﭼﮕﻮﻧﻪ‬

‫ﺻﻔﺤﻪ‪٤١ :‬‬

‫ﻣﻘﺎﻳﺴﻪ ﻛﺮده و ﭼﮕﻮﻧﻪ ﻧﺘﻴﺠﻪﮔﻴﺮي ﻛﻨﺪ‪ .‬ﻫﻨﮕﺎم اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮﻫﺎي راﺑﻄﻪاي‪ ،‬ﻣﻤﻜﻦ اﺳﺖ ﺣﺎﻟﺖ ﺧﺎﺻﻲ‬ ‫ﭘﻴﺶ آﻳﺪ و آن ‪ Null‬ﺑﻮدن ﻳﻜﻲ از اﺟﺰاي ﻣﻘﺎﻳﺴﻪ اﺳﺖ‪ .‬در اﻳﻦ ﺣﺎﻟﺖ‪ ،‬وﻳﮋوال ﺑﻴﺴﻴﻚ ﻣﻘﺪار ‪Null‬‬ ‫ﺑﺮﻣﻲﮔﺮداﻧﺪ ﻧﻪ ‪ True‬ﻳﺎ ‪.False‬‬ ‫ﻋﻤﻠﮕﺮ‬

‫ﺗﻮﺿﻴﺢ‬

‫ﻣﺜﺎل‬

‫ﻧﺘﻴﺠﻪ‬

‫>‪ ‬‬

‫ﺑﺰرگﺗﺮ از‬

‫‪  6 > 3‬‬

‫درﺳﺖ‬

‫<‬

‫ﻛﻮﭼﻚﺗﺮ از‬

‫‪5 < 11‬‬

‫درﺳﺖ‬

‫=>‬

‫ﺑﺰرگﺗﺮ ﻳﺎ ﻣﺴﺎوي‬

‫‪23 >= 23‬‬

‫درﺳﺖ‬

‫=<‬

‫ﻛﻮﭼﻚﺗﺮ ﻳﺎ ﻣﺴﺎوي‬

‫‪4 <= 21‬‬

‫درﺳﺖ‬

‫=‬

‫ﺗﺴﺎوي‬

‫‪  7 = 2‬‬

‫ﻧﺎدرﺳﺖ‬

‫><‬

‫ﻧﺎﻣﺴﺎوي‬

‫‪3 <> 3‬‬

‫ﻧﺎدرﺳﺖ‬

‫ﻋﻤﻠﮕﺮﻫﺎي راﺑﻄﻪاي‪ ،‬ﻋﻼوه ﺑﺮ ﻣﻘﺎدﻳﺮ ﻋﺪدي‪ ،‬ﻣﻲﺗﻮاﻧﻨﺪ رﺷﺘﻪﻫﺎ را ﻫﻢ ﻣﻘﺎﻳﺴﻪ ﻛﻨﻨﺪ‪ .‬در ﻫﻨﮕﺎم ﻣﻘﺎﻳﺴﻪي‬ ‫رﺷﺘﻪﻫﺎ ﺑﻪ ﻧﻜﺎت زﻳﺮ ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﺪ‪:‬‬ ‫• ﺣﺮوف ﺑﺰرگ‪ ،‬ﻛﻮﭼﻜﺘﺮ از ﺣﺮوف ﻛﻮﭼﻚ ﻫﺴﺘﻨﺪ‪ ،‬ﻳﻌﻨﻲ ”‪ “IRAN‬ﻗﺒﻞ از ”‪ “iran‬ﻗﺮار ﺧﻮاﻫﺪ‬ ‫ﮔﺮﻓﺖ‪  .‬‬ ‫• ﺣﺮوف اﻟﻔﺒﺎ ﺑﻪ ﻫﻤﺎن ﺗﺮﺗﻴﺒﻲ ﻛﻪ ﻫﺴﺘﻨﺪ ﻣﻘﺎﻳﺴﻪ ﻣﻲﺷﻮﻧﺪ‪ ،‬ﻳﻌﻨﻲ ”‪ “A‬ﻛﻮﭼﻚﺗﺮ از ”‪ “B‬اﺳﺖ و‬ ‫ﻧﺎم ”‪ “Ahmad‬ﻗﺒﻞ از ”‪ “Ali‬ﻗﺮار ﺧﻮاﻫﺪ ﮔﺮﻓﺖ‪  .‬‬ ‫‪ ‬‬

‫• رﻗﻢﻫﺎ ﻛﻮﭼﻜﺘﺮ از ﺣﺮوف ﻫﺴﺘﻨﺪ‪ ،‬ﻳﻌﻨﻲ ”‪ “3‬از ”‪ “Three‬ﻛﻮﭼﻜﺘﺮ ﺧﻮاﻫﺪ ﺑﻮد‪  .‬‬ ‫‪ ‬‬

‫وﻳﮋوال ﺑﻴﺴﻴﻚ ﻫﻨﮕﺎم ﻣﻘﺎﻳﺴﻪي رﺷﺘﻪﻫﺎ ﺑﻪ ﺑﺰرگ ﻳﺎ ﻛﻮﭼﻚ ﺑﻮدن ﺣﺮوف ﺗﻮﺟﻪ دارد ﻳﻌﻨﻲ ﺑﻴﻦ آﻧﻬﺎ‬ ‫ﺗﻔﺎوت ﻗﺎﻳﻞ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﺑﺮاي درك ﺑﻬﺘﺮ اﻳﻦ ﻧﻜﺎت‪ ،‬ﻓﻘﻂ ﻛﺎﻓﻲ اﺳﺖ ﺑﺪاﻧﻴﺪ ﻛﻪ وﻳﮋوال ﺑﻴﺴﻴﻚ‬ ‫رﺷﺘﻪﻫﺎ را ﻣﺎﻧﻨﺪ ﻳﻚ ﻟﻐﺖﻧﺎﻣﻪ ﻣﺮﺗﺐ ﺧﻮاﻫﺪ ﻛﺮد‪ .‬ﺑﻪ دﺳﺘﻮرﻫﺎي ﻣﻘﺎﻳﺴﻪاي زﻳﺮ ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪:‬‬ ‫”‪  “abcdef”  >      “ABCDEF‬‬ ‫”?‪  “Yes!”      <       “Yes‬‬ ‫”‪  “PC”        <>      “pc‬‬

‫ﺻﻔﺤﻪ‪٤٢ :‬‬

‫”!‪  “Computers are fun!”     =    “Computers are fun‬‬ ‫”‪  “Books, Books, Books”  >=   “Books, Books‬‬ ‫‪ ‬‬

‫ﻧﻜﺘﻪ‪:‬‬ ‫ﻫﻨﮕﺎم ﻣﻘﺎﻳﺴﻪي دو ﻣﻘﺪار‪ ،‬ﺑﺎﻳﺪ ﻧﻮع دادهﻫﺎي ﺷﻤﺎ ﺑﺎ ﻫﻢ ﺳﺎزﮔﺎر ﺑﺎﺷﻨﺪ‪ .‬ﻣﺜﻼ ﻧﻤﻲﺗﻮان ﻳﻚ ﻋﺪد را ﺑﺎ‬ ‫رﺷﺘﻪ ﻣﻘﺎﻳﺴﻪ ﻛﺮد‪.‬‬

‫‪--------------‬‬‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﻲ‬ ‫ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﻲ ﻳﺎ ‪ Logical Operators‬ﻋﺒﺎرتﻫﺎي ﻣﻮردﻧﻈﺮ را ﺑﻴﺖ ﺑﻪ ﺑﻴﺖ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﻣﻘﺎﻳﺴﻪ‬ ‫ﻛﺮده و دو ارزش ﻣﻨﻄﻘﻲ ‪ T‬ﻳﺎ ‪) F‬درﺳﺖ ﻳﺎ ﻧﺎدرﺳﺖ( را ﺑﺮاي آﻧﻬﺎ ﻣﺸﺨﺺ ﻣﻲﻛﻨﻨﺪ‪.‬‬ ‫‪ ‬‬

‫‪ ‬‬ ‫‪ Q  P‬‬ ‫‪ T  T‬‬ ‫‪ F  T‬‬ ‫‪ T  F‬‬ ‫‪F‬‬ ‫‪F‬‬

‫‪ P‬‬ ‫‪ P‬‬ ‫‪ P‬‬ ‫‪ P‬‬ ‫‪ P‬‬ ‫‪ ‬‬ ‫‪  Imp   Eqv   Xor   Or   And   Not‬‬ ‫‪Q‬‬ ‫‪Q‬‬ ‫‪Q‬‬ ‫‪Q‬‬ ‫‪Q‬‬ ‫‪P‬‬ ‫‪ T‬‬ ‫‪ F‬‬ ‫‪ T‬‬ ‫‪ T‬‬ ‫‪ F‬‬ ‫‪ T‬‬ ‫‪ F‬‬ ‫‪ F‬‬ ‫‪ F‬‬ ‫‪ F‬‬ ‫‪ T‬‬ ‫‪ T‬‬ ‫‪ T‬‬ ‫‪ F‬‬ ‫‪ T‬‬ ‫‪ T‬‬ ‫‪ F‬‬ ‫‪ T‬‬ ‫‪F‬‬ ‫‪T‬‬ ‫‪F‬‬ ‫‪F‬‬ ‫‪F‬‬ ‫‪T‬‬ ‫‪ ‬‬

‫ﻣﺜﺎل‪:‬‬ ‫‪ ‬‬ ‫‪ ‬‬ ‫‪ ‬‬ ‫‪ ‬‬ ‫‪ ‬‬ ‫‪ ‬‬ ‫‪ ‬‬

‫‪Dim    a, b, c    As   Boolean‬‬ ‫‪a   =   Not   b                      a   =    True‬‬ ‫‪a   =   b   And   c                a   =     False‬‬ ‫‪a   =   b   Or      c                a   =    True‬‬ ‫‪a   =   b   Xor    c                a   =    True‬‬ ‫‪a   =   b   Imp   c                a   =    True‬‬ ‫‪a   =   b   Eqv   c                 a   =    False‬‬ ‫‪ ‬‬

‫ﻋﻤﻠﮕﺮ ‪ ،Not‬روي ﻳﻚ ﻋﺒﺎرت ﻋﻤﻞ ﻣﻲﻛﻨﺪ و آن را ﻧﻘﻴﺾ ﻣﻲﻛﻨﺪ‪ .‬اﮔﺮ ﻋﺒﺎرت داراي ارزش ‪ T‬ﺑﺎﺷﺪ‪،‬‬ ‫ﻧﻘﻴﺾ آن داراي ارزش ‪ F‬اﺳﺖ و ﺑﺮﻋﻜﺲ‪.‬‬

‫ﺻﻔﺤﻪ‪٤٣ :‬‬

‫ﻋﻤﻠﮕﺮ ‪ ،And‬ﺑﺮ روي دو ﻋﺒﺎرت ﻋﻤﻞ ﻣﻲﻛﻨﺪ‪ .‬ارزش ﻧﺘﻴﺠﻪ وﻗﺘﻲ ‪ T‬اﺳﺖ ﻛﻪ ارزش دو ﻋﺒﺎرت ‪T‬‬

‫ﺑﺎﺷﺪ و در ﻏﻴﺮ اﻳﻦ ﺻﻮرت‪ F ،‬اﺳﺖ‪.‬‬ ‫‪ ‬‬

‫ﻋﻤﻠﮕﺮ ‪ Or‬روي دو ﻋﺒﺎرت ﻋﻤﻞ ﻣﻲﻛﻨﺪ و ارزش ﻧﺘﻴﺠﻪ وﻗﺘﻲ ‪ F‬اﺳﺖ ﻛﻪ ارزش ﻫﺮ دو ﻋﺒﺎرت ‪F‬‬

‫ﺑﺎﺷﺪ و در ﻏﻴﺮ اﻳﻦ ﺻﻮرت‪ ،‬ارزش آن ‪ T‬اﺳﺖ‪.‬‬ ‫ﻋﻤﻠﮕﺮ ‪ Xor‬روي دو ﻋﺒﺎرت ﻋﻤﻞ ﻣﻲﻛﻨﺪ و ارزش ﻧﺘﻴﺠﻪ وﻗﺘﻲ ‪ T‬اﺳﺖ ﻛﻪ ارزش ﻳﻜﻲ از دو ﻋﺒﺎرت‪،‬‬ ‫‪ T‬و ارزش دﻳﮕﺮي ‪ F‬ﺑﺎﺷﺪ‪.‬‬ ‫ﻋﻤﻠﮕﺮ ‪ Eqv‬روي دو ﻋﺒﺎرت ﻋﻤﻞ ﻣﻲﻛﻨﺪ و ارزش ﻧﺘﻴﺠﻪ وﻗﺘﻲ ‪ T‬اﺳﺖ ﻛﻪ ﻫﺮ دو ﻋﺒﺎرت داراي‬ ‫ارزش ﻳﻜﺴﺎن ﺑﺎﺷﻨﺪ ﻳﻌﻨﻲ ﻫﺮ دو داراي ارزش ‪ T‬ﻳﺎ ‪ F‬ﺑﺎﺷﻨﺪ‪.‬‬ ‫ﻋﻤﻠﮕﺮ ‪ Imp‬ﻧﻴﺰ روي دو ﻋﺒﺎرت ﻋﻤﻞ ﻣﻲﻛﻨﺪ و ارزش ﻧﺘﻴﺠﻪ در ﺻﻮرﺗﻲ ‪ F‬اﺳﺖ ﻛﻪ ارزش ﻋﺒﺎرت‬ ‫دوم ‪ F‬ﺑﺎﺷﺪ و در ﻏﻴﺮ اﻳﻦ ﺻﻮرت‪ T ،‬اﺳﺖ‪  .‬‬ ‫‪ ‬‬

‫ﺗﺮﻛﻴﺐ ﻋﻤﻠﮕﺮﻫﺎي راﺑﻄﻪاي و ﻣﻨﻄﻘﻲ‬ ‫از ﻟﺤﺎظ ﺗﺌﻮري‪ ،‬ﺷﺶ ﻋﻤﻠﮕﺮ راﺑﻄﻪاي وﻳﮋوال ﺑﻴﺴﻴﻚ ﻗﺪرت ﻛﺎﻓﻲ ﺑﺮاي ﻫﺮ ﻧﻮع ﻣﻘﺎﻳﺴﻪاي را دارﻧﺪ‪،‬‬ ‫وﻟﻲ ﻣﻲﺗﻮان ﻗﺪرت آﻧﻬﺎ را ﺑﺎ اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮﻫﺎي ﻣﻨﻄﻘﻲ اﻓﺰاﻳﺶ داد‪ .‬ﺑﺮاي ﻣﺜﺎل ﺑﻪ ﺟﺪول زﻳﺮ‬ ‫ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪.‬‬ ‫ﻋﻤﻠﮕﺮ‬

‫ﻧﺘﻴﺠﻪ‬

‫ﻣﺜﺎل‬

‫‪True‬‬ ‫‪True‬‬ ‫‪False‬‬ ‫‪False‬‬

‫‪(2<3)   And   (4<5)   And‬‬ ‫)‪(2<3)   Or     (6<7‬‬ ‫‪Or‬‬ ‫)‪(2>3)   Xor   (7>4‬‬ ‫‪Xor‬‬ ‫)‪            Not   (3=3‬‬ ‫‪Not‬‬ ‫‪ ‬‬

‫ﻛﺎرﺑﺮد ‪ And‬و ‪ Or‬ﺑﻴﺸﺘﺮ از ﺳﺎﻳﺮ ﻋﻤﻠﮕﺮﻫﺎﺳﺖ‪ .‬ﺑﺎ ‪ Xor‬ﻣﻲﺗﻮان دو ﮔﺰﻳﻨﻪي اﻧﺤﺼﺎري را ﻣﻘﺎﻳﺴﻪ ﻛﺮد‪.‬‬ ‫اﮔﺮ ﻫﺮ دو ﮔﺰﻳﻨﻪ ‪ Xor‬درﺳﺖ ﺑﺎﺷﺪ‪ ،‬ﻛﻞ ﻋﺒﺎرت ﻧﺎدرﺳﺖ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﻋﻤﻠﮕﺮ ‪ Not‬ﻫﻢ ﺑﺮاي ﻧﻘﻴﺾ‬ ‫ﻳﻚ ﻋﺒﺎرت اﺳﺖ‪  .‬ﻋﺒﺎرت زﻳﺮ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪  :‬‬ ‫‪  curSales * sngCommission > curHighSales / 10‬‬

‫ﺻﻔﺤﻪ‪٤٤ :‬‬

‫وﻳﮋوال ﺑﻴﺴﻴﻚ ﻛﺪام ﻋﻤﻞ را زودﺗﺮ اﻧﺠﺎم ﺧﻮاﻫﺪ داد؟ آﻳﺎ اﺑﺘﺪا ‪ sngCommission‬را ﺑﺎ‬ ‫‪ curHighSales‬ﻣﻘﺎﻳﺴﻪ ﻛﺮده و ﺣﺎﺻﻞ آن را در ‪ curSales‬ﺿﺮب و ﺳﭙﺲ ﺑﺮ ‪ 10‬ﺗﻘﺴﻴﻢ ﺧﻮاﻫﺪ ﻛﺮد؟‬ ‫اﻟﺒﺘﻪ اﻳﻦ ﻛﺎر ﺑﻲﻣﻌﻨﻲ اﺳﺖ‪ ،‬ﭼﻮن ﺣﺎﺻﻞ ﻣﻘﺎﻳﺴﻪ ‪ True‬ﻳﺎ ‪ False‬اﺳﺖ و ﻧﻤﻲﺗﻮان روي آن اﻋﻤﺎل‬ ‫رﻳﺎﺿﻲ اﻧﺠﺎم داد‪ .‬در ﺟﺪول زﻳﺮ ﺗﻘﺪم ﻋﻤﻠﮕﺮﻫﺎ را ﻣﺸﺎﻫﺪه ﻣﻲﻛﻨﻴﺪ‪ .‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﻳﻦ ﺟﺪول ﺣﺪس ﻧﺘﻴﺠﻪي‬ ‫ﻋﺒﺎرت ﻓﻮق ﺳﺎده ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬ ‫ﺗﺮﺗﻴﺐ‬

‫ﻋﻤﻠﮕﺮ‬

‫‪1‬‬

‫^‬

‫‪2‬‬

‫‐ )ﺗﻔﺮﻳﻖ ﻳﻜﺎﻧﻲ(‬

‫‪3‬‬

‫*‪ /،‬‬

‫‪4‬‬

‫\‬

‫‪5‬‬

‫‪Mod‬‬

‫‪6‬‬

‫‪ ‐،+‬‬

‫‪7‬‬

‫=>‪=, <>, <, >, <=, ‬‬

‫‪8‬‬

‫‪Not, And, Or, Xor, Eqv, Imp‬‬

‫‪--------------‬‬‫ﻛﻨﺘﺮل ‪) Text Box‬ﺟﻌﺒﻪﻣﺘﻦ(‬ ‫از اﻳﻦ ﻛﻨﺘﺮل ﺑﺮاي وارد ﻛﺮدن ﻳﻚ ﻣﻘﺪار ﺧﺎص ﺑﻪ وﺳﻴﻠﻪي ﻛﺎرﺑﺮ اﺳﺘﻔﺎده ﻣﻲﺷﻮد و ﻣﻬﻢﺗﺮﻳﻦ‬ ‫ﺧﺎﺻﻴﺖﻫﺎي آن ﺑﻪ ﺷﺮح زﻳﺮ ﻣﻲﺑﺎﺷﻨﺪ‪:‬‬

‫ﺧﺎﺻﻴﺖ ‪ :Locked‬ﻏﻴﺮ ﻗﺎﺑﻞ وﻳﺮاﻳﺶ ﺑﻮدن‬ ‫اﮔﺮ ﺑﺮاﺑﺮ ‪ True‬ﺑﺎﺷﺪ‪ ،‬ﻛﺎرﺑﺮ ﻣﺠﺎز ﺑﻪ ﺗﻐﻴﻴﺮ ﻣﺘﻦ داﺧﻞ ﺟﻌﺒﻪ در زﻣﺎن اﺟﺮا ﻧﻤﻲﺑﺎﺷﺪ‪ .‬در اﻳﻦ ﺣﺎﻟﺖ ﺷﻤﺎ‬ ‫ﻓﻘﻂ ﻣﻲﺗﻮاﻧﻴﺪ از ﻣﺤﺘﻮﻳﺎت ﺟﻌﺒﻪ ﻛﭙﻲ ﺑﮕﻴﺮﻳﺪ‪.‬‬ ‫ﺧﺎﺻﻴﺖ ‪ :MaxLength‬اﻳﺠﺎد ﻣﺤﺪودﻳﺖ‬

‫ﺻﻔﺤﻪ‪٤٥ :‬‬

‫اﮔﺮ ﻣﻘﺪار آن ﺻﻔﺮ ﺑﺎﺷﺪ ﻫﻴﭻ ﻣﺤﺪودﻳﺘﻲ در ﻃﻮل ﻣﺘﻦ وﺟﻮد ﻧﺪارد؛ وﻟﻲ اﮔﺮ ﻣﺜﻼ‪ ،‬ﻣﻘﺪار آن ‪ 5‬اﻧﺘﺨﺎب‬ ‫ﺷﺪه ﺑﺎﺷﺪ ﻛﺎرﺑﺮ ﻧﻤﻲﺗﻮاﻧﺪ ﺑﻴﺶ از ‪ 5‬ﻛﺎراﻛﺘﺮ را وارد ﻛﻨﺪ‪.‬‬ ‫ﺧﺎﺻﻴﺖ ‪ :MultiLine‬ﺣﺎﻟﺖ ﭼﻨﺪﺧﻄﻲ‬ ‫اﮔﺮ ﺑﺮاﺑﺮ ‪ True‬ﺑﺎﺷﺪ‪ ،‬در زﻣﺎن اﺟﺮا ﺑﺎ زدن ﻛﻠﻴﺪ ‪ Enter‬در ﺟﻌﺒﻪﻣﺘﻦ‪ ،‬ﻣﻜﺎن ﻧﻤﺎ ﺑﻪ ﺧﻂ ﺑﻌﺪ ﻣﻨﺘﻘﻞ‬ ‫ﻣﻲﺷﻮد‪ .‬ﺑﻪ ﻋﺒﺎرت دﻳﮕﺮ‪ ،‬ﺑﻪ ﻣﺤﺾ رﺳﻴﺪن ﻣﺘﻦ ﺑﻪ ﺣﺎﺷﻴﻪي ‪ ،TextBox‬ﻣﺘﻦ ﺑﻪ ﺧﻂ ﺑﻌﺪي ﺷﻜﺴﺘﻪ‬ ‫ﻣﻲﺷﻮد‪ .‬وﻟﻲ اﮔﺮ ‪ False‬ﺑﺎﺷﺪ ﺗﻤﺎم ﻣﺘﻦ در ﻳﻚ ﺧﻂ ﻧﻮﺷﺘﻪ ﻣﻲﺷﻮد‪.‬‬ ‫ﺧﺎﺻﻴﺖ ‪ :PasswordChar‬ﺑﻪ رﻣﺰ درآوردن ﻣﺤﺘﻮﻳﺎت ﺟﻌﺒﻪﻣﺘﻦ‬ ‫اﻳﻦ ﻣﺸﺨﺼﻪ‪ ،‬ﻧﻮﻳﺴﻪاي ﻛﻪ در ﺟﻌﺒﻪﻣﺘﻦ ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد را ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ‪ .‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل‪ ،‬اﮔﺮ‬ ‫ﺑﺨﻮاﻫﻴﺪ در ﻛﺎدر ﮔﺬرواژه‪ ،‬ﺳﺘﺎره ﻧﻤﺎﻳﺶ داده ﺷﻮد‪ ،‬در ﭘﻨﺠﺮهي ﻣﺸﺨﺼﻪﻫﺎ‪ ،‬ﺧﺎﺻﻴﺖ ‪PasswordChar‬‬ ‫را ﺑﺎ * ﻣﻘﺪاردﻫﻲ ﻛﻨﻴﺪ‪ .‬ﺑﺪﻳﻦ ﺗﺮﺗﻴﺐ‪ ،‬ﺑﻪازاي ﺗﺎﻳﭗ ﻫﺮ ﻧﻮﻳﺴﻪاي در ﺟﻌﺒﻪﻣﺘﻦ‪ ،‬ﻳﻚ ﺳﺘﺎره ﻧﻤﺎﻳﺶ‬ ‫داده ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬ ‫ﻧﻜﺘﻪ‪:‬‬ ‫اﮔﺮ ﺟﻌﺒﻪﻣﺘﻦ در ﺣﺎﻟﺖ ﭼﻨﺪﺧﻄﻲ ﻳﺎ ‪ MultiLine‬ﻗﺮار ﮔﻴﺮد‪ ،‬اﻳﻦ ﺧﺎﺻﻴﺖ ﻋﻤﻞ ﻧﺨﻮاﻫﺪ ﻛﺮد‪.‬‬ ‫ﺧﺎﺻﻴﺖ ‪ :ScrollBars‬اﻳﺠﺎد ﭘﻴﻤﺎﻳﺶﮔﺮ‬ ‫اﮔﺮ ﻣﺘﻦ ورودي ﺑﻴﺸﺘﺮ از ﻃﻮل ﻳﺎ ﻋﺮض ﺟﻌﺒﻪﻣﺘﻦ ﺑﺎﺷﺪ‪ ،‬ﺑﻪ ‪ ScrollBar‬ﻧﻴﺎز ﺧﻮاﻫﻴﻢ داﺷﺖ‪ .‬اﮔﺮ ﻣﻘﺪار‬ ‫آن ‪ 0 ‐ None‬ﺑﺎﺷﺪ‪ ،‬ﭘﻴﻤﺎﻳﺶﮔﺮي ﻧﺨﻮاﻫﻴﻢ داﺷﺖ‪ ،‬اﮔﺮ ﺑﺮاﺑﺮ ‪ 1 ‐ Horizontal‬ﺑﺎﺷﺪ‪ ،‬ﭘﻴﻤﺎﻳﺶﮔﺮي‬ ‫اﻓﻘﻲ و اﮔﺮ ﺑﺮاﺑﺮ ‪ 2 ‐ Vertical‬ﺑﺎﺷﺪ‪ ،‬ﭘﻴﻤﺎﻳﺶﮔﺮي ﻋﻤﻮدي ﺧﻮاﻫﻴﻢ داﺷﺖ‪ .‬ﺣﺎﻟﺖ ‪ 3 ‐ Both‬ﻫﻢ‬ ‫ﺗﺮﻛﻴﺐ ﺣﺎﻟﺖ اول و دوم ﻣﻲﺑﺎﺷﺪ‪.‬‬ ‫ﻧﻜﺘﻪ‪:‬‬ ‫اﻳﻦ ﺧﺎﺻﻴﺖ ﻓﻘﻂ ﺑﺎ ‪ True‬ﺑﻮدن ‪ MultiLine‬ﻋﻤﻞ ﺧﻮاﻫﺪ ﻛﺮد‪.‬‬ ‫ﺧﺎﺻﻴﺖ ‪ :Text‬ﻣﺘﻦ ﺟﻌﺒﻪﻣﺘﻦ‬ ‫ﻣﺘﻦ وارد ﺷﺪه در ﻛﻨﺘﺮل ﺟﻌﺒﻪﻣﺘﻦ‪ ،‬در ﻣﺸﺨﺼﻪي ‪ Text‬ﻗﺮار دارد‪ .‬ﺑﻪ ﻃﻮر ﭘﻴﺶﻓﺮض‪ ،‬ﻣﻲﺗﻮان در ﻳﻚ‬ ‫ﺟﻌﺒﻪﻣﺘﻦ ﺗﺎ ‪ 2048‬ﻧﻮﻳﺴﻪ را وارد ﻛﺮد‪ .‬در ﺻﻮرﺗﻲ ﻛﻪ ﻣﺸﺨﺼﻪي ‪ MultiLine‬ﺑﺎ ‪ True‬ﻣﻘﺪاردﻫﻲ ﻛﻨﻴﺪ‪،‬‬ ‫ﻣﻲﺗﻮاﻧﻴﺪ ﻣﺘﻦ وارد ﺷﺪه را در ﭼﻨﺪ ﺳﻄﺮ ﻧﻤﺎﻳﺶ داده و ﺣﺪاﻛﺜﺮ ﺗﺎ ‪ 32k‬ﻧﻮﻳﺴﻪ وارد ﻛﻨﻴﺪ‪.‬‬

‫‪  --------------‬‬‫ﺻﻔﺤﻪ‪٤٦ :‬‬

:‫ﻣﺜﺎلﻫﺎ‬ ‫ ﺑﺮاي اﻳﻦ ﻛﺎر‬.‫ ﻣﺸﺨﺺ ﻣﻲﺷﻮد‬،‫ ارﺗﻔﺎع و ﭘﻬﻨﺎيِ ﻓﺮم ﺑﺎ اﻋﺪادي ﻛﻪ ﻣﺎ ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﻴﻢ‬،‫ در ﺑﺮﻧﺎﻣﻪي زﻳﺮ‬.1   .‫ دو ﺟﻌﺒﻪﻣﺘﻦ و ﻳﻚ دﻛﻤﻪ ﻣﺎﻧﻨﺪ ﺷﻜﻞ زﻳﺮ ﺑﺮ روي ﻓﺮم ﻗﺮار دﻫﻴﺪ‬،‫دو ﻟﻴﺒﻞ‬

Private Sub Command1_Click()      Form1.Height = Text1.Text      Form1.Width = Text2.Text   End Sub Or Private Sub Command1_Click()    Dim txtHeight, txtWidth As Integer    txtHeight = Text1.Text    txtWidth = Text2.Text    Form1.Height = txtHeight    Form1.Width = txtWidth   End Sub  

‫ ﺑﺮرﺳﻲ ﻛﻨﻴﺪ ﻛﻪ ﺗﻔﺎوت ﺑﻴﻦ دو ﻛﺪ زﻳﺮ ﭼﻪ ﻣﻲﺑﺎﺷﺪ )در ﺗﻜﻪ‬.‫ﺣﺎل ﻣﻲﺧﻮاﻫﻴﻢ ﻛﻤﻲ ﺑﺮﻧﺎﻣﻪ را ﺗﻐﻴﻴﺮ دﻫﻴﻢ‬ .(‫ﻛﺪ دوم ﭼﻴﺰي در ﺟﻌﺒﻪﻣﺘﻦ ﻧﻨﻮﻳﺴﻴﺪ‬ Private Sub Command1_Click()      Form1.Height = Text1.Text      Form1.Width = Text2.Text   End Sub   With Private Sub Command1_Click()      Text1.Text = Form1.Heigh      Text1.Text = Form1.Width   End Sub  

٤٧ :‫ﺻﻔﺤﻪ‬

‫‪ .2‬ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ ﺗﺎﻳﭗ ﻣﺘﻦ در ‪ ،TextBox‬ﻫﻤﺰﻣﺎن ﻋﻨﻮان ﻳﺎ ﻣﺘﻦ ﻣﻮﺟﻮد در ﻛﻨﺘﺮل ‪Label‬‬

‫را ﻧﻴﺰ ﺗﻐﻴﻴﺮ دﻫﺪ‪.‬‬ ‫)(‪Private Sub Text1_Change‬‬ ‫‪   Label1.Caption = Text1.Text‬‬ ‫‪  End Sub‬‬ ‫‪ ‬‬

‫‪ Change‬روﻳﺪادي اﺳﺖ ﻛﻪ ﻫﻨﮕﺎم ﺗﻐﻴﻴﺮ دادن ﻳﻚ ﺷﻲء اﺟﺮا ﻣﻲ ﺷﻮد‪ .‬ﺑﻨﺎﺑﺮاﻳﻦ ‪ Caption‬ﻟﻴﺒﻞ ﻣﺎ‬ ‫ﺑﺎ ‪ Text‬ﻣﻮﺟﻮد در ‪ Text1‬ﻣﻘﺪاردﻫﻲ ﻣﻲﺷﻮد‪.‬‬ ‫‪ .3‬ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ اﺟﺮاي آن ﺳﺎل ﺗﻮﻟﺪ ﻛﺎرﺑﺮ را ﺑﻪ ﺻﻮرت ﺷﻤﺴﻲ در ورودي درﻳﺎﻓﺖ ﻛﻨﺪ‪،‬‬ ‫ﺳﭙﺲ ﺳﺎل ﺗﻮﻟﺪ او را ﺑﻪ ﺳﺎل ﻣﻴﻼدي ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﺪ و ﭘﺲ از ﻣﺤﺎﺳﺒﻪ ﺳﻦ او را ﺑﺮ ﺣﺴﺐ ﺳﺎل در‬ ‫ﺳﺎل ‪ ،1385‬ﺳﺎل ﻣﻴﻼدي را ﻫﻤﺮاه ﺑﺎ ﺳﻦ او ﭼﺎپ ﻧﻤﺎﻳﺪ )ﻳﻚ دﻛﻤﻪ و ﺟﻌﺒﻪﻣﺘﻦ ﺑﺮ روي ﻓﺮم ﻗﺮار‬ ‫دﻫﻴﺪ(‪.‬‬ ‫)(‪Private Sub Command1_Click‬‬ ‫‪Dim SY, ADY, AGE As Integer‬‬ ‫‪SY = Text1.Text‬‬ ‫‪ADY = SY + 621‬‬ ‫‪AGE = 1385 ‐ SY‬‬ ‫‪Print ADY, AGE‬‬ ‫‪  End Sub‬‬ ‫‪ ‬‬

‫ﺑﺮاي ﺗﺒﺪﻳﻞ ﺳﺎل ﺷﻤﺴﻲ ﺑﻪ ﺳﺎل ﻣﻴﻼدي‪ ،‬ﺳﺎل ﺷﻤﺴﻲ را ﺑﺎ ‪ 621‬ﺟﻤﻊ ﻣﻲﻛﻨﻴﻢ‪ .‬در ﻣﺜﺎل ﺑﺎﻻ ‪ SY‬ﻣﺤﻞ‬ ‫ﻧﮕﻬﺪاري ﺳﺎل ﺗﻮﻟﺪ ﺷﻤﺴﻲ و ‪ ADY‬ﻣﺤﻞ ﻧﮕﻬﺪاري ﺳﺎل ﺗﻮﻟﺪ ﻣﻴﻼدي در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ‪.‬‬ ‫‪ .4‬ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ اﺟﺮاي آن ﺗﻌﺪاد روزﻫﺎي ﻣﺎه از ورودي درﻳﺎﻓﺖ ﮔﺮدد‪ ،‬ﺳﭙﺲ ﻣﻘﺪار آن ﺑﺮ‬ ‫ﺣﺴﺐ ﺳﺎﻋﺖ‪ ،‬دﻗﻴﻘﻪ و ﺛﺎﻧﻴﻪ ﻣﺤﺎﺳﺒﻪ و ﭼﺎپ ﺷﻮد )از ﺷﻤﺎ اﻧﺘﻈﺎر دارم ﺑﺎ ﻧﮕﺎه ﻛﺮدن ﺑﻪ ﻛﺪ ﻣﺘﻮﺟﻪ ﺑﺸﻮﻳﺪ‬ ‫ﺑﻪ ﭼﻪ ﻛﻨﺘﺮﻟﻬﺎﻳﻲ ﻧﻴﺎز دارﻳﻢ(‪.‬‬ ‫)(‪Private Sub Command1_Click‬‬ ‫‪   Dim Day, Hours, Minute, Second As Single‬‬ ‫)‪   Day = Val(Text1.Text‬‬ ‫‪   Hours = Day * 24‬‬ ‫‪   Minute = Hours * 60‬‬

‫ﺻﻔﺤﻪ‪٤٨ :‬‬

‫‪   Second = Minute * 60‬‬ ‫‪   Print Hours, Minute, Second‬‬ ‫‪  End Sub‬‬ ‫‪ ‬‬

‫ﻧﻜﺘﻪ‪:‬‬ ‫در ﺣﺎﻟﺖ ﻋﺎدي ﺟﻌﺒﻪﻣﺘﻦ ﺑﺎ ﻧﻮع دادهي ‪ Variant‬ﻛﺎر ﻣﻲﻛﻨﺪ‪ ،‬ﻳﻌﻨﻲ ﻫﻢ ﺑﺎ اﻋﺪاد و ﻫﻢ ﺑﺎ رﺷﺘﻪﻫﺎ ﻛﺎر‬ ‫ﻣﻲﻛﻨﺪ‪ ،‬اﻣﺎ اﮔﺮ ﺑﺎ دادهﻫﺎي ﻋﺪدي ﺳﺮوﻛﺎر دارﻳﺪ ﺑﻬﺘﺮ اﺳﺖ‪ ،‬ﺑﺮاي ﺑﺎﻻ ﺑﺮدن دﻗﺖ ﺑﺮﻧﺎﻣﻪ‪ ،‬ﻗﺒﻞ از ﻣﺤﻞ‬ ‫ورودي ﺑﺮﻧﺎﻣﻪ‪ ،‬از ﻛﻠﻤﻪي ﻛﻠﻴﺪي ‪ Val‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ Val .‬ﺗﺎﺑﻌﻲ اﺳﺖ ﻛﻪ ﻳﻚ رﺷﺘﻪي ﻋﺪدي را ﺑﻪ ﻋﺪد‬ ‫ﻣﻌﺎدل آن ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ‪.‬‬

‫‪  ---------------‬‬

‫ﺻﻔﺤﻪ‪٤٩ :‬‬

‫ﻓﺼﻞ ﺳﻮم‬ ‫ﻛﻨﺘﺮل ﺑﺮﻧﺎﻣﻪ‬

‫ﺻﻔﺤﻪ‪٥٠ :‬‬

‫در اﻳﻦ ﻓﺼﻞ ﺑﺎ ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ‪ ،‬ﺗﺎﺑﻊ ‪ MsgBox‬و ‪ InputBox‬و ﻫﻤﭽﻨﻴﻦ ﻛﻨﺘﺮلﻫﺎي ‪Check ‬‬

‫‪ Option Button ،Box‬و ‪ Frame‬و ‪ ...‬آﺷﻨﺎ ﺧﻮاﻫﻴﺪ ﺷﺪ‪  .‬‬

‫ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ‬ ‫ﻳﻜﻲ از ﻣﻬﻢﺗﺮﻳﻦ ﺳﺎﺧﺘﺎرﻫﺎﻳﻲ ﻛﻪ در ﻫﻤﻪي زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮد‪،‬‬ ‫ﺳﺎﺧﺘﺎرﻫﺎي ﺷﺮﻃﻲ ﻳﺎ ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢﮔﻴﺮي ﻣﻲﺑﺎﺷﺪ‪ .‬ﺑﺮاي ﻣﺜﺎل در ﻳﻚ ﺑﺮﻧﺎﻣﻪي ﻛﻮﭼﻚ‪ ،‬وﻗﺘﻲ ﺑﺨﻮاﻫﻨﺪ‬ ‫دو ﻋﺪد را ﻣﻘﺎﻳﺴﻪ ﻛﻨﻨﺪ و ﺑﺰرﮔﺘﺮﻳﻦ را ﺑﺪﺳﺖ ﺑﻴﺎورﻧﺪ‪ ،‬از ﻫﻤﻴﻦ ﺳﺎﺧﺘﺎرﻫﺎ اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ‪ .‬ﺑﻪ ﻃﻮر ﻛﻠﻲ‪،‬‬ ‫ﺑﻪ ﻣﺠﻤﻮﻋﻪاي از دﺳﺘﻮراﻟﻌﻤﻞﻫﺎ ﻛﻪ اﻣﻜﺎن اﻧﺘﺨﺎب و ﺗﺼﻤﻴﻢﮔﻴﺮي از ﺑﻴﻦ ﻳﻚ ﻳﺎ ﭼﻨﺪ ﻣﻮﺿﻮع را ﺑﻪ ﻣﺎ‬ ‫ﻣﻲدﻫﻨﺪ “ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ” ﮔﻔﺘﻪ ﻣﻲﺷﻮﻧﺪ‪.‬‬

‫دﺳﺘﻮر ‪  If‬‬ ‫ﻳﻜﻲ از ﻣﻬﻢﺗﺮﻳﻦ دﺳﺘﻮرﻫﺎي زﺑﺎن ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ وﻳﮋوال ﺑﻴﺴﻴﻚ‪ ،‬دﺳﺘﻮر ‪ If‬اﺳﺖ‪ ،‬ﻛﻪ ﺑﻪ ﭼﻨﺪ روش‬ ‫ﻣﺨﺘﻠﻒ ﻣﻲﺗﻮاﻧﻴﻢ از آن اﺳﺘﻔﺎده ﻛﻨﻴﻢ‪ .‬ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮر ‪ If‬ﭼﻨﻴﻦ اﺳﺖ‪:‬‬ ‫‪) Then‬ﺷﺮط( ‪If‬‬ ‫ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮرات وﻳﮋوال ﺑﻴﺴﻴﻚ‬ ‫‪  End   If‬‬ ‫‪ ‬‬

‫در اﻳﻦ ﻧﻮع اﮔﺮ ﺷﺮط درﺳﺖ ﺑﺎﺷﺪ‪ ،‬آﻧﮕﺎه ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮراﺗﻲ ﻛﻪ در آن ﺑﻼك ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ‪ ،‬اﺟﺮا‬ ‫ﻣﻲﺷﻮﻧﺪ‪ ،‬و ﮔﺮﻧﻪ ﻫﻴﭻ اﺗﻔﺎﻗﻲ ﻧﻤﻲاﻓﺘﺪ‪  .‬‬ ‫ﻧﻜﺘﻪي ﻳﻚ‪:‬‬ ‫ﺑﺮاي وﺿﻮح ﺑﺮﻧﺎﻣﻪ ﺑﻬﺘﺮ اﺳﺖ ﻛﻪ ﺑﺪﻧﻪي ‪ If‬را ﺟﻠﻮﺗﺮ از ‪ If  ……  End  If‬ﺑﻨﻮﻳﺴﻴﺪ ﺗﺎ ﺗﺸﺨﻴﺺ‬ ‫دﺳﺘﻮرﻫﺎي درون ‪ If‬از دﺳﺘﻮرﻫﺎي ﺑﻴﺮون آن ﺳﺎدهﺗﺮ ﺑﺎﺷﺪ‪.‬‬ ‫ﻧﻜﺘﻪي دو‪:‬‬ ‫ﭘﺮاﻧﺘﺰﻫﺎي اﻃﺮاف ﺷﺮط ‪ If‬اﻟﺰاﻣﻲ ﻧﻴﺴﺘﻨﺪ وﻟﻲ ﺑﻪ ﺧﻮاﻧﺎﻳﻲ اﻳﻦ دﺳﺘﻮر ﻛﻤﻚ ﻣﻲﻛﻨﻨﺪ‪.‬‬

‫ﺷﻜﻞ دوم‬ ‫ﺷﻜﻞ دوم از ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ‪ ،‬ﻧﻴﺎزي ﺑﻪ ‪ End If‬ﻧﺪارد و اﮔﺮ ﺷﺮط درﺳﺖ ﺑﺎﺷﺪ‪ ،‬ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮرات‬ ‫ﺑﻌﺪ از ‪ Then‬اﺟﺮا ﻣﻲﺷﻮﻧﺪ و ﮔﺮﻧﻪ ﻫﻴﭻ اﺗﻔﺎﻗﻲ ﻧﻤﻲاﻓﺘﺪ‪:‬‬ ‫ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮرات وﻳﮋوال ﺑﻴﺴﻴﻚ ‪)    Then‬ﺷﺮط( ‪IF‬‬ ‫ﺻﻔﺤﻪ‪٥١ :‬‬

‫ﻣﺮدم در زﻧﺪﮔﻲ روزﻣﺮهي ﺧﻮد ﺑﻪدﻓﻌﺎت از ‪ If‬اﺳﺘﻔﺎده ﻣﻲﻛﻨﻨﺪ‪:‬‬ ‫)ﻛﺎرم زودﺗﺮ ﺗﻤﺎم ﺧﻮاﻫﺪ ﺷﺪ( ‪) Then‬زودﺗﺮ ﺳﺮ ﻛﺎر ﺑﺮوم(‬ ‫)ﻧﻤﺮهي ﻗﺒﻮﻟﻲ ﺧﻮاﻫﻢ ﮔﺮﻓﺖ( ‪) Then‬درﺳﻢ را ﺧﻮب ﺑﺨﻮاﻧﻢ(‬

‫‪If‬‬ ‫‪If‬‬

‫ﺷﻜﻞ ﺳﻮم‬ ‫در ﺷﻜﻞ ﺳﻮم‪ ،‬اﮔﺮ ﺷﺮط درﺳﺖ ﺑﺎﺷﺪ آﻧﮕﺎه ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮرات ‪ 1‬اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪ ،‬در ﻏﻴﺮ اﻳﻦ ﺻﻮرت‬ ‫ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮرات ‪ 2‬اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪:‬‬ ‫‪If‬‬

‫‪) Then‬ﺷﺮط(‬ ‫ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮرات وﻳﮋوال ﺑﻴﺴﻴﻚ‪1‬‬

‫‪  Else‬‬

‫ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮرات وﻳﮋوال ﺑﻴﺴﻴﻚ‪2‬‬ ‫‪  End   If‬‬

‫ﺷﻜﻞ ﭼﻬﺎرم‬ ‫ﻧﻮع ﭼﻬﺎرم از ﺳﺎﺧﺘﺎرﻫﺎي ﺗﺼﻤﻴﻢ ﻫﻢ ﻧﻴﺎزي ﺑﻪ ‪ End  If‬ﻧﺪارد و اﮔﺮ ﺷﺮط درﺳﺖ ﺑﺎﺷﺪ ﻣﺠﻤﻮﻋﻪ‬ ‫دﺳﺘﻮرات ‪ 1‬اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪ ،‬در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮرات ‪ 2‬اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪.‬‬ ‫دﺳﺘﻮر‪ Else 2‬دﺳﺘﻮر‪1‬‬

‫‪Then‬‬

‫ﺷﺮط‬

‫‪  If‬‬

‫ﺳﺎﺧﺘﺎر ‪  ElseIf‬‬ ‫اﮔﺮ ﺑﺨﻮاﻫﻴﻢ ﺑﺎ اﺳﺘﻔﺎده از ‪ If‬ﺷﺮطﻫﺎي ﮔﻮﻧﺎﮔﻮﻧﻲ را ﭼﻚ ﻛﻨﻴﻢ‪ ،‬ﻣﻲﺗﻮاﻧﻴﻢ از ‪ ElseIf‬اﺳﺘﻔﺎده ﻛﻨﻴﻢ‪.‬‬ ‫دﺳﺘﻮرﻫﺎي ‪) If … ElseIf … End If‬ﺣﺘﻲ در ﺳﺎدهﺗﺮﻳﻦ ﺷﻜﻞ( ﭘﻴﭽﻴﺪهاﻧﺪ و اﻣﻜﺎن ﺑﺮوز ﺧﻄﺎ در آﻧﻬﺎ‬ ‫ﺑﺴﻴﺎر زﻳﺎد اﺳﺖ‪ .‬ﻫﻤﭽﻨﻴﻦ اﻳﻦ ﺳﺎﺧﺘﺎر‪ ،‬ﺑﺎﻋﺚ ﻛﻢ ﺷﺪن ﺧﻮاﻧﺎﻳﻲ ﺑﺮﻧﺎﻣﻪ‪ ،‬ﺳﺮدرﮔﻤﻲ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ و‬ ‫ﻃﻮﻻﻧﻲ ﺷﺪن ﺑﺮﻧﺎﻣﻪ ﻣﻲﮔﺮدد‪ .‬ﺑﻪ ﻫﻤﻴﻦ ﻣﻨﻈﻮر ﭘﻴﺸﻨﻬﺎد ﻣﻲﺷﻮد ﻛﻪ از دﺳﺘﻮر ‪ Select Case‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‬ ‫ﻛﻪ در آﻳﻨﺪه ﺑﺎ آن آﺷﻨﺎ ﺧﻮاﻫﻴﺪ ﺷﺪ‪.‬‬ ‫‪ ‬‬

‫ﻣﺜﺎلﻫﺎ‪:‬‬ ‫ﺗﻌﻴﻴﻦ ﺑﺰرگﺗﺮﻳﻦ ﻋﺪد‬

‫ﺻﻔﺤﻪ‪٥٢ :‬‬

‫)(‪Private Sub Command1_Click‬‬ ‫‪Dim A, B As Integer‬‬ ‫)‪A = Val(Text1.Text‬‬ ‫)‪B = Val(Text2.Text‬‬ ‫‪If (A > B) Then‬‬ ‫‪     Print A‬‬ ‫‪Else‬‬ ‫‪     Print B‬‬ ‫‪End If‬‬ ‫‪End Sub‬‬

‫اﮔﺮ اﻣﺘﺤﺎن ﻛﺮده ﺑﺎﺷﻴﺪ وﻗﺘﻲ دو ﻋﺪد ﻣﺴﺎوي ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻣﻲدﻫﻴﺪ‪ ،‬ﺑﺮﻧﺎﻣﻪ ﻧﺘﻴﺠﻪي درﺳﺘﻲ ﺑﻪ ﺷﻤﺎ اراﺋﻪ‬ ‫ﻧﻤﻲدﻫﺪ‪ .‬ﺑﺮاي رﻓﻊ اﻳﻦ ﻣﺸﻜﻞ ﻛﺎﻓﻴﺴﺖ ﺑﺮﻧﺎﻣﻪﺗﺎن را ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻐﻴﻴﺮ دﻫﻴﺪ‪:‬‬ ‫)(‪1.     Private Sub Command1_Click‬‬ ‫‪2.     Dim A, B As Integer‬‬ ‫)‪3.     A = Val(Text1.Text‬‬ ‫)‪4.     B = Val(Text2.Text‬‬ ‫‪5.     If (A = B) Then‬‬ ‫”‪6.          Print “Same Numbers‬‬ ‫‪7.          Exit Sub‬‬ ‫‪8.     End If‬‬ ‫‪9.           If (A > B) Then‬‬ ‫‪10.               Print A‬‬ ‫‪11.         Else‬‬ ‫‪12.               Print B‬‬ ‫‪13.         End If‬‬ ‫‪  14.     End Sub‬‬ ‫‪ ‬‬

‫ﺧﺮوج زودرس‬ ‫ﺷﺎﻳﺪ اﻳﻦ ﺳﻮال ﺑﺮاي ﺷﻤﺎ ﭘﻴﺶ آﻣﺪه ﺑﺎﺷﺪ ﻛﻪ ﻣﻨﻈﻮر از ‪ Exit Sub‬در ﺧﻂ ﻫﻔﺘﻢ ﭼﻴﺴﺖ؟‬ ‫ﺑﺴﺘﻪ ﺑﻪ ﺷﺮاﻳﻂ ﻳﻚ روال‪ ،‬ﻣﻤﻜﻦ اﺳﺖ ﺑﺨﻮاﻫﻴﺪ روال را از ﺣﺎﻟﺖ ﻣﻌﻤﻮل‪ ،‬زودﺗﺮ ﭘﺎﻳﺎن ﻳﺎﺑﺪ‪ .‬ﺑﺮاي‬ ‫اﻳﻦ ﻣﻨﻈﻮر ﺑﺎﻳﺪ از دﺳﺘﻮر ‪ Exit‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮر ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ‪:‬‬ ‫‪Exit   Sub   |   Function |   Do   |   For‬‬ ‫ﺻﻔﺤﻪ‪٥٣ :‬‬

‫‪ ‬‬

‫ﺧﻄﻮط ﻋﻤﻮدي ﺑﻴﻦ ﻛﻠﻤﺎت‪ ،‬ﻧﺸﺎندﻫﻨﺪهي آن اﺳﺖ ﻛﻪ در ﻫﺮ دﺳﺘﻮر ‪ Exit‬ﻳﻜﻲ از اﻳﻦ ﻛﻠﻤﺎت را‬ ‫ﻣﻲﺗﻮان ﺑﻪﻛﺎر ﺑﺮد‪ .‬ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل‪ ،‬ﺑﺮاي ﺧﺮوج از ﻳﻚ ﺗﺎﺑﻊ ﺑﺎﻳﺪ از دﺳﺘﻮر ‪ Exit Function‬و ﺑﺮاي‬ ‫ﺧﺮوج از ﻳﻚ روال روﻳﺪاد ﺑﺎﻳﺪ از دﺳﺘﻮر ‪ Exit Sub‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬در ﻣﺜﺎل ﺑﺎﻻ‪ ،‬ﻣﺎ ﻫﻢ از اﻳﻦ دﺳﺘﻮر‬ ‫اﺳﺘﻔﺎده ﻛﺮدﻳﻢ؛ زﻳﺮا ﺑﻌﺪ از درﻳﺎﻓﺖ دو ﻋﺪد ﻣﺴﺎوي‪ ،‬دﻳﮕﺮ ﻧﻴﺎزي ﺑﻪ ﭼﻚ ﻛﺮدن ﺧﻂﻫﺎي ﺑﻌﺪي ﺑﺮﻧﺎﻣﻪ‬ ‫)ﺧﻂﻫﺎي ‪ 9‬ﺗﺎ ‪ (13‬ﻧﺪارﻳﻢ‪.‬‬

‫ﺗﻌﻴﻴﻦ روز ﺳﺎل‬ ‫ﻓﺮض ﻛﻨﻴﺪ در روز ‪D‬ام از ﻣﺎه ‪M‬ام ﻫﺴﺘﻴﻢ؛ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﺎ اﺟﺮاي آن ‪ M‬و ‪ D‬در ورودي‬ ‫درﻳﺎﻓﺖ ﮔﺮدﻧﺪ‪ ،‬ﺳﭙﺲ ﻣﺸﺨﺺ ﺷﻮد ﻛﻪ در روز ﭼﻨﺪم ﺳﺎل ﻫﺴﺘﻴﻢ‪ .‬ﻣﺜﻼ اﮔﺮ ‪ D = 28‬ﺑﺎﺷﺪ و ‪M = 10‬‬ ‫ﺑﺎﺷﺪ‪ ،‬آﻧﮕﺎه در روز ﺳﻴﺼﺪ و ﭼﻬﺎرم ﺳﺎل ﻫﺴﺘﻴﻢ‪.‬‬ ‫)(‪Private Sub Command1_Click‬‬ ‫‪Dim D, M, N As Integer‬‬ ‫)‪D = Val(Text1.Text‬‬ ‫)‪M = Val(Text2.Text‬‬ ‫‪If (M <= 6) Then‬‬ ‫‪     N = (M ‐ 1) * 31 + D‬‬ ‫‪Else‬‬ ‫‪     N = (M ‐ 1) * 30 + 6 + D‬‬ ‫‪End If‬‬ ‫‪Text3.Text = N‬‬ ‫‪  End Sub‬‬ ‫‪ ‬‬

‫ﭼﻮن ﺗﻌﺪاد روزﻫﺎي ﻫﺮ ﻳﻚ از ﻣﺎهﻫﺎي ‪ 6‬ﻣﺎه اول ﺳﺎل ‪ 31‬روز و ‪ 5‬ﻣﺎه ﺑﻌﺪ ‪ 30‬روز اﺳﺖ ﻟﺬا ‪ M‬ﺑﺎ ‪6‬‬ ‫ﻣﻘﺎﻳﺴﻪ ﮔﺮدﻳﺪه ﻛﻪ ﻣﺸﺨﺺ ﺷﻮد‪ ،‬آﻳﺎ در ﻧﻴﻤﻪي اول ﺳﺎل ﻫﺴﺘﻴﻢ ﻳﺎ در ﻧﻴﻤﻪي دوم ﺳﺎل؛ و ﭼﻮن ﺑﻪ ﺟﺰ‬ ‫ﻣﺎه ﺟﺎري ﺗﻌﺪاد روزﻫﺎي ﺑﻘﻴﻪي ﻣﺎهﻫﺎ ﻛﺎﻣﻞ اﺳﺖ‪ ،‬ﻟﺬا ﻳﻚ واﺣﺪ از ‪ M‬ﻛﺴﺮ ﮔﺮدﻳﺪه و ﺑﻪ ﺻﻮرت ‪M‐1‬‬ ‫ﻣﻨﻈﻮر ﮔﺮدﻳﺪه اﺳﺖ ﻛﻪ ﻧﺸﺎﻧﮕﺮ ﺗﻌﺪاد ﻣﺎهﻫﺎي ﻗﺒﻞ اﺳﺖ‪.‬‬ ‫ﺗﻤﺮﻳﻦ‪:‬‬ ‫ﺑﺮﻧﺎﻣﻪي ﺑﺎﻻ رو ﻃﻮري ﺗﻐﻴﻴﺮ دﻫﻴﺪ ﻛﻪ ﻫﺮ دو ﺟﻌﺒﻪﻣﺘﻦ )‪ (Text1 , Text2‬ﻓﻘﻂ ﻗﺎﺑﻠﻴﺖ درﻳﺎﻓﺖ دو‬ ‫ﻋﺪد را داﺷﺘﻪ ﺑﺎﺷﻨﺪ )اﺳﺘﻔﺎده از ﻳﻜﻲ از ﺧﺼﻮﺻﻴﺎت ﺟﻌﺒﻪﻣﺘﻦ(؛ ﻫﻤﭽﻨﻴﻦ اﮔﺮ ﻋﺪد ﻣﻮﺟﻮد در ﺟﻌﺒﻪﻣﺘﻦ اول‬

‫ﺻﻔﺤﻪ‪٥٤ :‬‬

‫ﺑﺎﻻﺗﺮ از ‪ 31‬و ﻋﺪد ﻣﻮﺟﻮد در ﺟﻌﺒﻪﻣﺘﻦ دوم ﺑﺎﻻﺗﺮ از ‪ 12‬ﺑﻮد‪ ،‬ﺑﺮﻧﺎﻣﻪ از روال ﺧﺎرج ﺷﻮد ﻳﺎ ﭘﻴﻐﺎﻣﻲ‬ ‫ﻣﻨﺎﺳﺐ ﻧﻤﺎﻳﺶ دﻫﺪ‪.‬‬

‫زوج ﻳﺎ ﻓﺮد ﺑﻮدن ﻋﺪد‬ ‫)(‪1.     Private Sub Command1_Click‬‬ ‫‪2.     Dim k As Integer‬‬ ‫)‪3.     k = Val(Text1.Text‬‬ ‫‪4.     If (k Mod 2 = 0) Then‬‬ ‫”‪5.          Label1.Caption = “The number is Even‬‬ ‫‪6.     Else‬‬ ‫”‪7.          Label1.Caption = “The number is Odd‬‬ ‫‪8.     End If‬‬ ‫”“‪9.     Text1.Text = ‬‬ ‫‪10.   Text1.SetFocus‬‬ ‫‪  11.   End Sub‬‬ ‫‪ ‬‬

‫در ﺧﻂ ﻧﻬﻢ ﺑﺮﻧﺎﻣﻪ اﻋﻼم ﻛﺮدﻳﻢ ﻛﻪ ﺑﻌﺪ از ﭘﺎﻳﺎن ﻳﺎﻓﺘﻦ‪ ،‬ﻣﺮاﺣﻞ ﺗﺸﺨﻴﺺ ﻋﺪد زوج و ﻓﺮد‪ ،‬ﻣﺤﺘﻮﻳﺎت‬ ‫ﺟﻌﺒﻪﻣﺘﻦ را ﺧﺎﻟﻲ ﻛﻦ و ﺑﻌﺪ از آن ‪ Focus‬را ﺑﻪ ﺟﻌﺒﻪﻣﺘﻦ اﻧﺘﻘﺎل ﺑﺪه؛ ﻳﻌﻨﻲ ﺷﻲء را در ﺣﺎﻟﺖ اﻧﺘﺨﺎب‬ ‫ﻗﺮار ﺑﺪه‪ .‬ﺑﺮاي درك ﺑﻬﺘﺮ اﻳﻦ ﻣﻮﺿﻮع )‪ ،(Focus‬ﭼﻨﺪﻳﻦ ﻛﻨﺘﺮل روي ﻓﺮم ﻗﺮار دﻫﻴﺪ و ﺑﻌﺪ ﺑﺮﻧﺎﻣﻪ را‬ ‫اﺟﺮا ﻛﻨﻴﺪ‪ .‬ﺧﻮاﻫﻴﺪ دﻳﺪ ﻛﻪ ﺑﺎ ﻫﺮ ﺑﺎر ﻓﺸﺎر دادن ﻛﻠﻴﺪ ‪ Tab‬از روي ﺻﻔﺤﻪ ﻛﻠﻴﺪ‪ Focus ،‬ﺑﻪ ﻛﻨﺘﺮل ﺑﻌﺪي‬ ‫اﻧﺘﻘﺎل ﻣﻲﻳﺎﺑﺪ‪ .‬ﺑﺮاي ﺗﻐﻴﻴﺮ دادن ﺗﺮﺗﻴﺐ ‪ Focus‬ﮔﺮﻓﺘﻦ‪ ،‬ﺑﺎﻳﺪ ﻣﻘﺪار ‪ TabIndex‬ﻫﺮ ﻛﻨﺘﺮل را ﺗﻐﻴﻴﺮ‬ ‫دﻫﻴﺪ‪ .‬اﮔﺮ ﺧﻮاﺳﺘﻴﺪ ﻛﻨﺘﺮﻟﻲ ﺑﺎ زدن ﻛﻠﻴﺪ ﺗﺐ از ﺳﻮي ﻛﺎرﺑﺮ‪ Focus ،‬درﻳﺎﻓﺖ ﻧﻜﻨﺪ‪ ،‬ﺻﻔﺖ ‪TabStop‬‬ ‫آن ﻛﻨﺘﺮل را ﺑﺮاﺑﺮ ‪ False‬ﻗﺮار دﻫﻴﺪ‪.‬‬

‫ﺗﻌﻴﻴﻦ ﻣﺜﺒﺖ ﻳﺎ ﻣﻨﻔﻲ ﺑﻮدن ﻋﺪد‬ ‫)(‪Private Sub Command1_Click‬‬ ‫‪Dim a As Integer‬‬ ‫)‪a = Val(Text1.Text‬‬ ‫‪If (a > 0) Then‬‬ ‫”‪       Label1.Caption = “Positive‬‬ ‫‪  ElseIf (a < 0) Then ‬‬ ‫”‪       Label1.Caption = “Negative‬‬ ‫‪Else‬‬

‫ﺻﻔﺤﻪ‪٥٥ :‬‬

‫”‪       Label1.Caption = “Zero‬‬ ‫‪End If‬‬ ‫‪  End Sub‬‬

‫ﺑﺮرﺳﻲ ﮔﺬرواژه‬ ‫)(‪Private Sub Command1_Click‬‬ ‫‪Dim Pass As String‬‬ ‫‪Pass = txtPassword.Text‬‬ ‫‪If Pass = "Meisam" Then‬‬ ‫‪      Beep‬‬ ‫”‪      Label1.Caption = “Welcome‬‬ ‫‪Else‬‬ ‫”‪      Label1.Caption = “Try again‬‬ ‫”“‪      Pass = ‬‬ ‫‪End If‬‬ ‫‪  End Sub‬‬

‫ﻧﻜﺘﻪ‪:‬‬ ‫‪ Beep‬دﺳﺘﻮري اﺳﺖ ﻛﻪ ﻳﻚ ﺻﺪاي ﺑﻴﭗ در اﺳﭙﻴﻜﺮ ﻛﺎﻣﭙﻴﻮﺗﺮﺗﺎن اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪.‬‬

‫‪--------------‬‬‫ﺗﺎﺑﻊ )(‪  MsgBox‬‬ ‫ﺑﻪ ﻛﻤﻚ اﻳﻦ ﺗﺎﺑﻊ ﻣﻲﺗﻮان ﭘﻴﻐﺎﻣﻲ را ﺑﻪ ﻛﺎرﺑﺮ ﻧﻤﺎﻳﺶ داد و ﭘﺎﺳﺦ وي را درﻳﺎﻓﺖ ﻛﺮد‪ .‬اﻳﻦ ﭘﻴﻐﺎم‬ ‫ﻛﺎدري اﺳﺖ ﻛﻪ ﺷﺎﻣﻞ ﻳﻚ آﻳﻜﻦ‪ ،‬ﻳﻚ ﭘﻴﺎم و ﺣﺪاﻗﻞ ﻳﻚ دﻛﻤﻪ اﺳﺖ؛ ﺷﻜﻞ ﻛﻠﻲ ﺗﺎﺑﻊ )(‪MsgBox‬‬ ‫ﭼﻨﻴﻦ اﺳﺖ‪:‬‬ ‫)]‪  Variable = MsgBox (StrPrompt [, intStyle] [, strTitle‬‬

‫‪ ‬‬ ‫)]“ﻋﻨﻮان ﭘﻨﺠﺮه” ‪] [,‬ﻋﺒﺎرت ﺗﻌﻴﻴﻦ ﻛﻨﻨﺪهي ﻧﻮع و ﺗﻌﺪاد ﻛﻠﻴﺪ‪”[, ‬ﭘﻴﺎم”(‪ = MsgBox ‬ﻣﺘﻐﻴﺮ ‪ ‬‬ ‫‪ ‬‬

‫ﺗﺎﺑﻊ )(‪ MsgBox‬ﻳﻚ آرﮔﻮﻣﺎن اﺟﺒﺎري )‪ (StrPrompt‬و دو آرﮔﻮﻣﺎن اﺧﺘﻴﺎري )‪ intStyle‬و‬ ‫‪ (strTitle‬دارد‪ .‬از ﭘﻴﺸﻮﻧﺪ ﻧﺎم اﻳﻦ آرﮔﻮﻣﺎنﻫﺎ ﻣﻲﺗﻮاﻧﻴﺪ ﺣﺪس ﺑﺰﻧﻴﺪ ﻛﻪ ﻧﻮع آﻧﻬﺎ ﭼﻴﺴﺖ‪.‬‬ ‫ﻣﻘﺪار ﺑﺮﮔﺸﺘﻲ ﺗﺎﺑﻊ‪ ،‬در ﻣﺘﻐﻴﺮي ﺻﺤﻴﺢ ﻗﺮار ﻣﻲﮔﻴﺮد‪ .‬وﻗﺘﻲ ﻛﺎدر ﭘﻴﺎم ﻇﺎﻫﺮ ﻣﻲﺷﻮد‪ ،‬اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻣﻮﻗﺘﺎ‬ ‫ﻣﺘﻮﻗﻒ ﻣﻲﺷﻮد ﺗﺎ ﻛﺎرﺑﺮ دﻛﻤﻪاي را ﻛﻠﻴﻚ ﻛﻨﺪ‪ .‬ﺑﻌﺪ از آن‪ ،‬اﺟﺮاي ﺑﺮﻧﺎﻣﻪ از دﺳﺘﻮر ﺑﻌﺪ از ﺗﺎﺑﻊ‬

‫ﺻﻔﺤﻪ‪٥٦ :‬‬

‫)(‪ MsgBox‬از ﺳﺮﮔﺮﻓﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﻓﺮض ﻛﻨﻴﺪ در ﺑﺮﻧﺎﻣﻪاي ﻗﺒﻞ از ﭼﺎپ ﮔﺰارش‪ ،‬ﻛﺎرﺑﺮ ﺑﺎﻳﺪ آﻣﺎدﮔﻲ‬ ‫ﺧﻮد را اﻋﻼم ﻛﻨﺪ‪ .‬دﺳﺘﻮر ﺳﺎدهي زﻳﺮ اﻳﻦ ﻛﺎر را اﻧﺠﺎم ﻣﻲدﻫﺪ‪:‬‬ ‫)”‪  MsgBox (“Click when you are ready for print the report‬‬ ‫‪ ‬‬

‫در ﺷﻜﻞ زﻳﺮ‪ ،‬اﻳﻦ ﻛﺎدر ﭘﻴﺎم ﺳﺎدهاي را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‪ .‬در اﻳﻦ ﺣﺎﻟﺖ دﻳﮕﺮ ﻣﻘﺪار ﺑﺮﮔﺸﺘﻲ ﺗﺎﺑﻊ‬ ‫اﻫﻤﻴﺖ ﭼﻨﺪاﻧﻲ ﻧﺪارد و ﻣﻲﺗﻮان از روش دﺳﺘﻮري اﻳﻦ ﺗﺎﺑﻊ اﺳﺘﻔﺎده ﻛﺮد ﻛﻪ ﻧﻴﺎزي ﺑﻪ ﻣﻘﺪار ﺑﺮﮔﺸﺘﻲ‬ ‫ﻧﺪارد‪.‬‬

‫ﻧﻜﺘﻪ‪:‬‬ ‫اﮔﺮ آرﮔﻮﻣﺎن اﺧﺘﻴﺎري دوم )‪ (strTitle‬ﻗﻴﺪ ﻧﺸﻮد‪ ،‬وﻳﮋوال ﺑﻴﺴﻴﻚ از ﻧﺎم ﭘﺮوژه در ﻋﻨﻮان ﭘﻴﺎم اﺳﺘﻔﺎده‬ ‫ﻣﻲﻛﻨﺪ‪.‬‬

‫ﻣﻘﺎدﻳﺮ ﺑﺮﮔﺸﺘﻲ‪:‬‬ ‫ﺑﺮاي اﻳﻨﻜﻪ ﺑﺪاﻧﻴﻢ ﻋﻜﺲاﻟﻌﻤﻞ ﻛﺎرﺑﺮ ﻧﺴﺒﺖ ﺑﻪ ﻛﺎدر ﭘﻴﺎم ﭼﻴﺴﺖ‪ ،‬ﻳﺎ ﻣﺘﻮﺟﻪ ﺑﺸﻮﻳﻢ ﻛﻪ ﻛﺎرﺑﺮ روي ﻛﺪام‬ ‫دﻛﻤﻪ ﻛﻠﻴﺪ ﻛﺮده اﺳﺖ ﺑﺎﻳﺪ از ﻣﻘﺎدﻳﺮ ﺑﺮﮔﺸﺘﻲ اﺳﺘﻔﺎده ﻛﻨﻴﻢ‪ .‬در ﺟﺪول زﻳﺮ ﻣﻘﺎدر ﺑﺮﮔﺸﺘﻲ ﻛﺎدر ﭘﻴﺎم را‬ ‫ﻣﺸﺎﻫﺪه ﻣﻲﻛﻨﻴﺪ‪:‬‬

‫ﻣﻘﺎدﻳﺮ‬

‫ﻣﻔﻬﻮم‬

‫ﻧﺎم ﺛﺎﺑﺖ‬

‫‪ 1‬‬

‫‪ vbOK‬ﻛﺎرﺑﺮ روي ‪ Ok‬ﻛﻠﻴﻚ ﻛﺮده اﺳﺖ‪.‬‬

‫‪2‬‬

‫‪ vbCancel‬ﻛﺎرﺑﺮ روي ‪ Cancel‬ﻛﻠﻴﻚ ﻛﺮده اﺳﺖ‪.‬‬

‫‪3‬‬

‫‪ vbAbort‬ﻛﺎرﺑﺮ روي ‪ Abort‬ﻛﻠﻴﻚ ﻛﺮده اﺳﺖ‪.‬‬

‫‪4‬‬

‫‪ vbRetry‬ﻛﺎرﺑﺮ روي ‪ Retry‬ﻛﻠﻴﻚ ﻛﺮده اﺳﺖ‪.‬‬

‫‪5‬‬

‫‪ vbIgnore‬ﻛﺎرﺑﺮ روي ‪ Ignore‬ﻛﻠﻴﻚ ﻛﺮده اﺳﺖ‪.‬‬

‫‪6‬‬

‫‪ vbYes‬ﻛﺎرﺑﺮ روي ‪ Yes‬ﻛﻠﻴﻚ ﻛﺮده اﺳﺖ‪.‬‬

‫‪7‬‬

‫‪ vbNo‬ﻛﺎرﺑﺮ روي ‪ No‬ﻛﻠﻴﻚ ﻛﺮده اﺳﺖ‪.‬‬

‫ﺻﻔﺤﻪ‪٥٧ :‬‬

‫ﻣﻘﺪار ﺑﺮﮔﺸﺘﻲ )(‪ MsgBox‬زﻣﺎﻧﻲ ﻣﻔﻬﻮم ﭘﻴﺪا ﻣﻲﻛﻨﺪ ﻛﻪ دﻛﻤﻪﻫﺎي ﻛﺎدر ﭘﻴﺎم ﺑﻴﺶ از ﻳﻜﻲ ﺑﺎﺷﺪ‪ .‬ﺑﺮاي‬ ‫ﻛﻨﺘﺮل ﺑﻴﺸﺘﺮ دﻛﻤﻪﻫﺎي ﻛﺎدر ﭘﻴﺎم ﺑﺎﻳﺪ از آرﮔﻮﻣﺎن اﺧﺘﻴﺎري اول )‪ ،(intStyle‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ؛ ﻛﻪ ﺑﻪ ﺳﻪ‬ ‫ﺑﺨﺶ ﺗﻘﺴﻴﻢ ﻣﻲﺷﻮﻧﺪ‪:‬‬

‫ﺑﺨﺶ اول‪  :‬ﺗﻌﺪاد و ﻧﻮع ﻛﻠﻴﺪ‬ ‫ﻣﻘﺪار‬

‫ﻧﺎم ﺛﺎﺑﺖ‬ ‫‪ vbOKOnly‬ﻧﻤﺎﻳﺶ ﻛﻠﻴﺪ ‪  OK‬‬

‫‪ 0‬‬

‫‪ vbOKCancel‬ﻧﻤﺎﻳﺶ ﻛﻠﻴﺪﻫﺎي ‪ OK‬و ‪  Cancel‬‬

‫‪ 1‬‬ ‫‪2‬‬

‫ﻣﻔﻬﻮم‬

‫‪vbAbortRetryIgnore‬‬

‫ﻧﻤﺎﻳﺶ ﻛﻠﻴﺪﻫﺎي ‪ Abort‬و ‪ Retry‬و ‪Ignore‬‬

‫‪ vbYesNoCancel‬ﻧﻤﺎﻳﺶ ﻛﻠﻴﺪﻫﺎي ‪ Yes‬و ‪ No‬و ‪  Cancel‬‬

‫‪3‬‬ ‫‪4‬‬

‫‪ vbYesNo‬ﻧﻤﺎﻳﺶ ﻛﻠﻴﺪﻫﺎي ‪ Yes‬و ‪  No‬‬

‫‪5‬‬

‫‪ vbRetryCancel‬ﻧﻤﺎﻳﺶ ﻛﻠﻴﺪﻫﺎي ‪ Retry‬و ‪  Cancel‬‬

‫ﻣﺜﺎل‪:‬‬ ‫)‪  Response = MsgBox (“Ready to print?”, 1‬‬ ‫‪ ‬‬

‫‪  Or‬‬ ‫‪ ‬‬

‫)‪  Response = MsgBox (“Ready to print?”, vbOKCancel‬‬

‫ﺑﺨﺶ دوم‪ :‬ﺗﻌﻴﻴﻦ آﻳﻜﻦ ﻛﺎدر ﭘﻴﺎم‬ ‫ﺑﺮاي ﺗﻌﻴﻴﻦ آﻳﻜﻦ ﻛﺎدر ﭘﻴﺎم از ﺛﺎﺑﺖﻫﺎي زﻳﺮ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬ﻓﻘﻂ دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﻫﺮ ﻳﻚ از اﻳﻦ آﻳﻜﻦﻫﺎ‬ ‫را در ﺟﺎي ﻣﻨﺎﺳﺐ ﺑﻪ ﻛﺎر ﺑﺒﺮﻳﺪ‪.‬‬

‫ﻣﻘﺪار‬

‫ﻣﻔﻬﻮم‬

‫ﻧﺎم ﺛﺎﺑﺖ‬

‫‪  16‬‬

‫‪ vbCritical‬آﻳﻜﻦ ﭘﻴﺎم ﺑﺤﺮاﻧﻲ‬

‫‪32‬‬

‫‪ vbQuestion‬آﻳﻜﻦ ﻋﻼﻣﺖ ﺳﻮل‬

‫‪48‬‬

‫‪ vbExclamation‬آﻳﻜﻦ ﻫﺸﺪار ﻳﺎ اﺧﻄﺎر‬

‫‪64‬‬

‫‪ vbInformation‬آﻳﻜﻦ اﻃﻼﻋﺎت‬

‫ﺻﻔﺤﻪ‪٥٨ :‬‬

‫آﻳﻜﻦ‬

‫ﻣﺜﺎل‪:‬‬ ‫)‪  Response = MsgBox (“Is the printer on?”, vbYesNoCancel + vbQuestion‬‬ ‫‪ ‬‬

‫‪  Or‬‬ ‫‪ ‬‬

‫)‪Response = MsgBox (“Is the printer on?”, 3 + 32‬‬

‫ﻧﻜﺘﻪ‪:‬‬ ‫اﮔﺮ ﺑﻪ دو ﺟﺪول ﺑﺎﻻ دﻗﺖ ﻛﺮده ﺑﺎﺷﻴﺪ ﺳﺘﻮﻧﻲ ﺗﺤﺖ ﻋﻨﻮان “ﻧﺎم ﺛﺎﺑﺖ” در آﻧﻬﺎ ﻣﺸﺎﻫﺪه ﻣﻲﻛﻨﻴﺪ‪.‬‬ ‫وﻳﮋوال ﺑﻴﺴﻴﻚ ﺻﺪﻫﺎ ﺛﺎﺑﺖ )‪ (Constant‬دارد ﻛﻪ آﻧﻬﺎ را ﺑﻪ ﻧﺎم ﻣﻲﺷﻨﺎﺳﺪ‪ .‬ﺑﻪ اﻳﻨﻬﺎ ﺛﺎﺑﺖ ﻧﺎمدار ﻳﺎ‬ ‫)‪ (Named  Constant‬ﻣﻲﮔﻮﻳﻨﺪ‪ .‬ﻣﻘﺪار اﻳﻦ ﺛﺎﺑﺖﻫﺎ ﻫﻤﻴﺸﻪ ﺛﺎﺑﺖ اﺳﺖ )و ﻏﻴﺮ از اﻳﻦ ﻫﻢ‬ ‫ﻧﻤﻲﺗﻮاﻧﺪ ﺑﺎﺷﺪ!( و ﻧﻤﻲﺗﻮان آﻧﻬﺎ را ﺗﻐﻴﻴﺮ داد‪ .‬وﻗﺘﻲ از ﺛﺎﺑﺖﻫﺎي ﻧﺎمدار اﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﺪ‪ ،‬دﻳﮕﺮ ﻧﻴﺎزي‬ ‫ﻧﻴﺴﺖ ﻣﻘﺪار آﻧﻬﺎ را ﺣﻔﻆ ﻛﻨﻴﺪ و دﻓﻌﻪي ﺑﻌﺪ ﻛﻪ آﻧﻬﺎ را ﺑﺒﻴﻨﻴﺪ‪ ،‬درك ﻋﻤﻠﻜﺮد آﻧﻬﺎ ﺳﺎدهﺗﺮ ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬ ‫ﺑﻨﺎﺑﺮاﻳﻦ ﺳﻌﻲ ﻛﻨﻴﺪ ﺗﺎ ﺣﺪ اﻣﻜﺎن از ﺛﺎﺑﺖﻫﺎي ﻧﺎمدار اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪) .‬ﻃﺒﻖ اﻳﻦ ﺗﻌﺎرﻳﻒ‪ ،‬اﺳﺘﻔﺎده از ﻣﺜﺎل‬ ‫اول ﻣﻨﺎﺳﺐﺗﺮ اﺳﺖ‪(.‬‬

‫ﺑﺨﺶ ﺳﻮم‪ :‬ﺗﻌﻴﻴﻦ دﻛﻤﻪي ﭘﻴﺶﻓﺮض‬ ‫ﻫﻤﻴﺸﻪ اوﻟﻴﻦ دﻛﻤﻪي ﻛﺎدر ﭘﻴﺎم )از ﺳﻤﺖ ﭼﭗ( دﻛﻤﻪي ﭘﻴﺶﻓﺮض اﺳﺖ‪ ،‬ﻳﻌﻨﻲ زدن ‪ Enter‬ﻣﻌﺎدل‬ ‫ﻛﻠﻴﻚ ﻛﺮدن آن دﻛﻤﻪ ﺧﻮاﻫﺪ ﺑﻮد؛ اﻣﺎ ﺑﺎ اﺳﺘﻔﺎده از ﻣﻘﺎدﻳﺮ ﺟﺪول زﻳﺮ ﻣﻲﺗﻮاﻧﻴﺪ اﻳﻦ رﻓﺘﺎر را ﻋﻮض ﻛﻨﻴﺪ‪.‬‬

‫ﻣﻘﺪار‬

‫ﻣﻔﻬﻮم‬

‫ﻧﺎم ﺛﺎﺑﺖ‬

‫‪ 0‬‬

‫‪ vbDefaultButton1‬ﻛﻠﻴﺪ اول ﭘﻴﺶﻓﺮض‬

‫‪256‬‬

‫‪ vbDefaultButton2‬ﻛﻠﻴﺪ دوم ﭘﻴﺶﻓﺮض‬

‫‪512‬‬

‫‪ vbDefaultButton3‬ﻛﻠﻴﺪ ﺳﻮم ﭘﻴﺶﻓﺮض‬

‫‪  768‬‬

‫‪   vbDefaultButton4‬ﻛﻠﻴﺪ ﭼﻬﺎرم ﭘﻴﺶﻓﺮض‬

‫ﻣﺜﺎل‪:‬‬ ‫)‪  Response = MsgBox (“Is the printer on?”, vbYesNoCancel + vbDefaultButton1‬‬ ‫‪ ‬‬

‫‪  Or‬‬ ‫‪ ‬‬

‫)‪  Response = MsgBox (“Is the printer on?”, 3 + 0‬‬

‫ﺻﻔﺤﻪ‪٥٩ :‬‬

 

،‫ در اﻋﻤﺎل ﺑﺤﺮاﻧﻲ‬.‫ ﺑﻪ ﻋﻨﻮان دﻛﻤﻪي ﭘﻴﺶﻓﺮض در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ‬Yes ‫ دﻛﻤﻪي‬،‫در اﻳﻦ ﻣﺜﺎل‬ ‫ را دﻛﻤﻪي ﭘﻴﺶﻓﺮض ﻛﺎدر ﭘﻴﺎم ﻗﺮار دﻫﻴﺪ ﺗﺎ اﮔﺮ ﻛﺎرﺑﺮ ﺗﺼﺎدﻓﺎ‬Cancel ‫ دﻛﻤﻪي‬،‫ﻣﺎﻧﻨﺪ ﺣﺬف ﻓﺎﻳﻞﻫﺎ‬   .‫ ﻋﻤﻠﻴﺎت ﻟﻐﻮ ﺷﻮد‬،‫ را ﻓﺸﺎر داد‬Enter ‫ﻛﻠﻴﺪ‬  

  :‫ﻣﺜﺎلﻫﺎي ﺗﻜﻤﻴﻠﻲ‬ :‫ﺷﻤﺎرهي ﻳﻚ‬ Private Sub Form_Load() Dim intResponse As Integer intResponse = MsgBox("Exit Program?", vbInformation + vbYesNo, "Exit”) If intResponse = vbYes Then           End Else           Me.Refresh End If   End Sub   Or Dim intResponse As VbMsgBoxResult intResponse = MsgBox("Exit Program?", 64 + 4, "Exit”) If intResponse = 6 Then           End Else           Me.Refresh End If End Sub

:‫ﻧﻜﺘﻪ‬ ‫ ﺑﻌﺪﻫﺎ ﺑﺎ اﻳﻦ دﺳﺘﻮر‬.‫( ﻣﻲﺷﻮد‬Form1) ‫ ﻳﻌﻨﻲ ﻓﺮم ﺟﺎري‬Me ‫ ﺑﺎﻋﺚ ﺑﺎرﮔﺬاري ﻣﺠﺪد‬Me.Refresh   .‫ﺑﻴﺸﺘﺮ آﺷﻨﺎ ﻣﻲﺷﻮﻳﺪ‬  

:‫ﺷﻤﺎرهي دو‬ Option Explicit Dim p, s, t, r ‘p = Prompt ‘s = Style ‘t = Title ‘r = Response ٦٠ :‫ﺻﻔﺤﻪ‬

‫)(‪Private Sub Command1_Click‬‬ ‫”?‪p = “Are You Sure‬‬ ‫‪s = vbCritical + vbYesNo‬‬ ‫”‪t = “Yes or NO‬‬ ‫)‪r = MsgBox(p, s, t‬‬ ‫‪End Sub‬‬

‫ﻧﻜﺘﻪ‪:‬‬ ‫اﮔﺮ ﻣﻲﺧﻮاﻫﻴﺪ در ﻛﺎدر ﭘﻴﺎم‪ ،‬ﺑﻌﺪ از ﻧﻮﺷﺘﻦ ﭼﻨﺪﻳﻦ ﻛﻠﻤﻪ ﺑﻪ ﺧﻂ ﺑﻌﺪي ﺑﺮوﻳﺪ و اداﻣﻪ ﭘﻴﺎم را در آن ﺧﻂ‬ ‫ﺑﻨﻮﻳﺴﻴﺪ‪ ،‬ﺑﺎﻳﺪ از ﺗﺎﺑﻊ ‪ Chr$‬اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬اﻳﻦ ﺗﺎﺑﻊ ﻛﺎراﻛﺘﺮي را ﻛﻪ ﻣﺮﺑﻮط ﺑﻪ ‪ Charcode‬ﻣﻲﺑﺎﺷﺪ را‬ ‫ﺑﺮﻣﻲﮔﺮداﻧﺪ‪) :‬ﺑﻪ ﺟﺎي )‪ Chr$(13‬ﻣﻲ ﺗﻮاﻧﻴﺪ از )‪ Chr$(10‬ﻫﻢ اﺳﺘﻔﺎده ﻛﻨﻴﺪ(‬ ‫)‪  Chr$ (Charcode‬‬ ‫)”‪  MsgBox ("Welcome" + Chr$(13) + Chr$(13) + Chr$(13) + “Meisam‬‬ ‫‪ ‬‬

‫‪  Or‬‬ ‫‪ ‬‬

‫)”‪  MsgBox ("Welcome" + Chr(13) + Chr(13) + Chr(13) & “Meisam‬‬

‫‪  --------------‬‬‫ﺗﺎﺑﻊ )(‪  InputBox‬‬ ‫در ﺑﻌﻀﻲ از ﻣﻮارد ﻣﻤﻜﻦ اﺳﺖ ﺑﺨﻮاﻫﻴﺪ ﺑﺮاي ﻛﺎرﺑﺮ ﺳﻮاﻟﻲ را ﻣﻄﺮح ﻛﻨﻴﺪ و ﭘﺎﺳﺦ آن را ﺑﮕﻴﺮﻳﺪ‪ ،‬اﻣﺎ ﺑﺮاي‬ ‫اﻳﻦ ﻣﻨﻈﻮر ﻗﺮار دادن ﻳﻚ ﻛﺎدر ﻣﺘﻦ )‪ (TextBox‬ﺑﺮ روي ﻓﺮم ﺑﺮﻧﺎﻣﻪ را ﻣﻨﺎﺳﺐ ﻧﻤﻲﺑﻴﻨﻴﺪ‪ .‬ﺣﺎل اﻳﻦ‬ ‫ﺳﻮال ﺑﺮاي ﺷﻤﺎ ﭘﻴﺶ ﻣﻲآﻳﺪ ﻛﻪ آﻳﺎ راه دﻳﮕﺮي ﺑﺮاي ارﺗﺒﺎط ﺑﺎ ﻛﺎرﺑﺮ وﺟﻮد دارد؟ ‪ ‬‬ ‫ﺑﻠﻪ‪ .‬ﺗﺎﺑﻊ ‪ InputBox‬ﻳﻚ ﻛﺎدر ورودي ﺑﺮاي ﺷﻤﺎ اﻳﺠﺎد ﻣﻲﻛﻨﺪ‪ .‬اﻳﻦ ﻛﺎدر ﺗﻤﺎم ﺧﺼﻮﺻﻴﺎت ﻛﺎدر ﭘﻴﺎم را‬ ‫دارد و ﻓﻘﻂ داراي ﻳﻚ ﻓﻴﻠﺪ اﺿﺎﻓﻲ ﺑﺮاي ﮔﺮﻓﺘﻦ ﺟﻮاب ﻛﺎرﺑﺮ اﺳﺖ‪ .‬اﻟﺒﺘﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ ﻫﻴﭻ ﻛﻨﺘﺮﻟﻲ‬ ‫روي دﻛﻤﻪﻫﺎي ﻛﺎدر ورودي ﻧﺪارد و ﻳﻚ ﻛﺎدر ورودي ﻫﻤﻴﺸﻪ داراي دو دﻛﻤﻪي ‪ OK‬و ‪ Cancel‬ﺧﻮاﻫﺪ‬ ‫ﺑﻮد‪ .‬ﻛﺎدر ورودي‪ ،‬آﻳﻜﻦ ﻫﻢ ﻧﻤﻲﺗﻮاﻧﺪ داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺷﻜﻞ ﻛﻠﻲ ﺗﺎﺑﻊ )(‪ InputBox‬ﺑﻪ ﺻﻮرت زﻳﺮ‬ ‫اﺳﺖ‪:‬‬ ‫)]‪varResponse = InputBox (strPrompt [, strTitle] [, strDefault] [, intXpos] [, intYpos‬‬

‫ﺻﻔﺤﻪ‪٦١ :‬‬

‫ﻣﻘﺪار ﺑﺮﮔﺸﺘﻲ ﺗﺎﺑﻊ )(‪ InputBox‬از ﻧﻮع ‪ Variant‬اﺳﺖ و ﻣﻲﺗﻮان آن را ﺑﻪ ﺻﻮرت ﻳﻚ رﺷﺘﻪ ﺑﻪ‬ ‫ﻛﺎر ﺑﺮد؛ ﺑﻪ اﻳﻦ دﻟﻴﻞ ﻣﻘﺪار ﺑﺮﮔﺸﺘﻲ اﻳﻦ ﺗﺎﺑﻊ ‪ Variant‬اﺳﺖ ﻛﻪ ﺑﺘﻮان آن را ﺣﺘﻲ ﺑﻪ ﻣﺸﺨﺼﻪﻫﺎي‬ ‫ﻛﻨﺘﺮلﻫﺎ ﻫﻢ ﻧﺴﺒﺖ داد‪ .‬از ﻣﻴﺎن ﺗﻤﺎم آرﮔﻮﻣﺎنﻫﺎي ﺗﺎﺑﻊ )(‪ InputBox‬ﻓﻘﻂ اوﻟﻴﻦ آرﮔﻮﻣﺎن اﺟﺒﺎري‬ ‫اﺳﺖ‪.‬‬ ‫• ‪ :strPrompt‬ﭘﻴﺎم ﻳﺎ ﭘﺮﺳﺸﻲ اﺳﺖ ﻛﻪ در ﻛﺎدر ورودي ﻣﺸﺎﻫﺪه ﻣﻲﺷﻮد‪ .‬ﺣﺪاﻛﺜﺮ ﻃﻮل اﻳﻦ‬ ‫ﭘﻴﺎم‪ ،‬ﻣﻲﺗﻮاﻧﺪ ‪ 1024‬ﻧﻮﻳﺴﻪ ﺑﺎﺷﺪ‪  .‬‬ ‫‪ ‬‬

‫• ‪ :strTitle‬ﻋﻨﻮان ﭘﻨﺠﺮهي ﻛﺎدر ورودي ﺑﺎ اﻳﻦ آرﮔﻮﻣﺎن ﻣﺸﺨﺺ ﻣﻲﺷﻮد‪  .‬‬ ‫‪ ‬‬

‫• ‪ :strDefault‬ﻣﻘﺪاري ﻛﻪ ﺑﻪ ﺻﻮرت ﭘﻴﺶﻓﺮض در ﻓﻴﻠﺪ ورودي ﻇﺎﻫﺮ ﺧﻮاﻫﺪ ﺷﺪ‪  .‬‬ ‫‪ ‬‬

‫• ‪ intXpos‬و ‪ :IntYpos‬ﻣﺨﺘﺼﺎت ﻇﺎﻫﺮ ﺷﺪن ﭘﻨﺠﺮهي ﻛﺎدر ورودي روي ﺻﻔﺤﻪ‪ .‬اﮔﺮ اﻳﻦ دو‬ ‫آرﮔﻮﻣﺎن ﻗﻴﺪ ﻧﺸﻮﻧﺪ‪ ،‬وﻳﮋوال ﺑﻴﺴﻴﻚ ﻛﺎدر وردوي را وﺳﻂ ﺻﻔﺤﻪي ﻧﻤﺎﻳﺶ ﻗﺮار ﺧﻮاﻫﺪ داد‪  .‬‬ ‫ﻧﻜﺘﻪ‪:‬‬ ‫ﺑﺎﻳﺪ روﺷﻲ وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﺑﺪاﻧﺪ ﻛﻪ ﻛﺎرﺑﺮ ﻛﺪام دﻛﻤﻪ را ﻛﻠﻴﻚ ﻛﺮده اﺳﺖ‪ .‬اﮔﺮ ﻛﺎرﺑﺮ روي‬ ‫‪ Cancel‬ﻛﻠﻴﻚ ﻛﻨﺪ‪ ،‬ﺗﺎﺑﻊ )(‪ InputBox‬رﺷﺘﻪاي ﺑﻪ ﻃﻮل ﺻﻔﺮ )”“( ﺑﺮﻣﻲﮔﺮداﻧﺪ و ﻛﻠﻴﻚ ﻛﺮدن روي‬ ‫‪ OK‬ﺳﺒﺐ ﺑﺮﮔﺸﺖ رﺷﺘﻪي داﺧﻞ ﻓﻴﻠﺪ ورودي ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬

‫ﻣﺜﺎلﻫﺎ‪:‬‬ ‫ﻛﺎدر ﭘﻴﺎم‪ ،‬ﻛﺎدر وردوي‬ ‫)(‪Private Sub Command1_Click‬‬ ‫‪Dim strAnswer As String‬‬ ‫)”‪strAnswer = InputBox(“Enter your name“, “Getting name”, “Meisam‬‬ ‫)‪MsgBox (“Hi   “ & strAnswer‬‬ ‫‪End Sub‬‬

‫ﺿﺮب دو ﻋﺪد‬ ‫ﺿﺮب دو ﻋﺪد’ ‪ ‬‬ ‫)(‪Private Sub Command1_Click‬‬ ‫‪Dim   intNum1,   intNum2,   intResult   As Integer‬‬

‫ﺻﻔﺤﻪ‪٦٢ :‬‬

‫)”‪intNum1 = InputBox("Enter First number", "Getting Number 1‬‬ ‫)”‪intNum2 = InputBox("Enter second number", "Getting Number 2‬‬ ‫‪intResult = intNum1 * intNum2‬‬ ‫”‪MsgBox intNum1 & “ * “ & intNum2 & “ = “ & intResult, , “Result‬‬ ‫‪  End Sub‬‬

‫‪--------------‬‬‫دﺳﺘﻮر ‪  Select Case‬‬ ‫ﺑﻬﺘﺮﻳﻦ روش ﺑﺮاي ﺑﺮرﺳﻲ ﺷﺮطﻫﺎي ﭼﻨﺪﮔﺎﻧﻪ‪ ،‬اﺳﺘﻔﺎده از دﺳﺘﻮر ‪ Select Case‬ﻣﻲﺑﺎﺷﺪ‪ .‬اﮔﺮ ﺗﻌﺪاد‬ ‫دﺳﺘﻮرﻫﺎي ‪ If‬ﺗﻮدرﺗﻮ ﺳﻪ ﻳﺎ ﭼﻬﺎر ﻋﺪد ﺑﻴﺸﺘﺮ ﺷﻮد‪ ،‬ﺑﺮﻧﺎﻣﻪ ﺑﺴﻴﺎر ﭘﻴﭽﻴﺪه ﺧﻮاﻫﺪ ﺷﺪ‪ .‬ﺑﻪ ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮر‬ ‫‪ Select Case‬ﺗﻮﺟﻪ ﻛﻨﻴﺪ‪  :‬‬ ‫ﻋﺒﺎرت ﻣﻮردﻧﻈﺮ ‪Select Case‬‬ ‫ﻣﻘﺪار اول ‪     Case‬‬ ‫ﻳﻚ ﻳﺎ ﭼﻨﺪ دﺳﺘﻮر‪          ‬‬ ‫ﻣﻘﺪار دوم ‪     [ Case‬‬ ‫]‪ ‬ﻳﻚ ﻳﺎ ﭼﻨﺪ دﺳﺘﻮر‪          ‬‬ ‫ﻣﻘﺪار ﺳﻮم ‪     [ Case‬‬ ‫]‪ ‬ﻳﻚ ﻳﺎ ﭼﻨﺪ دﺳﺘﻮر‪          ‬‬

‫‪ ‬‬ ‫‪ ‬‬ ‫‪ ‬‬

‫‪ ‬‬ ‫‪ ‬‬ ‫‪ ‬‬ ‫…‪       ‬‬ ‫‪ ‬‬ ‫ﻣﻘﺪار ‪N‬ام ‪       [ Case‬‬ ‫]‪ ‬ﻳﻚ ﻳﺎ ﭼﻨﺪ دﺳﺘﻮر‪          ‬‬ ‫‪        [ Case Else‬‬ ‫]‪ ‬ﻳﻚ ﻳﺎ ﭼﻨﺪ دﺳﺘﻮر‪          ‬‬ ‫‪  End Select‬‬ ‫‪ ‬‬

‫در اﻳﻦ دﺳﺘﻮر ﻋﺒﺎرﺗﻲ را ﻛﻪ ﻣﻲﺧﻮاﻫﻴﻢ ﻣﻘﺎدﻳﺮ ﻣﺨﺘﻠﻒ آن را ﭼﻚ ﻛﻨﻴﻢ‪ ،‬در ﺟﻠﻮي ‪Select  Case‬‬

‫ﻣﻲﻧﻮﻳﺴﻴﻢ‪ .‬اﮔﺮ ﻋﺒﺎرت ﺑﺎ ﻳﻜﻲ از ﻣﻘﺎدﻳﺮ ‪Case‬ﻫﺎ ﺑﺮاﺑﺮ ﺑﺎﺷﺪ‪ ،‬دﺳﺘﻮرﻫﺎي ﺑﻌﺪ از آن‪ ،‬و در ﻏﻴﺮ اﻳﻦ‬ ‫ﺻﻮرت‪ ،‬دﺳﺘﻮرﻫﺎي ﺑﻌﺪ از ‪ Case Else‬اﺟﺮا ﻣﻲﺷﻮﻧﺪ‪.‬‬ ‫ﺻﻔﺤﻪ‪٦٣ :‬‬

:‫ﻣﺜﺎلﻫﺎ‬ 1 ‫ﻧﻤﺮات و ﺟﻮاﻳﺰ‬ Private Sub cmdRun_Click() Select Case txtGrade.Text    Case “a”           lblReward.Caption = “a Brand‐New car”    Case “b”           lblReward.Caption = “Notebook”    Case “c”           lblReward.Caption = “Pencil”    Case “d”           lblReward.Caption = “Eraser”    Case “e”           lblReward.Caption = “Nothing”    Case Else           lblReward.Caption = “Error in grade” End Select txtGrade.SetFocus End Sub

‫ دﺳﺘﻮر ﺑﻌﺪ از‬،‫ ﺑﺎﺷﺪ‬e ‫و ﻳﺎ‬  a, b, c, d ‫( ﺣﺎوي ﻳﻜﻲ از ﺣﺮوف‬txtGrade) ‫در ﻣﺜﺎل ﺑﺎﻻ اﮔﺮ ﺟﻌﺒﻪﻣﺘﻦ‬ ‫ در‬.‫“ را ﻧﻤﺎﻳﺶ ﻣﻲدﻫﺪ‬Error in grade” ‫ اﺟﺮا ﻣﻲﺷﻮد؛ در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﺑﺮﻧﺎﻣﻪ ﭘﻴﻐﺎم‬Case .‫ﺿﻤﻦ ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺑﺰرﮔﻲ و ﻛﻮﭼﻜﻲ ﺣﺮوف ﺣﺴﺎس ﻣﻲﺑﺎﺷﺪ‬  

2 ‫ﻧﻤﺮات و ﺟﻮاﻳﺰ‬ .‫ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‬Is ‫ ﺑﺎﻳﺪ از ﻋﻤﻠﮕﺮ‬Select  Case ‫ﺑﺮاي اﺳﺘﻔﺎده از ﻋﻤﻠﮕﺮﻫﺎي راﺑﻄﻪاي در دﺳﺘﻮر‬ :‫ﺑﺮﻧﺎﻣﻪي زﻳﺮ ﻧﻮع دﻳﮕﺮي از ﻣﺜﺎلِ ﻧﻤﺮات و ﺟﻮاﻳﺰ ﻣﻲﺑﺎﺷﺪ‬ Private Sub cmdRun_Click() Select Case Val(txtGrade.Text)    Case Is >= 18           lblReward.Caption = “a Brand‐New car”    Case Is >= 16           lblReward.Caption = “Notebook”

٦٤ :‫ﺻﻔﺤﻪ‬

   Case Is >= 14           lblReward.Caption = “Pencil”      Case Is >= 10           lblReward.Caption = “Eraser”    Case Is >= 1             lblReward.Caption = “Nothing”    Case Else           lblReward.Caption = “Error in grade” End Select txtGrade.Text = “” txtGrade.SetFocus   End Sub  

:‫ﻛﻨﺠﻜﺎوي‬ :‫ﻋﺒﺎرات زﻳﺮ را ﺑﻪ ﻋﻨﻮان ورودي ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺑﺪﻫﻴﺪ ﺗﺎ ﺑﺒﻴﻨﻴﺪ ﭼﻪ ﺟﺎﻳﺰهاي ﺑﻪ ﺷﻤﺎ ﻣﻲدﻫﺪ‬   1TM   11FS   426NB NB426

‫ﻓﻜﺮ ﻣﻲﻛﻨﻴﺪ ﻋﻠﺖ ﭼﻴﺴﺖ؟‬

3 ‫ﻧﻤﺮات و ﺟﻮاﻳﺰ‬ ‫ اﻳﻦ ﻋﻤﻠﮕﺮ ﻋﻼوهﺑﺮ‬.‫ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‬To ‫ ﺑﺎﻳﺪ از ﻋﻤﻠﮕﺮ‬Select  Case ‫ﺑﺮاي اﻳﺠﺎد ﻣﺤﺪوده در دﺳﺘﻮر‬ ‫ ﺷﺮوع ﺷﻮد‬ASCII ‫ ﻣﺸﺮوط ﺑﺮ اﻳﻨﻜﻪ ﺑﺮرﺳﻲ از ﭘﺎﻳﻴﻦ ﺟﺪول‬،‫اﻋﺪاد ﻣﻲﺗﻮاﻧﺪ روي رﺷﺘﻪﻫﺎ ﻧﻴﺰ ﻋﻤﻞ ﻛﻨﺪ‬ :‫ ﺑﺮﻧﺎﻣﻪي زﻳﺮ ﻧﻮع دﻳﮕﺮي از ﻣﺜﺎلِ ﻧﻤﺮات و ﺟﻮاﻳﺰ ﻣﻲﺑﺎﺷﺪ‬.‫و ﺑﻪ ﺳﻤﺖ ﺑﺎﻻ ﺣﺮﻛﺖ ﻛﻨﺪ‬ Private Sub cmdRun_Click() Select Case Val(txtGrade.Text)    Case 18 To 20           lblReward.Caption = "a Brand‐New car”    Case 15 To 17           lblReward.Caption = “Notebook”    Case 14 To 16           lblReward.Caption = “Pencil”

٦٥ :‫ﺻﻔﺤﻪ‬

‫‪   Case 10 To 13‬‬ ‫”‪          lblReward.Caption = “Eraser‬‬ ‫‪   Case 0 To 9‬‬ ‫”‪          lblReward.Caption = “Nothing‬‬ ‫‪   Case Else‬‬ ‫”‪          lblReward.Caption = “Error in grade‬‬ ‫‪End Select‬‬ ‫”“‪txtGrade.Text = ‬‬ ‫‪txtGrade.SetFocus‬‬ ‫‪  End Sub‬‬

‫‪  --------------‬‬‫ﻛﻨﺘﺮل ‪  Check Box‬‬ ‫از اﻳﻦ ﻛﻨﺘﺮل ﻛﻪ ﺑﻪ ﻋﻨﻮان ﻛﺎدر ﻋﻼﻣﺖ ﺷﻨﺎﺧﺘﻪ ﻣﻲﺷﻮد‪ ،‬ﺑﺮاي اﻧﺘﺨﺎب ﻳﻚ ﺣﺎﻟﺖ از دو ﺣﺎﻟﺖ ﻣﻤﻜﻦ‬ ‫ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮد‪ .‬اﻳﻦ ﻛﻨﺘﺮل ﺗﺪاﻋﻲﮔﺮ ﻣﺘﻐﻴﺮ ﻣﻨﻄﻘﻲ ﻣﻲﺑﺎﺷﺪ‪ .‬ﻛﻨﺘﺮل ﻛﺎدر ﻋﻼﻣﺖ را ﻣﻲﺗﻮان‬ ‫ﺑﻪ ﺻﻮرت ﮔﺮوﻫﻲ ﻧﻴﺰ ﺑﻪﻛﺎر ﺑﺮد ﺗﺎ ﭼﻨﺪﻳﻦ اﻧﺘﺨﺎب را ﺑﻪ ﻛﺎرﺑﺮ اراﻳﻪ دﻫﺪ و ﻛﺎرﺑﺮ ﻣﻲﺗﻮاﻧﺪ ﻳﻚ ﻳﺎ ﭼﻨﺪ ﻛﺎدر‬ ‫ﻋﻼﻣﺖ را اﻧﺘﺨﺎب ﻛﻨﺪ‪.‬‬

‫ﺧﺎﺻﻴﺖ ‪:Value‬‬ ‫ﻣﺸﺨﺼﻪي ‪ Value‬ﻛﻨﺘﺮل ﻛﺎدر ﻋﻼﻣﺖ‪ ،‬ﺗﻌﻴﻴﻦ ﻣﻲﻛﻨﺪ ﻛﻪ آﻳﺎ ﻛﺎدر ﻋﻼﻣﺖ ﺑﻪ وﺳﻴﻠﻪي ﻛﺎرﺑﺮ اﻧﺘﺨﺎب ﺷﺪه‬ ‫اﺳﺖ ﻳﺎ ﻧﻪ و آﻳﺎ اﻳﻦ ﻛﺎدر ﻏﻴﺮﻓﻌﺎل اﺳﺖ؟ ﺟﺪول زﻳﺮ وﺿﻌﻴﺖ ﻛﺎدر ﻋﻼﻣﺖ‪ ،‬ﺑﺎ ﻣﻘﺎدر ﻣﺨﺘﻠﻒ را‬ ‫ﻣﺸﺨﺺ ﻣﻲﻛﻨﺪ‪:‬‬ ‫ﺛﺎﺑﺖ‬

‫ﻣﻘﺪار‬

‫وﺿﻌﻴﺖ‬

‫‪  vbUnchecked‬‬ ‫‪vbChecked‬‬ ‫‪vbGrayed‬‬

‫‪ 0‬‬ ‫‪1‬‬ ‫‪2‬‬

‫‪Unchecked‬‬ ‫‪Checked‬‬ ‫‪Unavailable‬‬ ‫‪ ‬‬

‫ﺑﻪ ﻃﻮر ﭘﻴﺶﻓﺮض ﻛﻨﺘﺮل ﻛﺎدر ﻋﻼﻣﺖ ﺑﺎ ‪ vbUnchecked‬ﻣﻘﺪاردﻫﻲ ﻣﻲﺷﻮد‪ .‬در ﺻﻮرﺗﻲ ﻛﻪ‬ ‫ﻣﻲﺧﻮاﻫﻴﺪ ﺗﻌﺪادي از ﻛﺎدرﻫﺎي ﻋﻼﻣﺖ را از ﻗﺒﻞ اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪ ،‬ﻣﻲﺗﻮاﻧﻴﺪ ﻣﺸﺨﺼﻪي ‪ Value‬آﻧﻬﺎ را در‬

‫ﺻﻔﺤﻪ‪٦٦ :‬‬

1 ‫ ﻳﺎ‬vbChecked ‫ ﺑﺎ‬Form_Activate ،Form_Initialize ،Form_Load ‫روالﻫﺎي‬ .‫ ﻫﻢ زﻣﺎﻧﻲ اﺳﺘﻔﺎده ﻣﻲﺷﻮد ﻛﻪ اﻧﺘﺨﺎب ﻣﺎ ﺷﺮط دار اﺳﺖ‬vbGrayed .‫ﻣﻘﺪاردﻫﻲ ﻛﻨﻴﺪ‬

:‫ﻣﺜﺎلﻫﺎ‬   ‫ﺗﻐﻴﻴﺮ ﻇﺎﻫﺮي ﻟﻴﺒﻞ‬  

  Private Sub chkBold_Click() If  chkBold.Value  =  1  Then  Label1.Font.Bold  =  True  Else  Label1.Font.Bold  =  False   End Sub        

Private Sub chkUnder_Click() If chkUnder.Value = 1 Then  Label1.Font.Underline = True  Else Label1.Font.Underline = False End if End Sub

Private Sub chkIta_Click() If  chkIta.Value  =  1  Then Label1.Font.Italic  =  True  Else  Label1.Font.Italic  =  False   End Sub          

Private Sub chkStrike_Click() If chkStrike.Value = 1 Then Label1.Font.Strikethrough = True Else Label1.Font.Strikethrough = False End if End Sub Private Sub chkNormal_Click() chkBold.Value = 0

٦٧ :‫ﺻﻔﺤﻪ‬

‫‪chkUnder.Value = 0‬‬ ‫‪chkIta.Value = 0‬‬ ‫‪chkStrike.Value = 0‬‬ ‫‪chkNormal.Value = 0‬‬ ‫‪  End Sub‬‬

‫ﮔﺰﻳﻨﻪﻫﺎي ﺑﻴﺸﺘﺮ‬ ‫اﺑﺘﺪا ارﺗﻔﺎع ﻓﺮم را زﻳﺎد ﻣﻲﻛﻨﻴﻢ و ﻛﻨﺘﺮﻟﻬﺎي ﻣﻮردﻧﻈﺮﻣﺎن را در ﺑﺨﺶ اﻧﺘﻬﺎﻳﻲ ﻓﺮم ﻗﺮار ﻣﻲدﻫﻴﻢ‪ .‬ﺣﺎل‬ ‫ﻣﻲﺧﻮاﻫﻴﻢ ﺑﺎ ﻛﻠﻴﻚ روي ﮔﺰﻳﻨﻪي ‪ More Option‬ﮔﺰﻳﻨﻪﻫﺎي ﺑﻴﺸﺘﺮي را ﺑﻪ ﻧﻤﺎﻳﺶ درآورﻳﻢ‪ .‬ﺑﺮاي‬ ‫اﻳﻦ ﻛﺎر از ﺗﻜﻪﻛﺪ زﻳﺮ اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪ .‬اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﻓﻘﻂ ﺟﻨﺒﻪي ﺷﺒﻴﻪﺳﺎزي دارد‪.‬‬

‫‪ ‬‬ ‫)(‪Private Sub MoreOption_Click‬‬ ‫‪If MoreOption.Value = 1 Then‬‬ ‫‪     Form1.Height = Form1.Height + 780‬‬ ‫‪Else‬‬ ‫‪     Form1.Height = 2520‬‬ ‫‪End If‬‬ ‫‪End Sub‬‬

‫‪ ‬‬

‫‪ ‬‬

‫ﻋﺪد ‪ 2520‬ﻣﻮﺟﻮد در ﻣﻘﺎﺑﻞ ‪ Form1.Height‬ﻧﺸﺎندﻫﻨﺪهي ارﺗﻔﺎع ﻓﺮم ﻣﺎ در زﻣﺎن ﻃﺮاﺣﻲ‬ ‫ﻣﻲﺑﺎﺷﺪ‪ .‬ﺣﺎل ﺑﺮﻧﺎﻣﻪ را ﻃﻮري ﺗﻐﻴﻴﺮ دﻫﻴﺪ ﻛﻪ ﺑﻌﺪ از ﻛﻠﻴﻚ ﻛﺮدن روي ‪ MoreOption‬اﻳﻦ ﻛﺎدر‬ ‫ﻋﻼﻣﺖ دﻳﺪه ﻧﺸﻮد و ﮔﺰﻳﻨﻪﻫﺎي زﻳﺮﻳﻦ آن در زﻳﺮ ‪ Match Case‬ﻗﺮار ﺑﮕﻴﺮﻧﺪ )ﺑﺎ ﻓﺎﺻﻠﻪﻫﺎي ﻳﻜﺴﺎن(‪.‬‬ ‫ﻧﻜﺘﻪ‪:‬‬ ‫ﺻﻔﺤﻪ‪٦٨ :‬‬

‫‪ ‬‬

‫در ﻣﺜﺎل ﺑﺎﻻ و در ﻧﺎمﮔﺬاري ﻛﻨﺘﺮل ﻛﺎدر ﻋﻼﻣﺖ از ﭘﻴﺸﻮﻧﺪﻫﺎي ﺳﻪ ﺣﺮﻓﻲ ﻛﻪ ﭼﻜﻴﺪهاي از ﻧﺎم ﻛﻨﺘﺮل‬ ‫ ﺧﻮاﻧﺎﻳﻲ ﺑﺮﻧﺎﻣﻪ را‬،‫ اﻳﻦ ﭘﻴﺸﻮﻧﺪﻫﺎ ﻛﻪ از ﺳﻮي ﻣﺎﻳﻜﺮوﺳﺎﻓﺖ ﺗﻮﺻﻴﻪ ﺷﺪه اﺳﺖ‬،‫ﻣﻲﺑﺎﺷﺪ اﺳﺘﻔﺎده ﻛﺮدﻳﻢ‬ ‫ ﺟﺪول زﻳﺮ اﻳﻦ ﭘﻴﺸﻮﻧﺪﻫﺎ را ﺑﺎ ﻣﺜﺎﻟﻲ ﺗﻮﺿﻴﺢ‬:.‫ﺑﺎﻻ ﻣﻲﺑﺮد و از ﺳﺮدرﮔﻤﻲ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ ﺟﻠﻮﮔﻴﺮي ﻣﻲﻛﻨﺪ‬ :‫داده اﺳﺖ‬ ‫ﭘﻴﺸﻮﻧﺪ‬

‫ﻧﺎم ﻛﻨﺘﺮل‬

‫ﻣﺜﺎل‬

  pic lbl txt frm cmd chk opt cbo lst hsb vsb tmr drv dir fil shp lin img

PictureBox Label TextBox Frame CommandButton CheckBox OptionButton ComboBox ListBox HScrollBar VScrollBar Timer DriveListBox DirListBox FileListBox Shape Line Image

picMonitor lblOutPut txtLastName frmEntry cmdRun chkBold optAgreement cboPersian lstStudents hsbColor vsbSmall tmrAlarm drvTarget dirSource filSource shpCircle linSeparator   imgEEPROM

:‫ﺑﺮﺧﻲ دﻳﮕﺮ از ﭘﻴﺸﻮﻧﺪﻫﺎي ﻣﻌﻤﻮل‬ ‫ﭘﻴﺸﻮﻧﺪ‬

‫ﻧﺎم ﻛﻨﺘﺮل‬

‫ﻣﺜﺎل‬

tlb   tre

  Toolbar Tree view

tbrStandard treCodeHead

٦٩ :‫ﺻﻔﺤﻪ‬

sta rtf prg mnu ils dlg

Status bar Rich text box Progress bar Menu Image list Common dialog

staDateTime rtfReport prgLoadFile mnuFile ilsIcons dlgSave

--------------  Option Button ‫ﻛﻨﺘﺮل‬ ‫ ﺑﺮاي اﻧﺘﺨﺎب ﻳﻚ ﮔﺰﻳﻨﻪ از ﻣﻴﺎن ﭼﻨﺪ‬Option Button ‫ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﮔﻔﺘﻪ ﺷﺪ از دﻛﻤﻪي اﻧﺘﺨﺎب ﻳﺎ‬ ‫ ﺑﻴﺶ از ﻳﻜﻲ از دﻛﻤﻪﻫﺎ اﻧﺘﺨﺎب‬،‫ وﻳﮋوال ﺑﻴﺴﻴﻚ اﺟﺎزه ﻧﻤﻲدﻫﺪ ﻛﻪ در ﻫﺮ ﻟﺤﻈﻪ‬.‫ﮔﺰﻳﻨﻪ اﺳﺘﻔﺎده ﻣﻲﺷﻮد‬ .‫ﺷﻮد‬  

:‫ﻧﻜﺘﻪ‬ ،‫ زﻳﺮا ﻓﻌﺎل ﻛﺮدن آن ﻣﻤﻜﻦ اﺳﺖ‬،‫ﻫﺮﮔﺰ ﻳﻚ دﻛﻤﻪي اﻧﺘﺨﺎب را ﺑﻪ ﺗﻨﻬﺎﻳﻲ روي ﻳﻚ ﻓﺮم ﻗﺮار ﻧﺪﻫﻴﺪ‬ ‫ دﻛﻤﻪﻫﺎي اﻧﺘﺨﺎب ﻓﻘﻂ وﻗﺘﻲ ﻏﻴﺮﻓﻌﺎل‬.‫وﻟﻲ دﻳﮕﺮ اﻣﻜﺎن ﻏﻴﺮﻓﻌﺎل ﻛﺮدن آن وﺟﻮد ﻧﺨﻮاﻫﺪ داﺷﺖ‬ .‫ﻣﻲﺷﻮﻧﺪ ﻛﻪ ﻛﺎرﺑﺮ روي دﻛﻤﻪي دﻳﮕﺮي ﻛﻠﻴﻚ ﻛﻨﺪ‬

:‫ﻣﺜﺎل‬ ‫ﺗﻌﻴﻴﻦ رﻧﮓ ﺑﺮﭼﺴﺐ‬ Private Sub optR_Click() If optR.Value = True Then Label1.ForeColor = vbRed End Sub Private Sub optB_Click() If optB.Value = True Then Label1.ForeColor = vbBlue End Sub Private Sub optG_Click() If optG.Value = True Then Label1.ForeColor = vbGreen   End Sub

٧٠ :‫ﺻﻔﺤﻪ‬

‫‪ ‬‬

‫‪ ‬‬

‫‪  --------------‬‬‫ﻛﻨﺘﺮل ‪  Frame‬‬ ‫در ﻣﺜﺎل ﺑﺎﻻ ﻣﺸﺎﻫﺪه ﻛﺮدﻳﺪ ﻛﻪ در ﻫﺮ ﻟﺤﻈﻪ ﻓﻘﻂ ﻳﻜﻲ از دﻛﻤﻪﻫﺎي اﻧﺘﺨﺎب را ﻣﻲﺗﻮان اﻧﺘﺨﺎب )ﻓﻌﺎل(‬ ‫ﻛﺮد؛ ﺣﺘﻲ اﮔﺮ ﺗﻌﺪاد دﻛﻤﻪﻫﺎي اﻧﺘﺨﺎب ﻣﻮﺟﻮد در ﻳﻚ ﻓﺮم ﺑﻴﺶ از ‪ 100‬ﺗﺎ ﺑﺎﺷﺪ ﺑﺎز ﻓﻘﻂ ﻳﻜﻲ از آﻧﻬﺎ را‬ ‫ﻣﻲﺗﻮان اﻧﺘﺨﺎب ﻧﻤﻮد‪ ،‬وﻟﻲ از ﻧﻈﺮ ﺗﻜﻨﻴﻜﻲ ﻣﻲﺗﻮان در ﻳﻚ ﻟﺤﻈﻪ‪ ،‬روي ﻳﻚ ﻓﺮم ﭼﻨﺪﻳﻦ دﻛﻤﻪي اﻧﺘﺨﺎب‬ ‫ﻓﻌﺎل داﺷﺖ‪ .‬اﻳﻦ ﻛﺎر ﺑﺎ اﺳﺘﻔﺎده از ﻛﻨﺘﺮل ﻓﺮﻳﻢ اﻣﻜﺎنﭘﺬﻳﺮ اﺳﺖ‪ .‬ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﻓﺼﻞ اول ﮔﻔﺘﻪ ﺷﺪ‬ ‫وﻇﻴﻔﻪي اﻳﻦ ﻛﻨﺘﺮل دﺳﺘﻪﺑﻨﺪي ﻇﺎﻫﺮي و ﻣﻨﻄﻘﻲ ﻛﻨﺘﺮلﻫﺎي دﻳﮕﺮ اﺳﺖ‪ .‬ﻓﺮﻳﻢ ﻛﻪ ﺑﻪ آن ﻇﺮف ﻳﺎ‬ ‫‪ Container‬ﻫﻢ ﻣﻲﮔﻮﻳﻨﺪ‪ ،‬ﻣﻜﺎﻧﻲ ﺑﺮاي ﻗﺮار ﮔﺮﻓﺘﻦ ﻛﻨﺘﺮلﻫﺎي دﻳﮕﺮ اﺳﺖ‪.‬‬ ‫ﻧﻜﺘﻪ‪:‬‬ ‫ﺑﻪ ﻳﺎد داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ﻓﺮﻳﻢ ﺑﺎﻳﺪ ﻗﺒﻞ از دﻛﻤﻪﻫﺎي اﻧﺘﺨﺎب روي ﻓﺮم ﻗﺮار داده ﺷﻮد‪.‬‬

‫ﻣﺜﺎلﻫﺎ‪:‬‬ ‫ﺗﻌﻴﻴﻦ رﻧﮓزﻣﻴﻨﻪ و رﻧﮓ ﻗﻠﻢ‬ ‫ﻓﺮﻣﻲ ﺑﻪ ﺷﻜﻞ زﻳﺮ ﻃﺮاﺣﻲ ﻛﻨﻴﺪ!‬

‫ﺣﺎل ﺑﺮاي آﻧﻜﻪ وﻳﮋوال ﺑﻴﺴﻴﻚ ﺑﺘﻮاﻧﺪ ﻣﺘﻮﺟﻪ ﺷﻮد ﻛﻪ ﻳﻚ دﻛﻤﻪي اﻧﺘﺨﺎب ﺑﺎﻳﺪ داﺧﻞ ﻓﺮﻳﻢ ﻗﺮار ﮔﻴﺮد )ﻧﻪ‬ ‫روي ﻓﺮم( ﺑﺎﻳﺴﺘﻲ آن را روي ﻓﺮﻳﻢ رﺳﻢ ﻛﻨﻴﺪ‪ .‬ﺑﺮاي اﻳﻦ ﻛﺎر روي ‪ OptionButton‬در ﺟﻌﺒﻪاﺑﺰار‬ ‫ﺻﻔﺤﻪ‪٧١ :‬‬

‫ را‬OptionButton ‫ ﻳﺎ اﺑﺘﺪا‬،‫ آن را ﺑﻪ اﻧﺪازهي ﻣﻮرد ﻧﻈﺮ رﺳﻢ ﻛﻨﻴﺪ‬،‫ﻛﻠﻴﻚ ﻛﺮده و ﺳﭙﺲ روي ﻓﺮﻳﻢ‬ :‫ آن را درون ﻓﺮﻳﻢ ﻗﺮار دﻫﻴﺪ‬Paste ‫ و‬Cut ‫روي ﻓﺮم ﻗﺮار دﻫﻴﺪ و ﺳﭙﺲ ﺑﺎ اﻧﺠﺎم‬ Private Sub CmdExit_Click()    Unload Me End Sub  

Private Sub Form_Load() Option1.Value = False Option2.Value = False Option3.Value = False Option4.Value = False Option5.Value = False Option6.Value = False End Sub Private Sub Option1_Click() If Option1.Value = True Then Label1.BackColor = vbBlue End Sub Private Sub Option2_Click() If Option2.Value = True Then Label1.BackColor = vbYellow End Sub Private Sub Option3_Click() If Option3.Value = True Then Label1.BackColor = vbWhite End Sub Private Sub Option4_Click() If Option4.Value = True Then Label1.ForeColor = vbRed End Sub Private Sub Option5_Click() If Option5.Value = True Then Label1.ForeColor = vbGreen End Sub ٧٢ :‫ﺻﻔﺤﻪ‬

  Private Sub Option6_Click() If Option6.Value = True Then Label1.ForeColor = vbCyan   End Sub

---------------

‫ﭘﺎﻳﺎن‬ ٧٣ :‫ﺻﻔﺤﻪ‬

Related Documents

Learning Visual Basic 6
November 2019 6
Visual Basic 6
May 2020 10
Curso Visual Basic 6
October 2019 15
Visual Basic 6 Base
October 2019 9
Visual Basic 6
April 2020 10
Capitulo 6 Visual Basic
October 2019 29

More Documents from ""

Visual Basic 6
April 2020 10
Createcalculatorbyvb6
April 2020 1