วันพฤหัสบดีที่ 18 กรกฎาคม พ.ศ. 2556

Visual Basic 6.0 : Exercise 2 " Pizza Order

  Teacher  Phaitoon  Yaemprasuan  :   occupatech@gmail.com                                                                http://picta55.blogspot.com


Exercise 2

Pizza Order Application

 We had just learned about programming with Microsoft Visual Basic 6.0 and tried to create two Windows applications (using Visual Basic 6.0), the first one was "Stop Watch" and the second was "Calendar/Time".  Some people have told me, the teacher, that it is interesting and challenging, while some other people have never said any word but have just thought that it is boring. Yes, the teacher realizes that programming is so valuable because it can develop anyone both systematic thinking and solving. Well, the teacher knows  that anybody can never hand on it if he is not interested in programming. But, now the teaching is not over, the show must go on! 
วกเราได้เรียนรู้เกี่ยวกับการโปรแกรมด้วยภาษาวิชวลเบสิก 6.0  และได้ลองพัฒนาแอ็ปปลิเคชันที่ทำงานในระบบวินโดวส์ 2 แอ็ป ด้วยกัน  โดยแอ็ปแรกเป็นนาฬิกาจับเวลา แอ็ปที่สองเป็นแอ็ปบอกวันเวลา  นักเรียนหลายคนก็บอกกับครูว่า "น่าสนใจและท้าทายมาก"  ขณะที่นักเรียนอีกหลายคนไม่พูดอะไรสักแอ่ะ...คิดอยู่อย่างเดียวว่า "มันน่าเบื่อ"   ใช่เลย..ครูตระหนักดีอยู่เสมอว่า ความจริงแล้วนะ.. การเรียนรู้เรื่องการโปรแกรมมันมีคุณค่าในตัวของมันเองอยู่แล้ว  เพราะมันเป็นการพัฒนาผู้เรียนให้รู้จักการคิด/การแก้ปัญหาอย่างเป็นระบบ  ครู..ทราบดีว่า.. นักเรียนคนไหนก็ตามที่รู้สึกว่าตนเองไม่สนใจในเรื่องของการโปรแกรมแล้วละก็ คงยากนะที่จะเอาดีในเรื่องนี้ได้ ... แต่ช้าก่อน... การเรียนการสอนก็คงหยุดไม่ได้ ... ก็ต้องว่ากันต่อไป..



  "Pizza Order" Application
แอ็ปปลิเคชัน "สั่งพิซซ่า"

     SOURCE  :   www.kidwares.com

1. Start a new project.  We'll build a form where a pizza order can be entered by simply clicking on check boxes and option buttons.
ให้นักเรียนเข้าไปที่หน้าจอหลักของ Microsoft Visual Basic 6.0 เหมือนที่เราเคยทำ ด้วยการเลือก Standard EXE เพื่อสร้าง New project .... อย่าลืม Save นะ  ซึ่งการ Save ครั้งแรก จะเป็น Save As โดยนักเรียนต้อง Save ฟอร์มก่อน แล้วจึง save โปรเจ็กต์ ... เลือก Folder ให้เรียบร้อย  (เรื่องนี้ นักเรียนถูกย้ำมาจนเป็นทักษะดีอยู่แล้วจากครูผู้สอน)  ตอนนี้เรากำลังจะสร้างแอ็ปสั่งพิซซ่า  โดยผู้ใช้ก็แค่ทำการคลิกเลือกตัวเลือก และติ๊กรายการต่างๆ แล้วสั่งการผ่านปุ่มคำสั่ง..

2. Draw three frames.  In the first, draw three option buttons, in the second, draw two option buttons, and in the third, draw six check boxes.  Draw two option buttons on the form.  Add two command buttons.  Make things look something like this.
ให้นักเรียนวาดเฟรม (frame) 3 เฟรม  แล้ววาดปุ่มอ็อปชัน (option button) ใส่ไว้ในเฟรมแรก 3 ปุ่ม  ส่วนเฟรมที่สองวาดปุ่มอ็อปชันใส่ไว้ 2 ปุ่ม  ส่วนเฟรมที่สามวาด check box ใส่ไว้ 6 ช่อง ด้วยกัน  แล้ววาดปุ่มอ็อปชันอีกสองปุ่มใส่ไว้ในฟอร์ม (ดูโซน 4 ประกอบ)  และวาด command button (ปุ่มคำสั่ง) สองปุ่ม (ไว้ในโซน 5)

Fig.1  The Form which is being designed by us.
นี่เป็นฟอร์มที่กำลังได้รับการออกแบบจากนักเรียน



3. Set the properties of the form and each control.
หลังจากออกแบบเสร็จแล้ว ต่อไปนักเรียนต้อง set the properties (ตั้งค่าคุณสมบัติ) ของฟอร์ม และคอนโทรล (control )แต่ละตัว  ดังนี้

 



  • Form1:
    BorderStyle    1-Fixed Single
    Caption          Pizza Order
    Name            frmPizza
  • Frame1:
    Caption    Size

  • Frame2:
    Caption    Crust Type

  • Frame3
    Caption    Toppings


  • Option1:
    Caption    Small
    Name      optSize
    Value      True

  • Option2:
    Caption    Medium
    Name      optSize (yes, create a control array)

  • Option3:
    Caption    Large
    Name      optSize

  • Option4:
    Caption    Thin Crust
    Name       optCrust
    Value       True

  • Option5:
    Caption    Thick Crust
    Name       optCrust (yes, create a control array)

  • Option6:
    Caption    Eat In
    Name    optWhere
    Value    True

  • Option7:
    Caption    Take Out
    Name       optWhere (yes, create a control array)

  • Check1:
    Caption    Extra Cheese
    Name      chkTop

  • Check2:
    Caption    Mushrooms
    Name       chkTop (yes, create a control array)

  • Check3:
    Caption    Black Olives
    Name       chkTop


  • Check4:
    Caption    Onions
    Name      chkTop

  • Check5:
    Caption    Green Peppers
    Name      chkTop

  • Check6:
    Caption    Tomatoes
    Name      chkTop

  • Command1:
    Caption    &Build Pizza
    Name      cmdBuild

  • Command2:
    Caption    E&xit
    Name      cmdExit





4. Declare the following variables in the general declarations area:
ให้นักเรียนเลือก View/Code   แล้วพิมพ์ Source codes ในส่วนของ  general declarations (ส่วนประกาศทั่วไป)     เพื่อประกาศตัวแปร (to declare the variables) 3 ตัว เป็นตัวแปรชนิด String (เก็บข้อมูลที่เป็นข้อความ)  ได้แก่  PizzaSize (เก็บข้อมูลขนาดของพิซซ่าที่ลูกค้าสั่ง),  PizzaCrust (เก็บข้อมูลว่า ลูกค้าสั่งพิซซ่าที่มีขอบบางหรือหนา),   PizzaWhere (เก็บข้อมูลว่า พิซซ่าที่ลูกค้าสั่งนั้น จะกินที่ร้าน หรือแพ็กห่อ)

    Option Explicit
      Dim PizzaSize As String
      Dim PizzaCrust As String
      Dim PizzaWhere As String




5. Attach this code to the Form_Load procedure.  This initializes the pizza size, crust, and eating location.
ให้นักเรียนผูกโค้ด (attach code) เข้ากับฟอร์ม  (โดยการทำดับเบิลคลิกที่ฟอร์ม  ก็จะเข้าสู่โมดูล หรือโพรซิเยอร์ (procedure) ที่ชื่อ Form_Load แล้วนักเรียนก็ใส่โค้ดเข้าไป  บรรดาโค้ดตรงนี้ จะเป็นการกำหนดค่าเริ่มต้น (initialization) ให้กับตัวแปรทั้งสามตัว ที่เราประกาศไว้ คือ PizzaSize, PizzaCrust และ PizzaWhere

Private Sub Form_Load()
  PizzaSize = "Small"
  PizzaCrust = "Thin Crust"
  PizzaWhere = "Eat In"
End Sub




6.  Attach this code to the three option button array Click events.  Note the use of the Index variable:
ให้นักเรียน attach code เข้ากับปุ่มอ็อปชันในแต่ละเฟรม (โดยดับเบิลคลิกที่ปุ่มอ็อปชันใดๆ ในเฟรมนั้น แล้วใส่โค้ด)


Private Sub optSize_Click(Index As Integer)
[ดับเบิลคลิกที่ปุ่ม optSize (ใดก็ได้ในสามปุ่ม ของโซน 1) แล้วใส่โค้ดข้างล่างนี้เข้าไป ]
  PizzaSize = optSize(Index).Caption
  (โค้ดนี้ จะให้อ่านค่า จำนวนเต็ม 0, 1 หรือ 2 ซึ่งแทนขนาดเล็ก กลาง ใหญ่  ของขนาดถาดพิซซ่า เอาค่าไปเก็บไว้ในตัวแปร PizzaSize)
End Sub

Private Sub optCrust_Click(Index As Integer)
[ดับเบิลคลิกที่ปุ่ม optCrust (ใดก็ได้ในสองปุ่ม ของโซน 2) แล้วใส่โค้ดข้างล่างนี้เข้าไป ] 
  PizzaCrust = optCrust(Index).Caption
  (โค้ดนี้ จะให้อ่านค่า จำนวนเต็ม 0 หรือ 1 ซึ่งแทนขอบพิซซ่า อย่างบาง หรืออย่างหนา  เอาค่าไปเก็บไว้ในตัวแปร PizzaCrust)
End Sub


Private Sub optWhere_Click(Index As Integer)
[ดับเบิลคลิกที่ปุ่ม optWhere (ใดก็ได้ในสองปุ่ม ของโซน 4) แล้วใส่โค้ดข้างล่างนี้เข้าไป ] 
   PizzaWhere = optWhere(Index).Caption
    (โค้ดนี้ จะให้อ่านค่า จำนวนเต็ม 0 หรือ 1 ซึ่งแทนว่าจะกินพิซซ่าที่ไหน กินที่ร้าน หรือนำกลับบ้าน  เอาค่าไปเก็บไว้ในตัวแปร PizzaWhere)
End Sub



7. Attach this code to the cmdBuild_Click event.
ให้นักเรียน attach code ต่อไปนี้  เข้าไปที่ปุ่มคำสั่ง cmdBuild

Private Sub cmdBuild_Click()
  Dim Message As String
  Dim I As Integer
  Message = PizzaWhere + vbCr
  Message = Message + PizzaSize + " Pizza" + vbCr
  Message = Message + PizzaCrust + vbCr
        For I = 0 To 5
  If chkTop(I).Value = vbChecked Then Message = Message + chkTop(I).Caption + vbCr
      Next I
      MsgBox Message, vbOKOnly, "Your Pizza"
End Sub


This code forms the first part of a message for a message box by integrating the pizza size, crust type, and eating location (vbCr is a symbolic constant representing a ‘carriage return’ that puts each piece of ordering information on a separate line).  Next, the code cycles through the six topping check boxes and adds any checked information to the message.  The code then displays the pizza order in a message box.
โค้ดในส่วนนี้ จะทำการสร้าง message ในลักษณะของ message box  ที่จะบูรณาการเอา ขนาดของพิซซ่า  ขอบหนาหรือบาง และจะกินที่ร้านหรือแพ็กกล่อง (vbCr คือ symbolic constant หรือค่าคงที่ ในภาษาวิชวลเบสิกที่หมายถึงการสั่งให้ขึ้นบรรทัดใหม่ หรือ carriage return ก็คือ "การปัดแคร่" ซึ่งขอยืมศัพท์ของพิมพ์ดีดมาอีกทีนั่นเอง)



8.  Attach this code to the cmdExit_Click event.
ผูกคำสั่ง End เข้ากับปุ่มคำสั่ง cmdExit
Private Sub cmdExit_Click()
  End
End Sub




9.  Run the application, the message box will be appeared.
เมื่อรันโปรแกรม ก็จะได้ application ที่มี user interface แบบนี้



The Application User Interface
นี่คือหน้าตาของแอ็ปปลิเคชันของเรา



Message Box
เม็ซเสซบ็อกซ์ที่ได้

วันเสาร์ที่ 13 กรกฎาคม พ.ศ. 2556

FacebookDC.

Facebook Data Center ศุนย์ข้อมูลของเฟซบุ๊ก

                  Teacher Phaitoon  Yaemprasuan  :  http://picta55.blogspot.com
   
                SOURCE  :  http://www.bigpicture.ru


At the edge of the Arctic Circle in Lulea (Sweden) is the newest data center Facebook. The Center handles data about users of social networks around the world. 
 ชายขอบของเส้น Arctic Circle  (เขตอากาศหนาวเหนือ ตั้งแต่เส้นอาร์คติค เซอร์เคิล (Arctic Circle) ถึงขั้วโลกเหนือ เขตนี้ได้รับแสงเฉียงจากดวงอาทิตย์ปีละไม่เกิน 6 เดือน เป็นเขตที่มีประชากรอาศัยอยู่เบาบาง)  เมือง Lulea  ประเทศ Sweden เป็นศูนย์ข้อมูลแห่งใหม่ของ Facebook  ศูนย์ข้อมูลแห่งนี้เก็บข้อมูลของผู้ใช้เครือข่ายสังคอมออนไลน์จากทั่วโลก  (น่าจะรวมเด็กนักเรียนของเราด้วยแน่นอน เพราะเด็กเราชอบและใช้ Facebook กันมหึมามหาศาล จนอาจจะเรียกได้ว่า เป็นกิจวัตรประจำวันไปซะแล้ว)

BIGPIC26 Центр обработки данных Facebook возле Полярного круга 


FBDataCenter01 Центр обработки данных Facebook возле Полярного круга
1. Data center in Lulea became the first data center outside of the U.S..
ศูนย์ข้อมูลแห่งนี้ เป็นศูนย์ข้อมูลแห่งแรกของ Facebook นอกประเทศสหรัฐอเมริกา

FBDataCenter02 Центр обработки данных Facebook возле Полярного круга
2.
FBDataCenter03 Центр обработки данных Facebook возле Полярного круга
3. Facebook Guide believe that Lulea is likely to be one of the most efficient and sustainable data centers in the world.
Facebook เชื่อว่า ศูนย์แห่งนี้จะมีทรงสิทธิภาพ และเก็บข้อมูลได้อย่างยั่งยืนสุดๆ

FBDataCenter04 Центр обработки данных Facebook возле Полярного круга
4.
FBDataCenter05 Центр обработки данных Facebook возле Полярного круга
5. All the equipment in the center provides electricity to the local hydroelectric power plant that runs on renewable energy, thus reducing the number of backup generators for more than 70%.
อุปกรณ์ทั้งหมดในศูนย์แห่งนี้ จะใช้ไฟฟ้าจากพลังงานสะอาด คือจากโรงไฟฟ้าพลังน้ำที่อยู่ในท้องถิ่น ซึ่งเป็น renewable energy (พลังงานหมุนเวียน)  จึงสามารถลดจำนวนเครื่องกำเนิดไฟฟ้าสำรอง (backup generators) ได้ถึงร้อยละ 70

FBDataCenter06 Центр обработки данных Facebook возле Полярного круга
6.
FBDataCenter07 Центр обработки данных Facebook возле Полярного круга
7. In addition to the energy of the water, the center is also used by the northern cold air to cool the servers that store photos, videos, comments and "likes." Any excess heat is used to maintain a comfortable temperature in offices. 
นอกจากพลังงานสะอาดที่ได้จากไฟฟ้าพลังน้ำแล้ว  ศูนย์ข้อมูลแห่งนี้ ก็ยังอาศัยอากาศหนาวที่พัดมาจากขั้วโลกเหนือช่วยระบายความร้อนจากเครื่อง Servers (เครื่องแม่ข่าย) ของศูนย์ฯ ที่เก็บรูปภาพ วิดีโอ และ comments และ likes ของผู้ใช้เฟสบุ๊คจากทั่วโลก  และที่สำคัญความร้อนที่เกิดจากการทำงานของระบบเหล่านี้ จะถูกนำไปสร้างความอบอุ่นในสำนักงานอีกด้วย (เพราะอากาศที่โซนนี้หนาวมากนั่นเอง ตามที่กล่าวแล้ว)
FBDataCenter08 Центр обработки данных Facebook возле Полярного круга
8.
FBDataCenter09 Центр обработки данных Facebook возле Полярного круга
9. Almost all of the technology at the center, from servers to power distribution systems, based on the work of Open Compute Project - community of engineers from around the world, which is engaged in designing storage centers.
เทคโนโลยีของศูนย์ข้อมูลแห่งนี้  ตั้งแต่เครื่องคอมพิวเตอร์แม่ข่าย (servers) ทั้งหลาย ไปจนถึงระบบการกระจายข้อมูล (distribution systems) จะทำงานอยู่บน Open Compute Project ซึ่งเป็นระบบเปิดที่ให้วิศวกรของระบบเฟสบุ๊กจากพื้นที่ต่างๆ ทั่วโลก สามารถเข้ามาใช้งานร่วมกันได้  

FBDataCenter10 Центр обработки данных Facebook возле Полярного круга
10.
FBDataCenter11 Центр обработки данных Facebook возле Полярного круга
11. 


FBDataCenter12 Центр обработки данных Facebook возле Полярного круга
12.
FBDataCenter13 Центр обработки данных Facebook возле Полярного круга
13. 


FBDataCenter14 Центр обработки данных Facebook возле Полярного круга
14.
FBDataCenter15 Центр обработки данных Facebook возле Полярного круга
15. During the first week of work, the coefficient of efficiency of energy consumption in the new center Facebook was 1.07.
ในสัปดาห์แรกของการใช้งาน the coefficient of efficiency of energy (ค่าสัมประสิทธิ์การบริโภคพลังงาน) เท่ากับ 1.07

FBDataCenter16 Центр обработки данных Facebook возле Полярного круга
16.
FBDataCenter17 Центр обработки данных Facebook возле Полярного круга
17.
FBDataCenter18 Центр обработки данных Facebook возле Полярного круга
18. The inscription on the wall of the center: "What would you do if you have nothing to be afraid of?"
คำจารึกที่ผนังกำแพงของศูนย์ "คุณจะทำอะไรดีเอ่ย ถ้าไม่มีอะไรที่ทำให้คุณกลัว?"

FBDataCenter19 Центр обработки данных Facebook возле Полярного круга
19.
FBDataCenter20 Центр обработки данных Facebook возле Полярного круга
20. Center Manager - Joel Kelgren.  ผู้จัดการศูนย์

GoogleDC

Google Data Centers ศูนย์ข้อมูลของ Google

          Teacher Phaitoon  Yaemprasuan  :  http://www.picta55.blogspot.com

                          SOURCE  :  http://www.bigpicture.ru

Google has provided us with a rare opportunity to see their data centers around the world, thanks to which every day we can use the services of this global Internet company. This is a real maze of servers that handle online queries into a search engine, show us a video on YouTube, and deliver emails to millions of people. Hundreds of thousands of servers, colorful cables and even bicycles to move the employees of the centers - in this collection you will find and data centers in the former paper mill in Finland, and specially designed server centers in Iowa, USA. 
โอกาสที่ Google จะยอมให้เราเห็นศูนย์ข้อมูลของพวกเขาในหลายๆ แห่งทั่วโลกนั้น ไม่ใช่เรื่องที่ง่ายเลย  เครื่องคอมพิวเตอร์แม่ข่าย (servers) ทั้งหลายที่ตอบสนองการร้องขอของผู้คนที่ออนไลน์ทั่วโลก ไม่ว่าจะเป็น Search Engine (เครื่องมือค้นหาข้อมูล Google)  บริการวิดีโอของ Youtube และการให้บริการ Gmail  ต้องใช้เครื่องคอมพิวเตอร์แม่ข่ายหลายแสนเครื่อง


Inside the internet 1 Дата центры Google
1. Few people have seen data centers Google, and for good reason, because the most important - is the security of our data.Therefore, each center is carefully protected.
เหตุผลเรื่องความปลอดภัย เราจึงไม่ค่อยได้เห็นศูนย์ข้อมูลของกูเกิล

Inside the internet 2 Дата центры Google
2. Despite the large number of Google employees around the world, only a handful of insiders has access to the servers.
แม้จะเป็นพนักงานของกูเกิลที่มีมากมายทั่วโลก  ก็คงเป็นแค่คนวงในไม่กี่คนที่สามารถเข้าถึงเครื่องแม่ข่ายได้

Inside the internet 3 Дата центры Google
3. Now you can see the first images which capture the people, places and equipment, through which runs Google. 
ภาพแรกๆ ที่เราเห็นจะทำการจับภาพผู้คน ตำแหน่งที่อยู่ และอุปกรณ์ ซึ่งจะรันผ่านกูเกิล


Inside the internet 4 Дата центры Google
4. In this post photos provided eight data centers in the U.S., Finland and Belgium. 
ศูนย์คอมพิวเตอร์ของกูเกิล  8 ศูนย์ ในสามประเทศคือ สหรัฐอเมริกา  ฟินแลนด์ และเบลเยียม


Inside the internet 5 Дата центры Google
5. Now Google is also building data centers in Hong Kong, Taiwan, Singapore and Chile.
กูเกิลยังมีศูนย์ข้อมูลที่ฮ่องกง  สิงคโปร์  ไต้หวัน และประเทศชิลี อีกด้วย (สังเกตว่า พวกเขาใช้จักรยานปั่นไปหาจุดต่างๆ ขืนเดินไปคงไม่ไหว เพราะมันคงกว้างขวาง เสียเวลากว่าจะไปถึง)

Inside the internet 6 Дата центры Google
6. Surprise! Hmm, so this is what the guards in the data centers Google.
นี่เป็นการ์ดเฝ้าศุนย์ข้อมูลของกูเกิลเขาล่ะนะ

Inside the internet 7 Дата центры Google
7.Takzhe to share Google's 'Street View' you can take a virtual tour of the data center in North Carolina.
ศูนย์ที่มลรัฐนอร์ธแคโรไลนา

Inside the internet 8 Дата центры Google
8. One of the many server data center in Iowa, USA, where the routes and switches allow data centers to communicate with each other. Fiber-optic cable connecting the server mounted on the ceiling.
ศุนย์ที่มลรัฐไอโอวา  สายใยแก้วนำแสง (Fiber-optic cable) ที่มาเชื่อมต่อกับเครื่องแม่ข่ายนั้น ห้อยลงมาจากเพดานหลังคา

Inside the internet 9 Дата центры Google
9. Even the lines in the centers painted in company colors Google. For these colorful water pipes travels around the center in Oregon. Blue pipes supply cold water, red - hot water is returned to a special chamber that it has cooled down.
ศุนย์ที่มลรัฐโอเรกอน  จะสังเกตว่า สีของท่อต่างๆ จะใช้สีของกูเกิลเป็นสัญลักษณ์  ท่อน้ำสีน้ำเงินเป็นน้ำเย็น นำไประบายความร้อนออกมาจากระบบ  แล้วส่งกลับเป็นน้ำร้อนมาตามท่อน้ำสีแดง (ระบบระบายความร้อน ทำนองเดียวกับเครื่องรถยนต์นั่นแหละ)

Inside the internet 10 Дата центры Google
10. In Hamina, Finland, Google has decided to restore the old paper mill and stay on its territory, not far from the cool waters of the Gulf of Finland.
นี่เป็นศูนย์ข้อมูลของกูเกิลในประเทศฟินแลนด์ อาศัยโรงงานกระดาษเดิมมาดัดแปลง (ฟินแลนด์เป็นประเทศยักษ์ใหญ่ของโลกในการผลิตกระดาษจากไม้สน)

Inside the internet 11 Дата центры Google
11. Google server center in Douglas, Iowa.  
ที่มลรัฐไอโอวา

Inside the internet 12 Дата центры Google
12. This server facility in The Dalles, Oregon, USA.
ที่มลรัฐโอเรกอน

Inside the internet 13 Дата центры Google
13. Dennis Harwood, an engineer Google, diagnoses overheated processor. For more than 10 years, Google has built some of the world's most powerful servers.
วิศวกรของกูเกิลกำลังตรวจหาสาเหตุที่หน่วยประมวลผลมีความร้อนเกิดขึ้นสูงเกินไป (Overheated)

Inside the internet 14 Дата центры Google
14. Google data center in Council Bluffs, Iowa, USA.
ศูนย์ที่มลรัฐไอโอวา

Inside the internet 15 Дата центры Google
15. Each server has four interfaces, marked by lines of different colors. The colors in all centers of Google standard that facilitates the work during equipment maintenance.
เครื่องแม่ข่ายแต่ละตัว จะมีช่องทางการติดต่อ (Interface) 4 ช่องสัญญาณที่เป็นสีต่างกัน ก็คือสีสัญลักษณ์ของกูเกิลนั่นแหละ

วันอังคารที่ 2 กรกฎาคม พ.ศ. 2556

Programming (การโปรแกรม) with Visual Basic 6.0

What is Visual Basic?

วิชวลเบสิกคืออะไร


   by Teacher  Phaitoon  Yaemprasuan
     picta55@gmail.com
     occupatech@gmail.com
     http://picta55.blogspot.com

  Visual Basic is a tool that allows us to develop Windows (Graphic User Interface - GUI) applications.  The applications have a familiar appearance to the user.
วิชวลเบสิก เป็นเครื่องมือของเราในการสร้างแอ็ปปลิเคชัน (โปรแกรมประยุกต์) ที่ทำงานภายใต้ระบบปฏิบัติการ Windows ซึ่งแอ็ปปลิเคชันที่ได้จะมีรูปแบบการติดต่อกับผู้ใช้เป็นกราฟิก (GUI : Graphic User Interface)

 Visual Basic is event-driven, meaning code remains idle until it is called upon to respond to some event (e.g. mouse clicking, button pressing, menu selection, ...).  Nothing happens until an event is detected.  Once an event is detected, the code corresponding to that event (event procedure) is executed.  

วิ ชวลเบสิก จะใช้ Event (เหตุการณ์) เป็นตัวขับเคลื่อนคำสั่ง (event-driven)  หมายความว่า โค้ดของโปรแกรม จะยังไม่ทำอะไร (idle) จนกว่ามันจะถูกเรียกให้ตอบสนองต่อ event  (เช่น การคลิกเมาส์  การกดปุ่ม  การเลือกเมนู  ฯลฯ)  นั่นคือ จะไม่มีอะไรเกิดขึ้นจนกว่า event จะถูกตรวจพบ  เมื่อนั้นแหละ code ของโปรแกรมก็จะตอบสนองต่อ event นั้นๆ  ในลักษณะของโปรแกรมย่อยๆ หรือโมดุล (event procedure)
 

 How to program with Visual Basic?
จะโปรแกรมด้วยวิชวลเบสิกอย่างไร
 

Steps in Developing Application 
ขั้นตอนการพัฒนาแอ็ปปลิเคชัน

There are three primary steps involved in building a Visual Basic application:
มีขั้นตอนหลักๆ 3 ขั้นตอน ที่เกี่ยวข้องกับการสร้างแอ็ปปลิเคชันด้วยวิชวลเบสิก
1.    Draw the user interface  ออกแบบส่วนติดต่อกับผู้ใช้
2.    Assign properties to controls  กำหนดคุณสมบัติให้กับคอนโทรล
3.    Attach code to controls  ผูกติด code เข้ากับคอนโทรล


Stop Watch Application
โปรแกรมจับเวลา


1 At the "Start-up Menu" of our Windows Desktop, let's find where "Microsoft Visual Studio 6.0" is, and click on it. Then we can see some shortcuts to the applications of the software suite, and "Microsoft Visual Basic6.0" is one of them and it is also our "target software" right now, let's select it.
ณ  สตาร์ทอัพเมนู ที่หน้าเดสต์ท็อปของระบบวินโดวส์  นักเรียนลองหาเมนู Microsoft Visual Studio 6.0  และคลิกเมาส์เลือก  เรา จะเห็นช็อตคัตของแอปปลิเคชันต่างๆ ที่รวมกันอยู่ในซอฟต์แวร์ชุดนี้ รวมถึง Microsoft Visual Basic6.0 ซึ่งเป็นซอฟต์แวร์เป้าหมายที่เราจะใช้ในงานนี้แหละ  เราก็เลือกซะนะ

At the "Start-up Menu of Windows", Find where the "Microsoft Visual Basic 6.0" is.
ณ สตาร์ทอัพเมนูของระบบวินโวส์  ให้หาว่า Microsoft Visual Basic 6.0 อยู่ไหน






2 We now at the main screen of Visual Basic 6.0 with its "New Project" window. Let's click on the "New" tab and select "Standard EXE" icon.
 ตอน นี้เราก็มาอยู่ ณ หน้าจอหลักของ Visual Basic 6.0 ซึ่งมีหน้าต่าง New Project โชว์อยู่  ให้เราเลือกแท็บ New และสัญรูป Standard EXE 
Select the "Standard EXE" icon  ให้นักเรียนเลือกสัญรูป Standard EXE

3 Before we go on, let's consider the components of the toolbar of Visual Basic 6.0.  Properties window, Run and Save project are what we have to focus on now.
ก่อนอื่น ขอให้เราลองพิจารณาแถบเครื่องมือของ Visual Basic 6.0 กันก่อน  Properties window, Run, Save project เป็นอะไรที่เราจะต้องโฟกัสออนกันก่อนตอนนี้

Design View of Visual Basic 6.0   มุมมองในโหมดออกแบบของวิชวลเบสิก

4 Controls are the genius tools that can be attached by any codes that can control any events such as clicking mouse or pressing key. Now the "Command Button" and the "Label" are the controls that we are going to use.
คอนโทรล เป็นเครื่องมืออัจฉริยะ ที่สามารถจะนำเอาโค้ดคำสั่งมาผูกติด ทำให้สามารถควบคุมเหตุการณ์ได้ อาทิ  การคลิกเมาส์  หรือการกดแป้นพิมพ์  ตอนนี้คอนโทรลที่เรากำลังจะใช้งานก็คือ Command Button และ Label

Controls of Visual Basic 6.0   คอนโทรลต่างๆ ของวิชวลเบสิก 6.0

5 Visual Basic programming begins with a form which has been named "Form1" by default. Visual Basic form simulates itself as platform which can receive many kinds of objects that created by the controls. Any object has its properties that has been shown in the properties window.
การ โปรแกรมด้วยภาษาวิชวลเบสิกนี้ จะเเริ่มจาก Form ซึ่งโปรแกรมจะกำหนดชื่อให้ก่อนเลยว่า Form1 (เราสามารถเปลี่ยนชื่อได้)  ฟอร์มของวิชวลเบสิกจะจำลองตัวมันเองเป็นเสมือนแพล็ตฟอร์ม ที่สามารถจะรองรับวัตถุหรืออ็อบเจ็กต์ที่สร้างจากคอนโทรล (ด้านซ้าย)  และวัตถุนั้นมันจะมีคุณสมบัติหรือพร็อพเพอร์ตีส์ของตัวมันเอง โดยจะแสดงให้เราเห็นในหน้าต่างพร็อพเพอร์ตีส์ (ด้านขวา)

Form and Controls are variety kinds of object of Visual Basic that have their own properties.
Form และ Controls เป็นอ็อบเจ็กต์(วัตถุ) ที่หลากหลายของ Visual Basic ที่มี properties ของตนเอง
6 Here we go on creating a design job like the following picture.  
    -  Using the "Command Button" control to draw the three sequence command buttons, Command1, Command2 and Command3. 
   -  Using the "Label" control to draw the six sequence labels, Label1,
Label2, Label3, Label4, Label5 and Label6 
ให้นักเรียนลงมือสร้างงานออกแบบ ตามรูปด้านล่างนี้เลยนะ
   -  โดยการใช้คอนโทรล Command Button วาดปุ่มคำสั่งขึ้นมาสามปุ่มตามลำดับ
   -  โดยการใช้คอนโทรล Label  วาดอ็อบเจ็กต์ต่อเนื่องกัน รวม 6 เลเบิล

Form1 would have three command buttons and six labels now.
Form 1 ที่เราออกแบบนี้ก็จะมีปุ่มคำสั่ง (command button) 3 ปุ่ม  และมีฉลาก (label) รวม 6 ฉลาก  


7 Click on "Form1", we can see its properties, rename it with "frmStopWatch" (frm is a pefix which comes from "form"). And change its caption to "Stop Watch Application".
คลิ กที่อ็อบเจ็กต์ Form1 เราจะเห็น properties ของมันอยู่ทางด้านขวา  ให้เราปรับเปลี่ยนชื่อ (name) ของมันใหม่เป็น "frmStopWatch" (frm เป็นคำนำหน้าชื่อ มาจาก form นั่นเอง)  และปรับเปลี่ยน Caption (คำอธิบายอ็อบเจ็กต์) ให้เป็น "Stop Watch Application"

Form1 Properties Configurations  การตั้งค่าคุณสมบัติของอ็อบเจ็กต์ Form1


8 Click on "Command1", yes we are about to specify the properties of this object. Rename it with "cmdStart" (cmd is a prefix which comes from "command button") and also refill its caption with "&Start Timing" (& is a prefix of the key letter that a user can press on this key together with the "alt" key instead of click on this command button). 
คลิ กปุ่ม Command1 เพื่อเปลี่ยนคุณสมบัติ  โดยให้ชื่อใหม่ว่า cmdStart (cmd เป็นคำนำหน้า มาจาก Command Button)  และเปลี่ยน Caption ให้เป็น "&Start Timing" (& นำหน้าตัวอักษรสำคัญที่จะบอกผู้ใช้ให้รู้ว่า เขาสามารถกดคีย์นี้ร่วมกับคีย์"alt"ที่คีย์บอร์ด เพื่อใช้งาน command button แทนการคลิกเมาส์ได้).


Change the properties of the command button :  name and caption
ให้นักเรียนเปลี่ยนชื่อ และแค็ปชันของปุ่มคำสั่ง

9 Do it the same way as the previous step. ทำเหมือนขั้นตอนที่แล้ว
Change the properties of the command button :  name and caption


10 Do it the same way as the previous step.ทำเหมือนขั้นตอนที่แล้ว

Change the properties of the command button :  name and caption


11  Change only the captions of Label1, Label2 and Label3 according to the following picture. ให้ เปลี่ยนเฉพาะ Caption ของทั้งสาม Labels เท่านั้น  ไม่ต้องเปลี่ยนชื่อ (เนื่องจากเป็นแค่ป้ายกำกับเท่านั้น ไม่ได้เกี่ยวข้องกับการกำหนดโค้ดโปรแกรม)

Change the properties of the three labels :   captions  เปลี่ยนแค่แค็ปชันของสามเลเบิลแรก

12  Change the properties of the other last three labels, "Label4", "Label5" and "Label6" by renaming them to "lblStart", "lblEnd" and "lblElapsed" and erase their captions until they are blank.
เปลี่ยน properties ของ Label4, Label5, Label6 โดยเปลี่ยนชื่อเป็น lblStart, lblEnd, lblElapsed  และลบ captions ของทั้งสามเลเบิลออกจนว่างเปล่าทั้งหมด

Change the properties of Label4, Label5 and Label6 according to the picture. 
เปลี่ยนชื่อของสามเลเบิลท้าย  และเคลียร์แค็ปชันให้ว่าง (blank)
13  Now we have just already designed and configured all of related objects, the next step of us is coding our program. Let's click on the menu-bar at the "View" command tab, then select the "Code" sub-command, the view-code window will show up. Yes, we are going to enter our source codes of our application here.
มา ถึงตอนนี้ เราก็ได้ทำการออกแบบ และกำหนดคุณสมบัติต่างๆ ให้กับอ็อบเจ็กต์ต่างๆ ที่เกี่ยวข้องไปเรียบร้อยแล้ว  ขั้นตอนต่อไปของเราก็คือ การใส่โค้ดให้กับโปรแกรมของเรา  ให้นักเรียนคลิกไปที่แท็บคำสั่ง View ของแถบเมนู  จากนั้นให้เลือกคำสั่งย่อย Code  หน้าต่างโค้ดก็จะปรากฏขึ้น  ใช่เลย เราจะป้อนซอร์สโค้ดโปรแกรมของเราตรงนี้แหละ

Click on the "View" command at the menu bar, then select "Code" subcommand
14  The first set of source codes is about the declarations. There will be the "(General)" at the left-top of the view-code window and the "(Declarations)" at the right-top. We have to type four lines of our following source codes.
ซอร์สโค้ดกลุ่มแรก เป็นโค้ดที่เกี่ยวข้องกับการประกาศตัวแปร  นักเรียนจะเห็นว่ามี (General) อยู่ที่หัวข้อด้านซ้าย  และ (Declarations) อยู่ที่หัวข้อด้านขวา

        1st Line is about the General Declaration  เป็นคำประกาศทั่วไป
        2nd Line is the Declaration of variable "StartTime"  ประกาศตัวแปรเพื่อรับค่าเวลาเริ่มต้น
        3rd Line is
the Declaration of variable "EndTime" ประกาศตัวแปรเพื่อรับค่าเวลาที่หยุด
        4th Line is the Declaration of variable "ElapsedTime"
ประกาศตัวแปรเพื่อรับค่าเวลาที่ใช้ไป
15  This step is about attaching our source code to a control object. The "cmdStart" is a command button we are going to attach the source code. Let's double click on this command button, yes, this action could bring us to a module or subprogram that could be driven by an event, _click ( ), that means this subprogram could work when this command button was clicked on.
ขั้น ตอนนี้ จะเป็นการผูกซอร์สโค้ดโปรแกรมของเราไว้กับปุ่มคำสั่ง cmdStart  ให้นักเรียนดับเบิลคลิกที่ปุ่มคำสั่งนี้ (เมื่อเราอยู่ในมุมมอง Object)  จากนั้นจะพาเราเข้าสู่ห้วงของโมดุลหรือโปรแกรมย่อย  ซึ่งโปรแกรมย่อยหรือโมดลที่ว่านี้ จะถูกขับเคลื่อนโดยเหตุการณ์ (event-driven)  ซึ่ง ณ ที่นี้ก็คือ " _click ( )" การคลิกเมาส์ของผู้ใช้โปรแกรมนั่นเอง 
 What is about this source code?  It begins with assigning the recent time value (Now) to the variable "StartTime".  Then the method "Caption" stipulates that the label "lblStart" can show up data from the variable "startTime" with the "hh:mm:ss:" format.
ซอร์ส โค้ดนี้มันคืออะไรหรือ?  โค้ดจะเริ่มจากการกำหนดให้ตัวแปร StartTime เอาค่า Now คือเวลาปัจจุบันไปเก็บไว้  ต่อจากนั้นโค้ดก็จะมีวิธีการ (Method) ที่ชื่อว่า Caption  เป็นตัวกำหนดรูปแบบการแสดงค่าของเวลา โดยเอาค่าที่เก็บไว้ในตัวแปร StartTime นั้นมาแสดงผลเวลาในเลเบิล lblStart
 
Attach code to the command button "cmdStart"
ผูกโค้ดเข้ากับปุ่มคำสั่ง "cmdStart"

16  This step is similar to the previous but it turns to the "cmdEnd" command button. But it creates the expression which assigns the variable "ElapsedTime" with the difference of the variable "EndTine" and the variable "StartTine".
ใน ขั้นตอนนี้ ก็คล้ายกับขั้นตอนที่ผ่านมา  แต่จะมีการสร้างนิพจน์คำนวณค่าส่วนต่างของเวลา ระหว่่างตัวแปร EndTime และตัวแปร StartTime และนำไปเก็บไว้ในตัวแปร ElapsedTime
 
Attach code to the command button "cmdEnd"
ผูกโค้ดเข้ากับปุ่มคำสั่ง "cmdEnd"

17  This is the end of application with the only amazing word "End"
Attach code to the command button "cmdExit"
ผูกโค้ดเข้ากับปุ่มคำสั่ง "cmdExit"


18  Congratulation to our tough project!. This is the output of our input and process. Yes, it is the "Stop Watch Application" of us.  
ขอ แสดงความยินดีกับโครงงานสุดหินนะนักเรียน  นี่คือผลที่ได้ จากการสร้างและป้อน  ประมวลผล  จนได้แอ็ปปลิเคชันนาฬิกาจับเวลา หน้าตาแบบนี้แหละน้า

Our Graphic User Interface Application :  "Stop Watch"
แอ็ปปลิเคชันของเราที่มีรูปแบบการติดต่อกับผู้ใช้เป็นกราฟิก (GUI)
19  We have to make our project to an independent application.  Click on the "File" command at the menubar then select the "Make..to..EXE" subcommand.  
เรา ต้องทำให้โปรเจ็กต์ (โครงงาน) ของเราที่รันได้แล้วนี้ ให้กลายเป็นแอ็ปปลิเคชันอิสระที่สามารถรันได้เอง (โดยที่ไม่ต้องอาศัย Visual Basic)  ทำได้โดยการคลิกคำสั่ง File  ณ แถบเมนูคำสั่ง  แล้วเลือกคำสั่งย่อย Make..to..EXE  เท่านี้ก็เสร็จเรียบร้อย