ยินดีต้อนรับแขกผู้มาเยือน กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?
 
Please Login!

ผู้เขียน หัวข้อ: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)  (อ่าน 4829 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« เมื่อ: 26 มกราคม 2012, 16:57:29 »
อาจารย์ขอเปิดบอร์ดให้ความรู้เกี่ยวกับ AutoIt หน่อยนึงนะครับ บอร์ดเก่าเข้าไป Update ความรู้เพิ่มให้ไม่ได้ ถูกลีอคหน้าไว้

บทความของอาจารย์ไม่มีการปั่นกระทู้ให้ไปอยู่หน้าต้นๆ จึงเรียนมาเพื่อทราบ กรุณาอย่าล็อคหน้าไว้ จะได้ลงความรู้ให้เรื่อยๆ

[{-11-}]..ขอขอบคุณผู้ที่เกี่ยวข้องดูแลเว็บบอร์ดมา ณ. โอกาสนี้เป็นอย่างสูง..[{-11-}]
Coolfirmed by (6)สมาชิก:
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #1 เมื่อ: 26 มกราคม 2012, 17:43:46 »
ตอน:สร้างโปรแกรม Project ด้วย โปรแกรม Koda design

มีความรู้ที่จะ Update เพิ่มให้ ดังนี้

- การสร้าง Object ต่างๆเพื่อประยุกต์ใช้งาน Program Project ที่สร้าง

- การเขียนคำสั่งควบคุมการทำงานของ Form , Object

- การใช้งาน Library Include (หมวด:User Defined Function Reference)

- การเขียนและแปลงโค๊ดไฟล์สกุล *.vbs เป็น *.au3 (AutoItX)

- การเขียนคำสั่ง Obj/Com (หมวด:Function Reference)

- การตรวจสอบและแก้ไข Error! ที่เกิดจากการเขียนคำสั่งไม่ถูกต้อง
Coolfirmed by (1)สมาชิก:
« แก้ไขครั้งสุดท้าย: 26 มกราคม 2012, 17:53:57 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #2 เมื่อ: 26 มกราคม 2012, 18:07:21 »
ทดลองสร้างโปรแกรมProjectเลียนแบบโปรแกรมRegistry Editor ซึ่งประกอบด้วย -

1. Main Menu Object

2. TreeView Object

3. ImageList Object

4. ListView Object

5. Status Bar Object

6. Context Menu Object (เมนูคลิ๊กขวา)
--------------------------------------------------------------------------
เริ่มดำเนินงานการสร้างโปรแกรมProjectด้วยการคลิ๊กขวาบน Desktop เลื่อนไปที่ New และคลิ๊กที่ AutoIt v3 Script

จากนั้นคลิ๊กขวาที่ไฟล์ New AutoIt v3 Script.au3 ที่อยู่บนเดสก์ทแป ..เลือก Edit Script

ต่อไปกด Alt+m เพื่อเรียกโปรแกรม Koda design ขึ้นมาใช้งาน
------------------------------------------------------------------
มีหลายท่านที่เป็นมือใหม่หัดขับ แนะนำอะไร?ที่มีอยู่ใน Koda design ให้นิดนึงก็แล้วกัน

หน้าแรกแทบ 1 คือ Standard ประกอบด้วย -

1.Arrow หรือ Mouse Cursor (ลูกศรตัวชี้เม๊าท์) ถ้าคลิ๊กที่แทบนี้ ก็จะคืนความเป็นตัวชี้เม๊าท์ตามเดิม
   เพราะเม๊าท์จะจำ Object ที่เราคลิ๊กเลือกไว้ ป้องกันการเผลอคลิ๊กใส่ Object ซ้ำลงบนฟอร์ม

2.Main menu Object เกี่ยวข้องกับการสร้างเมนู Options ต่างๆขึ้นบนฟอร์ม

3.Label Object  เกี่ยวข้องกับการสร้าง ตัวเลขและตัวอักษรต่างๆ

4.Input Object หรือ ช่องกรอกข้อความ เกี่ยวข้องกับการรีเทิร์นค่าที่อยู่ในช่องออกมาใช้งาน
   คนละตัวกับ InputBox นะครับ ..แต่การทำงานเหมือนกัน

5.Edit Object คล้าย Notepad เกี่ยวข้องกับการขีดเขียนข้อความ

6.Button Object หรือ ปุ่มควบคุม เวลาจะกดต้องใช้เม๊าท์คลิ๊กเอา
   ถ้าสั่งกดปุ่มที่คีย์บอร์ด ต้องเขียนคำสั่งบังคับการกด

7.CheckBox Object หรือ ช่องสี่เหลี่ยมเล็กๆ ใช้สำหรับใส่เครื่องหมายถูกลงไป หรือ เอาเครื่องหมายถูกออก ..เพื่อยืนยัน

8.RadioButton เป็นปุ่มเล็กที่มีสีอยู่บนปุ่ม  ถ้ามีหลายปุ่ม สีที่อยู่บนจะเลื่อน ไป - มา ตามการเลือกได้

9.ListBox  Object หรือกล่องข้อความที่เป็นลิสท์รายการ ไม่ใช่ Editor จึงพิมพ์ข้อความไม่ได้
   ได้แต่บรรจุ Items ที่เป็น Text ลงไปด้วยสคริ๊ปคำสั่ง

10. ComboBox Object หรือคล้ายกับ Input แต่มีปุ่มสำหรับเลือกใช้งาน Items อยู่ในตัว

11.Context Menu Object เกี่ยวข้องกับการสร้าง เมนูคลิ๊กขวา

12.GroupBox Object เกี่ยวข้องกับการจัด กล่ม , หมวดหมู่ หรือ จัดระเบียบ Object
     ถ้าใส่ Object หลายๆตัวบน GroupBox ..เวลาย้ายที่ ก็จะถูกย้ายไปด้วยกันทั้งหมด
-------------------------------------------------------------------------------------------
แทบที่2 คือ Additional ประกอบด้วย -

1.Picture Object เกี่ยวข้องกับรูปภาพต่างๆ เช่น ใส่รูปภาพเป็น Form Background หรือทำ สไลด์โชว์

2.Icon Object เกี่ยวข้องการใช้งานไอคอนต่าง (*.ico) เช่น เปลี่ยนไอคอนบนไตเติ้ลบาร์

3.Graphic Object เกี่ยวข้องกับ รูปทรงหรือเส้นสายต่างๆทางเรขาคณิต เช่น รูปทรงสี่เหลี่ยม , เส้นคั่น

4.Updown Object

5.Avi Object  เกี่ยวข้องกับ ภาพยนต์เคลื่อนไหวที่เป็นคลิ๊ปสั้นๆ (คนละอย่างกับ Animation)

6.Tray menu Object เกี่ยวข้องกับ เมนู Options ที่เกิดขึ้นบน ทาก์สบาร์ Systray ของ Windows

7.Dummy Control Object

8.Group of controls Object
------------------------------------------------------------------------------------------
แทบที3 คือ Win32 ประกอบด้วย -

1.Slider Object เป็นบาร์แทรพที่สามารถสไลด์ ไป - มา เพื่อควบคุมการทำงาน

2.Progtess Object เกี่ยวข้องกับแสดงผล หรือ ความคืบหน้าการทำงานด้วยแทบบาร์สี

3.Date Picker Object เกี่ยวข้องกับการเลือกหรือกำหนด วัน เดือน ปี ใน ปฏิทิน

4.Month Calender Object เกี่ยวข้องกับ เดือน ต่างๆ ในปฏิทิน

5.TreeView  Object เกี่ยวข้องกับการโชว์หัวข้อเรื่อง (Item) และเรื่องที่อยู่ในหัวข้อนั้นๆ (Sub Item)
   โดยสามารถแยกย่อยออกเป็นสาขา หรือ ชั้นต่างๆได้ตามความต้องการ

6.ListView คล้ายกับ ListBox  แตกต่างกันที่  Style หรือรูปแบบที่เข้ามาเสริม

7.Tab Control Object

8.Com Object
-------------------------------------------------------------------------------------------
แทบที่4 คือ Custom ประกอบด้วย -

1. Status Bar Object ลักษณะคล้าย Task Bar ของวินโดว์ มักเป็นส่วนประกอบที่อยู่ด้านล่างของฟอร์ม
    มักใช้สำหรับการแสดงในรูปแบบต่าง เช่น Text หรือ ข้อความ หรือ Progress bar

2.IP Adress InputBox Object  คล้ายกับ Inputbox แต่ออกแบบมาเพื่อบรรจุ หมายเลข ไอพี เกี่ยวข้อง Lan Internet

3.Toolbar Object ลักษณะคล้ายทาก์สบาร์ของวินโดว์ แต่อยู่ส่วนบนของฟอร์ม

4.ImgeList Object เกี่ยวข้องกับการใส่รูปไอคอนต่างไว้บนลิสท์รายการที่สร้าง
-------------------------------------------------------------------------------------------
มี Object บางตัวที่อาจารย์ยังไม่เคยใช้งาน จะไม่มีคำอธิบายให้
Coolfirmed by (1)สมาชิก:
« แก้ไขครั้งสุดท้าย: 27 มกราคม 2012, 00:13:31 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #3 เมื่อ: 26 มกราคม 2012, 23:27:08 »
Event คืออะไร?

Event คือ คำสั่งควบคุมให้ Form หรือ ObJect ทำงานตามสั่ง ตามความสามารถ (Method) ของ Form Object นั้นๆมีอยู่

ใน Koda design แบ่งการควบคุม (Event) ออกเป็น 2 แบบ คือ

1.Event Loop หมายถึง ใช้คำสั่ง Control Loop ต่างๆเป็นตัวควบคุม เช่น While loop , Do loop หรือ For loop

2. Event Mode หมายถึง สร้างคำสั่งที่เป็นรูปแบบ Function ขึ้นมา ควบคุมการทำงาน ของ From Object นั้นๆโดยตรง
------------------------------------------------------------------------------------------------------------
State Loop หรือ การขับเคลื่อน ยังคงเดิม เป็นแบบเดียวกัน (Loop control + SetState)

ถ้าขาด State Loop จะไม่เกิดการแสดงผลใดๆ

ท่านสามารถเปลี่ยนแปลง หรือ เลือกใช้ Event โดยการไปปรับแต่งที่เมนู Tools ..เลือก Generating Options...

เลือก CheckBox หรือใส่เครื่องหมายถูกทีึ่ Generate OnEvent code และ Generate for all controls ..คลิ๊ก Save

จริงๆแล้ว Koda design ยังมีหน้าที่การงานมากกว่านี้ ขอให้ศึกษาเพิ่มเติมกันเอง.
Coolfirmed by (2)สมาชิก:
« แก้ไขครั้งสุดท้าย: 27 มกราคม 2012, 00:41:24 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #4 เมื่อ: 27 มกราคม 2012, 00:51:05 »
เริ่มสร้าง Registry Editor Project

ใส่ main Menu ลงบน Form โดยการขึ้นไปคลิ๊กที่ Main menu Object ด้านบน

จากนั้นกลับลงมาคลิีกที่พื้นที่ว่างบนฟอร์ม เป็นการวาง Object ลงบนฟอรม

และทำการปรับแต่งเพิ่มเติม ดังนี้ (ถ้าอยากเขียนโปรแกรมเป็น อย่าท้อในการเขียนสคริ๊ปยาวๆ)

ดับเบิ้ลคลิ๊กที่ object ที่วางไว้บนฟอร์ม ..หน้าต่างสำหรับปรับแต่ง Main Menu จะผุดขึ้นมา หรือจะใช้งานที่ Object Inspector ก็ได้

จากนั้นให้คลิ๊กขวาที่กรอบสีน้ำเงิน แล้วทำความเข้าใจการสร้างเมนูต่างๆก่อนดังนี้ (อย่าใจร้อน! ต้องค่อยๆฝึกหัด)

ถ้าในกรอบไม่เป็นสีน้ำเงิน จะไม่สามารถสร้างเมนูใดๆได้ ..ให้คลิ๊กซ้ายลงที่กรอบ ให้ในกรอบเป็นสีน้ำเงินก่อน

จากนั้นค่อยคลิ๊กขวา เพื่อเลือกสร้างเมนู ..ให้เลือกคำสั่ง Insert ก่อนทุกครั้งที่สร้าง (คำสั่งอื่นไม่เกิดผลใดๆ)

เพราะต้องสร้างเมนูที่เป็นหัวข้อหลักขึ้นมาก่อน (Main Menu) ..ไม่งั้นจะไม่สามารถสร้างเมนูย่อย (Sub Menu) ขึ้นมาได้

Insert หมายถึง การสร้าง หรือ เพิ่มเติม Main Menu ให้เป็น Main Menu ในลำดับต่อไป

Create Submenu หมายถึง สร้างเมนูย่อย สำหรับ Main Menu นั้นๆ

ถ้าใช้คำสั่ง Insert ในเมนูย่อย จะหมายถึง การสร้างเมนูย่อยเพิ่มเติมออกมาจากเมนูย่อยนั้นๆที่เลือก

ถ้าใช้คำสั่ง  Create Submenu ในเมนูย่อย หมายถึง การสร้าง Sub menu ใน Sub menu อีกชั้นหนึ่ง

Delete หมายถึง คำสั่ง ลบ หรือยกเลิก Main Menu หรือ Sub menu นั้นๆที่เลือก

การสร้างเมนหลักถัดไป ให้คลิ๊กซ้ายในกรอบสีน้ำเงินว่างๆ จากนั้นคลิ๊กขวาเพื่อเลือก Insert

วิธีการเปลี่ยนชื่อต่างๆบนเมนูไปเป็นชื่ออื่น เปลี่ยนได้ที่ ช่อง Caption ที่อยู่ใน Object Inspector

เมื่อสร้างเสร็จ ให้ save as Project ไว้ จะได้กลับมาสร้าง Object อื่นๆต่อได้ ไม่งั้นต้องไปเริ่มต้นสร้างกันใหม่

เมื่อสร้างเสร็จก็จะได้ ดังรูป และ โค๊ด ที่โปรแกรม Koda เขียนไว้ให้

โค๊ด: [Select]
#include <GUIConstantsEx.au3>

$hWnd = GUICreate("Registry Editor", 633, 430, 192, 124)
$MenuItem1 = GUICtrlCreateMenu("File")
$MenuItem2 = GUICtrlCreateMenuItem("Import...", $MenuItem1)
$MenuItem5 = GUICtrlCreateMenuItem("Export...", $MenuItem1)
GUICtrlCreateMenuItem("", $MenuItem1)
$MenuItem5_0 = GUICtrlCreateMenuItem("Load Hive", $MenuItem1)
GUICtrlSetState(-1, $GUI_DISABLE)
$MenuItem5_1 = GUICtrlCreateMenuItem("Unload Hive", $MenuItem1)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateMenuItem("", $MenuItem1)
$MenuItem5_2 = GUICtrlCreateMenuItem("Connect network registry", $MenuItem1)
$MenuItem5_3 = GUICtrlCreateMenuItem("Disconnect network registry", $MenuItem1)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateMenuItem("", $MenuItem1)
$MenuItem5_4 = GUICtrlCreateMenuItem("Print                Ctrl+P", $MenuItem1)
$MenuItem5_5 = GUICtrlCreateMenuItem("Exit", $MenuItem1)
$MenuItem3 = GUICtrlCreateMenu("Edit")
$MenuItem3_1 = GUICtrlCreateMenu("New", $MenuItem3)
GUICtrlCreateMenuItem("", $MenuItem3)
$MenuItem3_2 = GUICtrlCreateMenuItem("Key", $MenuItem3_1)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateMenuItem("", $MenuItem3_1)
$MenuItem3_3 = GUICtrlCreateMenuItem("String Value", $MenuItem3_2)
GUICtrlSetState(-1, $GUI_DISABLE)
$MenuItem3_4 = GUICtrlCreateMenuItem("Binary Value", $MenuItem3_2)
GUICtrlSetState(-1, $GUI_DISABLE)
$MenuItem3_5 = GUICtrlCreateMenuItem("DWORD Value", $MenuItem3_2)
GUICtrlSetState(-1, $GUI_DISABLE)
$MenuItem3_6 = GUICtrlCreateMenuItem("Muiti-String Value", $MenuItem3_2)
GUICtrlSetState(-1, $GUI_DISABLE)
$MenuItem3_7 = GUICtrlCreateMenuItem("Expandable String Value", $MenuItem3_2)
GUICtrlSetState(-1, $GUI_DISABLE)
$MenuItem3_8 = GUICtrlCreateMenuItem("Permissions...", $MenuItem3)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateMenuItem("", $MenuItem3)
$MenuItem3_9 = GUICtrlCreateMenuItem("Delete          Del", $MenuItem3)
GUICtrlSetState(-1, $GUI_DISABLE)
$MenuItem3_9_0 = GUICtrlCreateMenuItem("Rename", $MenuItem3)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateMenuItem("", $MenuItem3)
$MenuItem3_9_1 = GUICtrlCreateMenuItem("Copy Keyname", $MenuItem3)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateMenuItem("", $MenuItem3)
$MenuItem3_9_2 = GUICtrlCreateMenuItem("Find...            Ctrl+F", $MenuItem3)
$MenuItem3_9_3 = GUICtrlCreateMenuItem("Find Next          F3", $MenuItem3)
$MenuItem4 = GUICtrlCreateMenu("View")
$MenuItem4_0 = GUICtrlCreateMenuItem("Status bar", $MenuItem4)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlCreateMenuItem("", $MenuItem4)
$MenuItem4_1 = GUICtrlCreateMenuItem("Split", $MenuItem4)
GUICtrlCreateMenuItem("", $MenuItem4)
$MenuItem4_2 = GUICtrlCreateMenuItem("Display binary data", $MenuItem4)
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateMenuItem("", $MenuItem4)
$MenuItem4_3 = GUICtrlCreateMenuItem("Refresh          F5", $MenuItem4)
$MenuItem6 = GUICtrlCreateMenu("Favorites")
$MenuItem6_0 = GUICtrlCreateMenuItem("Add to Favorites", $MenuItem6)
GUICtrlSetState(-1, $GUI_DISABLE)
$MenuItem6_1 = GUICtrlCreateMenuItem("Remove to Favorites", $MenuItem6)
GUICtrlSetState(-1, $GUI_DISABLE)
$MenuItem7 = GUICtrlCreateMenu("Help")
$MenuItem7_0 = GUICtrlCreateMenuItem("Help Topics", $MenuItem7)
GUICtrlCreateMenuItem("", $MenuItem7)
$MenuItem7_1 = GUICtrlCreateMenuItem("About Registry Editor", $MenuItem7)
GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd



Coolfirmed by (1)สมาชิก:
« แก้ไขครั้งสุดท้าย: 27 มกราคม 2012, 07:33:26 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #5 เมื่อ: 27 มกราคม 2012, 02:59:12 »
ต่อไปใส่ TreeView Object ลงบนฟอร์ม จากนั้นไปที Object Inspector เพื่อทำการปรับแต่ง

คลิ๊กที่ช่อง (TTreeNodes) จะมีปุ่มเล็กๆผุดขึ้นมา ..คลิ๊กที่ปุ่มเล็กๆนั้น จะมีหน้าต่างสำหรับปรับแต่งปรากฏขึ้น

รายละเอียดที่อยู่บนหน้าต่าง มีดังนี้

ปุ่ม New Item หมายถึง ปุ่มที่ใช้สร้าง Root Item ขึ้นมา แต่ยังไม่ปรากฏเป็นชื่อข้อความใดๆ

จากนั้นให้ท่านพิมพ์ข้อความลงในช่อง Text ..คลิ๊ก OK ก็จะมีข้อความที่เป็น Item Text เกิดขึ้นบน Root

ปุ่ม New Subitem หมายถึง ปุ่มที่ใช้สร้าง Itemรอง ใน Itemหลัก สรุปง่ายๆว่า ใช้หลักเดียวกันกับการสร้าง Main Menu

เมื่อสร้างเสร็จ อย่าลืม Save As ไว้นะครับ มาดูกันครับว่า เมื่อเพิ่มเติม TreeView เข้าไปแล้ว




Coolfirmed by (1)สมาชิก:
« แก้ไขครั้งสุดท้าย: 27 มกราคม 2012, 03:45:52 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #6 เมื่อ: 27 มกราคม 2012, 04:38:52 »
ต่อไปใส่ ListView ลงบน Form และให้สังเกตุส่วนหัว ยังไม่การสร้างคอลัมส์ (Colums) ..ไปที่ Object Inspector

คลิ๊กที่ช่อง (Collection)  ..คลิ๊กที่ปุ่มเล็กๆ หน้าต่างสำหรับสร้างคอลัมส์จะปรากฏขึ้น

คลิ๊กที่รูป Add item ซ้ายมือ จากนั้นใส่ชื่อรายการลงในคอลัมส์ที่ ช่อง Caption ใน Object Inspector

กำหนดหรือเว้นระยะห่างของช่องคอลัมส์ที่ช่อง Width ..ให้ทำซ้ำจนครบ 3 ช่อง

จากนั้นใส่ Status Bar ลงไป ลองปรับแต่งกันเองนะครับ ไม่ยาก

เป็นอันเสร็จ ที่เหลือ คือการเขียนสคริ๊ป Add Image (Icon) ลงใน treeView และคำสั่งควบคุมอื่นๆ



Coolfirmed by (0)สมาชิก:
 
« แก้ไขครั้งสุดท้าย: 27 มกราคม 2012, 04:58:06 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #7 เมื่อ: 27 มกราคม 2012, 05:03:36 »
วิธีการการใส่รูปไอคอนต่างๆ ลงไปใน TreeView แบบง่าย ด้วยคำสั่ง _GUICtrlTreeView_SetIcon

คำสั่งนี้อยู่ในกลุ่ม Library Include ฉนั้นต้องอ้าง include script ด้วย คือ #Include <GuiTreeView.au3>

Syntax:_GUICtrlTreeView_SetIcon($hWnd[, $hItem = 0[, $sIconFile =""[, $iIconID = 0[, $iImageMode = 6]]]])

ถ้าไม่รู้ความหมายของ Parameters  หรือคำสั่งที่อยู่ในวงเล็บ จะไม่สามารถติดตั้งไอคอนบน TreeView ได้

จึงจำเป็นต้องอธิบาย เฉพาะคำสั่งที่ต้องใช้ ดังนี้

$hWnd หมายถึง $ID ของ คำสั่ง GUICtrlCreateTreeView

$hItem หมายถึง $ID ของ คำสั่ง GUICtrlCreateTreeViewItem

$sIconFile หมายถึง PathNameIcon หรือชื่อไอคอนต่างๆที่ใช้ ใช้ได้ทั้งไฟล์สกุล *.exe และ *.ico หรือไฟล์ dll เช่น shell32.dll เป็นต้น

ถ้าใช้ไฟล์ dll ต้องระบุ เลขประจำตัว หรือ ไอดี ของไอคอนไว้ด้วย เพราะไอคอนที่อยู่ในไฟล์ dll หน้าตาจะไม่ซ้ำกัน

$iIconID หมายถึง หมายเลขที่เป็นไอดีของไอคอน
---------------------------------------------------------------------------------------
ลองกับโค๊ดนี้ดูครับ แล้วนำไปปรับใช้ใน Project ของท่าน

โค๊ด: [Select]
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ImageListConstants.au3>
#include <ListViewConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiTreeView.au3>

$Form1 = GUICreate("RegEdit", 450, 300, 192, 124)
$MenuItem1 = GUICtrlCreateMenu("File")
$MenuItem2 = GUICtrlCreateMenuItem("Exit", $MenuItem1)
$MenuItem3 = GUICtrlCreateMenu("Edit")
GUISetIcon("C:\WINDOWS\regedit.exe")
$hTreeView = GUICtrlCreateTreeView(0, 0, 195, 257)
$hItem0 = GUICtrlCreateTreeViewItem("My Computer", $hTreeView)
_GUICtrlTreeView_SetIcon($hTreeView, $hItem0, "shell32.dll", 232)
$hItem1 = GUICtrlCreateTreeViewItem("HKEY_CLASSES_ROOT", $hItem0)
_GUICtrlTreeView_SetIcon($hTreeView, $hItem1, "shell32.dll", 3)
$hItem2 = GUICtrlCreateTreeViewItem("*", $hItem1)
_GUICtrlTreeView_SetIcon($hTreeView, $hItem2, "shell32.dll", 3)
$hItem3 = GUICtrlCreateTreeViewItem("._sln", $hItem1)
_GUICtrlTreeView_SetIcon($hTreeView, $hItem3, "shell32.dll", 3)
$hItem4 = GUICtrlCreateTreeViewItem("._sln60", $hItem1)
_GUICtrlTreeView_SetIcon($hTreeView, $hItem4, "shell32.dll", 3)
$hItem5 = GUICtrlCreateTreeViewItem("HKEY_CURRENT_USER", $hItem0)
_GUICtrlTreeView_SetIcon($hTreeView, $hItem5, "shell32.dll", 3)
$hItem6 = GUICtrlCreateTreeViewItem("AppEvents", $hItem5)
_GUICtrlTreeView_SetIcon($hTreeView, $hItem6, "shell32.dll", 3)
$hItem7 = GUICtrlCreateTreeViewItem("Console", $hItem5)
_GUICtrlTreeView_SetIcon($hTreeView, $hItem7, "shell32.dll", 3)
$hItem8 = GUICtrlCreateTreeViewItem("Control Panal", $hItem5)
_GUICtrlTreeView_SetIcon($hTreeView, $hItem8, "shell32.dll", 3)
$ListView1 = GUICtrlCreateListView("Name|Type|Data", 200, 0, 250, 257)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 100)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 90)
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 50)
$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
Dim $StatusBar1_PartsWidth[1] = [-1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, "My Computer", 0)
GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
        Case $MenuItem2
ExitLoop
EndSwitch
WEnd




Coolfirmed by (0)สมาชิก:
 
« แก้ไขครั้งสุดท้าย: 27 มกราคม 2012, 12:41:59 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #8 เมื่อ: 27 มกราคม 2012, 12:54:00 »
วิธีเขียนคำสั่งควบคุมให้สามารถแสดงผลข้อมูล ValueName , Type และ Data บน ListView ได้

แต่จะยังใช้งานจริงๆไม่ได้นะครับ ต้องพัฒนากันอีกยาวไกล

ข้อควรสังเกตุ:จะเห็นได้ว่า  ID ของ Treeview Object  ถูกนำมาใช้เป็น Array ด้วย เพราะไม่ยังงั้น

ต้องเขียนคำสั่ง Set Icon TreeView กันยาวๆ ต้องใช้ Loop ช่วย คำสั่งถึงจะสั้นลง

โค๊ด: [Select]
#include <GUIConstantsEx.au3>
#include <GuiStatusBar.au3>
#include <ImageListConstants.au3>
#include <ListViewConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiTreeView.au3>
#Include <GuiListView.au3>

Global $hItem[12]

$Form1 = GUICreate("RegEdit", 650, 300, 192, 124)
$MenuItem1 = GUICtrlCreateMenu("File")
$MenuItem2 = GUICtrlCreateMenuItem("Exit", $MenuItem1)
$MenuItem3 = GUICtrlCreateMenu("Edit")
GUISetIcon(@WindowsDir&"\regedit.exe")
$hTreeView = GUICtrlCreateTreeView(0, 0, 195, 257)
$sItem = GUICtrlCreateTreeViewItem("My Computer", $hTreeView)
$hItem[0] = GUICtrlCreateTreeViewItem("HKEY_CLASSES_ROOT", $sItem)
$hItem[1] = GUICtrlCreateTreeViewItem("*", $hItem[0])
$hItem[2] = GUICtrlCreateTreeViewItem("._sln", $hItem[0])
$hItem[3] = GUICtrlCreateTreeViewItem("._sln60", $hItem[0])
$hItem[4] = GUICtrlCreateTreeViewItem("HKEY_CURRENT_USER", $sItem)
$hItem[5] = GUICtrlCreateTreeViewItem("AppEvents", $hItem[4])
$hItem[6] = GUICtrlCreateTreeViewItem("Console", $hItem[4])
$hItem[7] = GUICtrlCreateTreeViewItem("Control Panal", $hItem[4])
$hItem[8] = GUICtrlCreateTreeViewItem("HKEY_LOCAL_MACHINE", $sItem)
$hItem[9] = GUICtrlCreateTreeViewItem("AppEvents", $hItem[8])
$hItem[10] = GUICtrlCreateTreeViewItem("Console", $hItem[8])
$hItem[11] = GUICtrlCreateTreeViewItem("Control Panal", $hItem[8])
_SetIcontreeView()
$StatusBar1 = _GUICtrlStatusBar_Create($Form1)
Dim $StatusBar1_PartsWidth[1] = [-1]
_GUICtrlStatusBar_SetParts($StatusBar1, $StatusBar1_PartsWidth)
_GUICtrlStatusBar_SetText($StatusBar1, "My Computer", 0)
$hListView = GUICtrlCreateListView("Name|Type|Data", 200, 0, 500, 257)
_GUICtrlListView_SetColumnWidth($hListView, 0, 200)
_GUICtrlListView_SetColumnWidth($hListView, 1, 150)
_GUICtrlListView_SetColumnWidth($hListView, 2, 120)
GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
        Case $MenuItem2
ExitLoop
Case $sItem
_GUICtrlListView_DeleteAllItems($hListView)
_GUICtrlStatusBar_SetText($StatusBar1, "My Computer", 0)
    Case $hItem[0]
    _LoadItemsData1()
Case $hItem[4]
_LoadItemData5()
Case $hItem[8]
_LoadItemData9()
EndSwitch
WEnd

Func _SetIcontreeView()
For $i = 0 To UBound($hItem)-1
    _GUICtrlTreeView_SetIcon($hTreeView, $hItem, "shell32.dll", 3)
Next
        _GUICtrlTreeView_SetIcon($hTreeView, $sItem, "shell32.dll", 232)
EndFunc

Func _LoadItemsData1()
_GUICtrlListView_DeleteAllItems($hListView)
GUICtrlCreateListViewItem("(Default)", $hListView)
_GUICtrlListView_AddSubItem($hListView, 0, "REG_SZ", 1)
    _GUICtrlListView_AddSubItem($hListView, 0, "value not set", 2)
_GUICtrlStatusBar_SetText($StatusBar1, "My Computer"&"\"&"HKEY_CLASSES_ROOT", 0)
EndFunc

Func _LoadItemData5()
_GUICtrlListView_DeleteAllItems($hListView)
GUICtrlCreateListViewItem("(Default)", $hListView)
_GUICtrlListView_AddSubItem($hListView, 0, "REG_SZ", 1)
    _GUICtrlListView_AddSubItem($hListView, 0, "value not set", 2)
GUICtrlCreateListViewItem("ConfirmDelete", $hListView)
_GUICtrlListView_AddSubItem($hListView, 1, "REG_DWORD", 1)
    _GUICtrlListView_AddSubItem($hListView, 1, "0x00000001 (1)", 2)
_GUICtrlStatusBar_SetText($StatusBar1, "My Computer"&"\"&"HKEY_CURRENT_USER", 0)
EndFunc

Func _LoadItemData9()
_GUICtrlListView_DeleteAllItems($hListView)
GUICtrlCreateListViewItem("(Default)", $hListView)
_GUICtrlListView_AddSubItem($hListView, 0, "REG_SZ", 1)
    _GUICtrlListView_AddSubItem($hListView, 0, "value not set", 2)
GUICtrlCreateListViewItem("MData", $hListView)
_GUICtrlListView_AddSubItem($hListView, 1, "REG_NONE", 1)
    _GUICtrlListView_AddSubItem($hListView, 1, "be b8 43 e0 f5 8d 4f 6a bb 8e 5a 3d aa e4 19 00 44 97 ", 2)
_GUICtrlStatusBar_SetText($StatusBar1, "My Computer"&"\"&"HKEY_LOCAL_MACHINE", 0)
EndFunc



Coolfirmed by (0)สมาชิก:
 
« แก้ไขครั้งสุดท้าย: 27 มกราคม 2012, 20:49:31 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #9 เมื่อ: 28 มกราคม 2012, 10:20:30 »
ความรู้เพิ่มเติมเกี่ยวกับ Objcet

Fom และ Objectมีอยู่2แบบให้เลือกใช้ คือ

1. เขียนด้วยคำสั่งปกติ  AutoIt Script (์Normal)
 
2. เขียนด้วยคำสั่งประยุกต์  Library Script (Function)

ทำไม?ถึงมี2คำสั่ง ..ก็เพราะว่า ถ้าเขียนโปรแกรมโดยใช้แต่  AutoIt Script  อย่างเดียว อาจไปไม่รอด หรือไม่ประสบความสำเร็จในการเขียนโปรแกรม

Library Script เป็นคำสั่งที่ถูกพัฒนาขึ้นมา และมีขีดความสามารถสูงกว่า AutoIt Script จะช่วยเสริมให้ในการเขียนโปรแกรม มีโอกาสประสบความสำเร็จสูง

อาจารย์จะเปรียเทียบคำสั่งทั้งสองให้สักเล็กน้อย ดังนี้

คำสั่งสำหรับสร้างหน้าต่างโปรแกรม หรือ Form ..แต่ไม่มีเขียนไว้เป็น Library Function เพราะ -

Form เปรียบเสมือนเป็นที่อยู่ของ Object ทั้งหลาย ถ้าไม่สร้าง Form ขึ้นมาก่อน Object จะเกิดไม่ได้

แต่อาจารย์จะเขียนเป็น Library Function ให้ดูเล็กน้อย
--------------------------------------------------------------------------
:AutoIt Script: (GUI Management)
โค๊ด: [Select]
Syntax: GUICreate ( "title" [, width [, height [, left [, top [, style [, exStyle [, parent]]]]]]]---------------------------------------------------------------------
:Library Function Script: (User)
โค๊ด: [Select]
Global $title, $width, $height, $left, $top
Func _CreateGUI($title, $width, $height, $left, $top)
Return GUICreate($title, $width, $height, $left, $top)
EndFunc ;==>CreateGUI.

;Example:
$GUI_EVENT_CLOSE = -3
_CreateGUI("GUI Sample", 450, 250, -1, -1) ; -1 = DesktopCenterPosition.
GUISetState()
Do
Until GUIGetMsg()= $GUI_EVENT_CLOSE ;Or Use: -3
Coolfirmed by (0)สมาชิก:
 
« แก้ไขครั้งสุดท้าย: 29 มกราคม 2012, 12:39:21 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #10 เมื่อ: 28 มกราคม 2012, 10:58:33 »
 Library Object (User Defined Function Reference)

มาลองดูกับกับคำสั่งที่เป็น Library Object หรือ เขียน Object ออกมาเป็นรูปแบบ Script Function ซึ่งเป็นที่นิยมเขียนกันมาก
----------------------------------
Button Object: Autoit Script
โค๊ด: [Select]
Syntax: GUICtrlCreateButton ( "text", left, top [, width [, height [, style [, exStyle]]]] )--------------------------------------
Button Library Function Script
โค๊ด: [Select]
Syntax:
#Include <GuiButton.au3>
_GUICtrlButton_Create($hWnd, $sText, $iX, $iY, $iWidth, $iHeight[, $iStyle = -1[, $iExStyle = -1]])
-------------------------------------------------------------------------------
Button Method ตัวอย่างความสามารถของปุ่มlส่วนหนึ่ง ในหลายๆความสามารถ

Example:Button Events Control
โค๊ด: [Select]
Global $GUI_EVENT_CLOSE = -3

GUICreate("Button:Autoit Script Sample", 450, 250, -1, -1)
Local $IDbtn1 = GUICtrlCreateButton("Click here", 200, 200, 75, 25)
GUISetState()

While 1
    Local $msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $IDbtn1
MsgBox(64, "Read Button", "Button name is : "& GUICtrlRead($IDbtn1))
MsgBox(64, "Write Button", "Change Button name is 'OK'")
GUICtrlSetData($IDbtn1, "OK")
Do
    $nMsg = GUIGetMsg()
        Select                            ;Create loop for get new message button.
    Case $nMsg = $IDbtn1  ;Click OK to Exit.
    Exit
    EndSelect
    Until $nMsg = $IDbtn1 Or $nMsg = $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd

โค๊ด: [Select]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>

Local $hGUI = GUICreate("Button:Library Script Sample", 450, 250, -1, -1)
Local $IDbtn2 = _GUICtrlButton_Create($hGUI, "Click here", 200, 200, 75, 25)
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
GUISetState()

While 1
    Local $msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd

Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
#forceref $hWnd, $Msg
Local $nNotifyCode = BitShift($wParam, 16)
Local $nID = BitAND($wParam, 0x0000FFFF)
Local $hCtrl = $lParam
Switch $hCtrl
Case $IDbtn2
Switch $nNotifyCode
Case $BN_CLICKED
MsgBox(64, "Read Button", "Button name is : "& _GUICtrlButton_GetText($IDbtn2))
        If _GUICtrlButton_GetText($IDbtn2) = "Click here" Then
MsgBox(64, "Write Button", "Change Button name is 'OK'")
    _GUICtrlButton_SetText($IDbtn2, "OK")
Else
MsgBox(64, "Write Button", "Change Button name is 'Click here'")
    _GUICtrlButton_SetText($IDbtn2, "Click here")
EndIf
    EndSwitch
Return 0
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc
Coolfirmed by (0)สมาชิก:
 
« แก้ไขครั้งสุดท้าย: 28 มกราคม 2012, 14:40:54 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #11 เมื่อ: 28 มกราคม 2012, 17:30:14 »
เทคนิคการทำหน้าต่างโปรแกรมให้ใสเหมือนแก้ว

บา่งท่านที่มีความรู้ขึ้นมาหน่อยนึงก็จะบอกว่า.. ใช้คำสั่ง WinSetTrans

แต่คำสั่งนี้ใช้แล้ว หน้าต่างโปรแกรมจะออกมาใสแบบขุ่นๆไม่เนียน

แต่ถ้าใช้คำสั่งประยุกต์ WinApi library จะได้ความใสแบบเนียนๆแน่นอน

อาจารย์จะทำโปรแกรมขึ้นมา2แบบเพื่อที่จะได้นำมาเปรียบเทียบให้เห็นถึงความแตกต่าง
------------------------------------------------------------------------------------------
แบบแรกใช้สคริ๊ป WinAPI library

ให้สังเกตุสคริ๊ป Color HexCode '0xABABAB' ของ Form จะต้องตรงกันกับในสคริ๊ป WinAPI_SetLayeredWindowAttributes ..ไม่งั้น พื้นหน้าต่างจะไม่ใส

โค๊ด: [Select]
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiSlider.au3>
#include <GuiButton.au3>

$hForm = GUICreate("Trans", 222, 227, -1, -1, -1, $WS_EX_LAYERED)
$Pic = GUICtrlCreatePic("C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Water lilies.jpg", _
24, 56, 172, 100, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$hSlider = GUICtrlCreateSlider(0, 0, 224, 29,  BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS, $TBS_ENABLESELRANGE))
_GUICtrlSlider_SetRange($hSlider, 0, 255)
_GUICtrlSlider_SetPos($hSlider, 255)
$hButton = GUICtrlCreateButton("Trans", 72, 184, 75, 25, $WS_GROUP)
GUICtrlSetCursor(-1, 0)
GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
Case $GUI_EVENT_CLOSE
    Exit
Case $hButton
        Switch _GUICtrlButton_GetText($hButton)
Case "Trans"
GUISetBkColor(0xABABAB, $hForm)
_WinAPI_SetLayeredWindowAttributes($hForm, 0xABABAB, 255, BitOR($LWA_COLORKEY, $LWA_ALPHA))
                    _GUICtrlButton_SetText($hButton, "Normal")
            Case "Normal"
GUISetBkColor(0xFFFFFF, $hForm)
_GUICtrlButton_SetText($hButton, "Trans")
EndSwitch
EndSwitch
_WinAPI_SetLayeredWindowAttributes($hForm, 0xABABAB, _GUICtrlSlider_GetPos($hSlider), BitOR($LWA_COLORKEY, $LWA_ALPHA))
WEnd
--------------------------------------------------------------------
แบบที่2 ใช้คำสั่ง WinSetTrans

โค๊ด: [Select]
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiSlider.au3>
#include <GuiButton.au3>

$title = "Trans"
$hForm = GUICreate($title, 222, 227, -1, -1, -1, $WS_EX_LAYERED)
$Pic = GUICtrlCreatePic("C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Water lilies.jpg", _
24, 56, 172, 100, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$hSlider = GUICtrlCreateSlider(0, 0, 224, 29,  BitOR($TBS_TOOLTIPS, $TBS_AUTOTICKS, $TBS_ENABLESELRANGE))
_GUICtrlSlider_SetRange($hSlider, 0, 255)
_GUICtrlSlider_SetPos($hSlider, 255)
$hButton = GUICtrlCreateButton("Trans", 72, 184, 75, 25, $WS_GROUP)
GUICtrlSetCursor(-1, 0)
GUISetState()
$begin = TimerInit()
While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
Case $GUI_EVENT_CLOSE
    Exit
Case $hButton
        Switch _GUICtrlButton_GetText($hButton)
Case "Trans"
GUISetBkColor(0xABABAB, $hForm)
_WinAPI_SetLayeredWindowAttributes($hForm, 0xABABAB, 255, BitOR($LWA_COLORKEY, $LWA_ALPHA))
                    _GUICtrlButton_SetText($hButton, "Normal")
            Case "Normal"
GUISetBkColor(0xFFFFFF, $hForm)
_GUICtrlButton_SetText($hButton, "Trans")
EndSwitch
EndSwitch
If  TimerDiff($begin)>1000 Then
    WinSetTrans($title, "", _GUICtrlSlider_GetPos($hSlider))
$begin = TimerInit()
    If  _GUICtrlSlider_GetPos($hSlider)= 0 Then _GUICtrlSlider_SetPos($hSlider, 255)
EndIf
WEnd
Coolfirmed by (0)สมาชิก:
 
« แก้ไขครั้งสุดท้าย: 28 มกราคม 2012, 21:09:02 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #12 เมื่อ: 28 มกราคม 2012, 21:36:32 »
ความรู้เพิ่มเติมเกี่ยวกับคำสั่ง Array

เคยมีปรมาจารย์ตั๊กม๊อท่านหนึ่งที่เชี่ยวชาญยุทธในการ Programing เคยกล่าวไว้ว่า..

'การเขียนโปรแกรมนั้น ถ้าใช้คำสั่ง Array ไม่เป็น ก็ไม่ได้เป็น Programer เพราะเหมือนคิดไม่เป็น'

แสดงว่า การเขียนคำสั่งที่เป็น Array ไม่ใช่ของง่าย ต้องฝึกฝนหัดเขียนกันอย่างจริงๆจังๆ

อาจรู้ได้เฉพาะตน คนที่ฝึกฝนใช้ความคิดเขียนจนชำนาญเท่านั้น ก็อาจจะเป็นได้
-------------------------------------------------------------------------------------------------------
จากการที่อาจารย์ได้ศึกษาค้นคว้าเพิ่มเติมเกี่ยวกับคำสั่งที่เป็น Array

ในความคิดของอาจารย์ ได้ข้อสรุป ดังนี้

1.Array แบ่งออกเป็น 2 ประเภท คือ อาเรย์ 1 มิติ และ อาเรย์ 2 มิติ

2.Array เหมาะสำหรับใช้กับข้อมูลคำสั่งที่ซ้ำๆกันอยู่ตลอด หรือ วนไปวนมา ประมาณนั้น
   ถ้าไม่ใช้คำสั่งอาเรย์เข้าช่วย ข้อมูลคำสั่งก็จะถุกเขียนจนยืดยาวเป็นหางว่าว
   ทำให้โปรแกรมที่เขียนมีขนาดใหญ่เกินความจำเป็น

3. Array ใช้วัดระดับความสามารถไม่ได้ แต่ใช้วัดระดับความคิดได้
Coolfirmed by (0)สมาชิก:
 
« แก้ไขครั้งสุดท้าย: 29 มกราคม 2012, 11:22:18 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #13 เมื่อ: 28 มกราคม 2012, 22:06:55 »
มาลองดูกับตัวอย่างคำสั่ง Array แบบคิดกันง่ายๆ เขียนกันง่ายๆ

Array แบบไม่ต้องประกาศตัวแปร หรือ Table Array

โค๊ดนี้อาจารย์คิดนอกตำรา ไม่มีใน AutoIt มีเหตผล พอที่จะอธิบายได้ ออกแบบเขียนเป็นคำสั่ง Library ยังได้เลย

โคีดนี้เป็น Table Array 2 มิติ ลองรันดูครับแล้วจะรู้

จะสังเกตุได้ว่าข้อมูลที่อยู่ในวงเล็บ หรือ Element ของ table1 จะไม่มีคำสั่งมาโคร LineFeed หรือ @CRLF

เพราะไม่ต้องการขึ้นบันทัดใหม่ ต่อมา table2 จะเห็นได้ว่าเริ่มมีคำสั่งมาโคร LineFeed เข้ามาแล้ว

และอยู่หน้าข้อมูล เพราะต้องกระโดดลงมาบันทัดล่าง ถ้าไม่อยู่หน้าข้อมูลมันจะไม่กระโดดลงมา (เขียนแบบบังคับให้กระดด)

เมื่อกระโดดลงมาแล้วยังไม่พอ มันห้ามข้อมูลอื่นต่อท้ายมันด้วย (คิดกันเองว่าทำไม?) เพราะฉนั้น table3 หมดสิทธิ์ต่อท้าย

ส่วน table3 เมื่อต่อท้าย table2 ไม่ได้ ก็ต้องลงไปบันทัดล่าง โดยมีมาโคร LineFeed เป็นหาง นั่นก็เท่ากับว่า เอานิสัย table2 มาใช้ ห้ามใครต่อท้ายอีกเช่นกัน

ส่วน table4 รู้แกว table3 ว่ายังไงก็คงต่อท้าย table3 ไม่ได้ จึงยอมลงอยู่บันทัดล่างแต่โดยดี สังเกตุให้ดีจะเห็นว่ามีมาโคร LineFeed อยู่ตรงกลาง ก็เท่ากับว่า ต้องแบ่งข้อมูลส่วนข้างท้าย ให้ลงมาอยู่บันทัดถัดไป

โค๊ด: [Select]
$table1 = ("One = "&1)
$table2 = (@CRLF&"Two = "&2)
$table3 = ("Three = "&3&@CRLF)
$table4 = ("Four = "&4&@CRLF&"Five = "&5)
MsgBox(4096, "", $table1&$table2&@CRLF&$table3&$table4)
Coolfirmed by (0)สมาชิก:
 
« แก้ไขครั้งสุดท้าย: 29 มกราคม 2012, 11:02:02 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #14 เมื่อ: 29 มกราคม 2012, 10:45:45 »
เรามาดูสคริ๊ป Array ของจริง ใน AutoIt กันบ้าง บางทีอาจารย์อาจเขียนซ้ำกับกับบทความเก่าๆ ก็ขอให้ท่านถือว่า เป็นการตอกย้ำทบทวนความจำก็แล้วกัน

ถัาเมื่อใดมีการเขียนคำสั่งที่เป็น Array จะต้องประกาศตัวแปรเพื่อระบุจำนวนมิติและจำนวนลำดับหรือแถวสำหรับวางข้อมูล (Colume) ด้วย ไม่งั้นจะเกิด Error!

คำสั่ง Array สามารถเขียนได้หลายลักษณะ หลากหลายรูปแบบ ดังนี้

1.Array แบบใช้คำสั่ง For In Next

2.Array แบบใช้คำสั่ง For Next , While Wend และ Do Until

3.Array แบบใช้คำสั่ง UBound

4.AutoIt Array (คำสั่งของโปรแกรม)

5.Library Array (คำสั่งที่ประยุกต์เขียนขึ้นมา)
--------------------------------------------------------------------
Array For Next แบบจำนวนเท่า หมายถึง จะต้องระบุจำนวนลูป ให้เท่ากันกับ อาเรย์ที่ประกาศไว้ หรือ ไม่มากไปกว่าจำนวนอาเรย์ที่ประกาศ

อาเรย์แบบแนวตั้ง 1มิติ (ลำดับ หรือ row) ใช้ MessageBox แสดงผล
โค๊ด: [Select]
Dim $Aarray[4]
$Aarray[0] = "One"
$Aarray[1] = "Two"
$Aarray[2] = "Three"
$Aarray[3] = "Four"
$output = ""
For $i = 0 To 3
$output &= $Aarray[$i]&@CRLF
Next
MsgBox(4096, "1Array", $output)
-----------------------------------------------------------------
อาเรย์แบบแนวนอน 1มิติ (ลำดับ หรือ row) ใช้ MessageBox แสดงผล
โค๊ด: [Select]
Dim $Aarray[4] = ["One","Two","Three","Four"]
$output = ""
For $i = 0 To 3
$output &= $Aarray[$i]&@CRLF
Next
MsgBox(4096, "1Array", $output)
------------------------------------------------
Array แบบไม่ต้องกำหนดจำนวนลูปในการนับ ใช้คำสั่ง: UBound กระจายข้อมูลแทน

มันจะคอยตรวจสอบข้อมูลทั้งหมดใน Array Elements นับข้อมูลหมดเมื่อไหร่ก็หยุดนับเอง

โค๊ด: [Select]
Dim $array[4] = ["One","Two","Three","Four"]
$output = ""
For $i = 0 To UBound($array)-1
$output &= $array[$i]&@CRLF
Next
MsgBox(4096, "1Array", $output)
----------------------------------------------------------------------
Array แบบใช้คำสั่ง: For In Next ..ไม่ใช้ตัวเลขในการนับ
แต่ใช้ตัวตัวแปร $elements ดำเนินการเปรียบเทียบข้อมูลใน Array elements แทน
ตัวแปรจะลูปนับข้อมูลไปเรื่อยๆจนกว่าจะหมด

โค๊ด: [Select]
Dim $array[4] = ["One","Two","Three","Four"]
$output = ""
For $elements In $array
$output &= $elements&@CRLF
Next
MsgBox(4096, "1Array", $output)

ยังความรู้อีกเพียบ ต้องคอยติดตาม หรือ ต้องตามอาจารย์มาติดๆ ..อิอิ
Coolfirmed by (0)สมาชิก:
 
« แก้ไขครั้งสุดท้าย: 29 มกราคม 2012, 12:18:22 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #15 เมื่อ: 29 มกราคม 2012, 11:45:02 »
ความรู้เพิ่มเติมเกี่ยวกับ Array 2 มิติ ใช้คำสั่ง:ArrayDisplay เพื่อแสดงผลข้อมูล

การทำความเข้าใจเกี่ยวกับอาเรย์2มิติ สำหรับอาจารย์ เป็นเรื่องที่ง่ายมาก

แต่มีเรื่องที่ยากกว่าคือ เขียนบทความยังไง?ให้คนที่เรียนรู้นั้น..เข้าใจ อย่างที่อาจารย์เข้าใจ

ตั้งแต่เขียนบทความมา เรื่องอาเรย์เป็นเรื่องที่เขียนยากสุด น้อยคนที่จะถามกลับ เมื่อติดปัญหาในการเขียนสคริ๊ป

อาจารย์ก็เลยเหมารวมว่า ทุกคนเข้าใจกันหมด และก็เลยไม่รู้ว่า ใคร?ศึกษาไปก้าวหน้ามากน้อยแค่ไหน
-------------------------------------------------------------------------------------------------------------
เบื้องต้นเรามาเรียนรู้เกี่ยวกับ โครงสร้าง รูปแบบ ของ อาเรย์ 2 มิติ ว่าประกอบด้วยอะไรบ้าง

[ ]  หมายถึง วงเล็บเหลี่ยม ใช้สำหรับครอบหรือระบุถึงจำนวนข้อมูลที่มีอยู่ใน Array Elements
      ระบุถึงแถวของข้อมูลทั้งในทางแนวตั้ง (row) และ แนวนอน (col)
      และทั้งใช้ทำเป็นกรอบครอบข้อมูลทั้งหมดไว้ หรือแม้กระทั่งระบุหรือครอบข้อมูลบางข้อมูลไว้

ประกาศตัวแปร: Dim Array [2] [4]  หมายถึง 2row 4col มีข้อมูลหรือวางข้อมูลได้ 2 ลำดับ
                      จากบนลงล่าง มีข้อมูลหรือวางข้อมูลได้ 4 ช่องcol จากซ้ายไปขวา
                       วางข้อมูลจำนวน2แถว หรือ เท่ากับจำนวนลำดับ (2row)

, หมายถึง เครื่องหมาย comma หรือ ลูกน้ำ ใช้สำหรับกั้นหรือแบ่งแนวเขตข้อมูล

" " หรือ ' '  หมายถึง ใช้สำหรับครอบข้อมูลที่เป็น String หรือ ตัวอักษร
-------------------------------------------------------------------------------------
ต้องระบุจำนวนข้อมูล ให้พอดีกับ row , col  หรือชั้นที่จะวางข้อมูลด้วย

ระบุชั้น row , col เกินกว่าจำนวนข้อมูลได้ แต่ห้ามระบุข้อมูลเกินชั้นวาง จะเกิด Error! ทันที

เช่นในกรณีย์ ถ้าเปลี่ยนเลข 2 เป็นเลข 1 หรือ 4 เป็น 3 เท่ากับ ชั้นไม่พอวางของ Error! ก็จะถามหา

Example:
โค๊ด: [Select]
#Include <Array.au3>
        ; row col          ;ข้อมูลชั้นที่1                         ;ข้อมูลชั้นที่2
Dim $Array[2] [4] = [["One","Two","Three","Four"],["Five","Six","Seven","Eight"]]

_ArrayDisplay($Array, "2Array - hori")

------------------------------------------------------
โค๊ด: [Select]
#Include <Array.au3>
       
Dim $Array[2][4]
     ;row col
$Array[0] [0] = "One"
$Array[0] [1] = "Two"       ;ข้อมูลชั้นที่1
$Array[0] [2] = "Three"
$Array[0] [3] = "four"
$Array[1] [0] = "Five"
$Array[1] [1] = "Six"
$Array[1] [2] = "Seven"      ;ข้อมูลชั้นที่2
$Array[1] [3] = "Eight"

_ArrayDisplay($Array, "2Array - vert")
             
--------------------------------------------------------------------
อันนี้ใช้ MessageBox แสดงผล ..อาจารย์กำลังจะบอกว่า ถ้าเข้าใจเรื่องอาเรย์ ..จะรูปแบบไหนก็เขียนได้หมด

โค๊ด: [Select]
Dim $Array[2][4]
     
$Array[0] [0] = " One"
$Array[0] [1] = " Two"
$Array[0] [2] = " Three"
$Array[0] [3] = " four"
$Array[1] [0] = " Five"
$Array[1] [1] = " Six"
$Array[1] [2] = " Seven"
$Array[1] [3] = " Eight"
$Adata = ""
$Bdata = ""
For $i = 0 To UBound($Array, 2)-1
    $Adata &= $Array[0][$i]
$Bdata &= $Array[1][$i]
Next
MsgBox(4096, "2Array - vert", $Adata&@CRLF&$Bdata)
;---------------------------------------------------
Dim $Array[2][4]=[["One","Two","Three","Four"],["Five","Six","Seven","Eight"]]

For $i = 0 To UBound($Array, -1)-1
    $Adata &= $Array[0][$i]&@CRLF
    $Bdata &= $Array[1][$i]&@CRLF
Next
MsgBox(4096, "2Array - hori", $Adata&@CRLF&$Bdata)
-------------------------------------------------------------------------
ความจริงอย่างนึงที่หลีกเลี่ยงไม่ได้ คือ การออกแบบเขียนอาเรย์

ให้สามารถวางข้อมูล ให้ตรงตามตำแหน่งที่ต้องการจะวาง

มาลองดูกันครับว่า จะสามารถทำได้หรือไม่?     
Coolfirmed by (0)สมาชิก:
 
« แก้ไขครั้งสุดท้าย: 31 มกราคม 2012, 14:14:45 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #16 เมื่อ: 23 กุมภาพันธ์ 2012, 09:25:15 »
โปรแกรม Timer Utilities ..อาจารย์สร้างเพื่อปูแนวทางให้ท่านฝึกหัดแก้ไขโค๊ด

ลองนำโค๊ดไปเขียนปรับปรุงเพิ่มเติมดูครับ ว่าจะนำไปประยุกใช้งานอะไรดี เช่น -

ตั้งเวลาตัดเน็ต (Internet Cafe) หรือ ตั้งเวลาปิดเครื่อง (Shutdown Timer)

โค๊ด: [Select]
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>
#Include <GuiButton.au3>

$Form1 = GUICreate("Timer", 246, 150, -1, -1, BitOR($WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS), BitOR($WS_EX_TOPMOST,$WS_EX_WINDOWEDGE))
$Label1 = GUICtrlCreateLabel("00:00:00", 8, 8, 230, 67, $SS_SUNKEN)
GUICtrlSetFont(-1, 48, 800, 0, "DS-Digital")
GUICtrlSetColor(-1, 0x00FFFF)
GUICtrlSetBkColor(-1, 0x575C64)
$Button1 = GUICtrlCreateButton("Start", 16, 120, 75, 25, $WS_GROUP)
GUICtrlSetState(-1, $GUI_DISABLE)
$Button2 = GUICtrlCreateButton("Stop", 152, 120, 75, 25, $WS_GROUP)
$Combo1 = GUICtrlCreateCombo("", 96, 120, 49, 25)
GUICtrlSetData(-1, "1|5|10|30|60")
$Progress = GUICtrlCreateProgress(9, 99, 228, 12)
GUICtrlSetData(-1, 100)
$Progress1 = GUICtrlCreateProgress(9, 87, 228, 12)
GUICtrlSetData(-1, 100)
$Progress2 = GUICtrlCreateProgress(9, 75, 228, 12)
GUICtrlSetData(-1, 100)
GUISetState(@SW_SHOW)

Global $sec = 60
Global $min
Global $hour = 0

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
        Case $Button1
AdlibRegister("Timer", 1000)
Case $Combo1
$min = GUICtrlRead($Combo1)-1
ControlSetText("Timer", "", $Label1, StringFormat("%02i:%02i:%02i", $hour, $min, $sec))
    GUICtrlSetState($Button1, $GUI_ENABLE)
Case $Button2
AdlibUnRegister("Timer")
EndSwitch
WEnd

Func Timer()
    $sec -= 1
    ControlSetText("Timer", "", $Label1, StringFormat("%02i:%02i:%02i", $hour, $min, $sec))
If $sec <= 0 Then
       $min -= 1
   $sec = 60
If $min = -1 Then
        Beep(1000)
;control?!?here.
   AdlibUnRegister("Timer")
   EndIf
   EndIf
EndFunc
Coolfirmed by (0)สมาชิก:
 
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #17 เมื่อ: 24 กุมภาพันธ์ 2012, 07:51:01 »
ความรู้เกี่ยวกับ Item

หลายคนสับสนและสงสัยเกี่ยวกับคำว่า Item ที่ใช้ในคำสั่งต่างๆ อาจารย์พอที่จะอธิบายให้ได้ ดังนี้

Item หมายถึง ข้อความ หรือ ตัวอักษรใดๆ เป็นชื่อต่างๆที่อ้างขึ้นมาสำหรับใช้ควบคุมการทำงานใน Object นั้นๆ

Item มีส่วนประกอบต่างๆ ดังนี้

1. Item Index  หมายถึง ตำแหน่งของชื่อที่จัดวางไว้เป็นลำดับๆ เช่น index 0, 1, 2, 3, 4 ..... ต่อกันไปเรื่อยๆ เป็นต้น

2. Item Data หมายถึง ข้อมูลต่างๆที่มีอยู่ใน Item Index ลำดับนั้นๆ เช่น -

index 0 หรือตำแหน่งแรก Item data สมมุติเป็นหมายเลข 50
index 1 หรือตำแหน่งสอง Item data สมมุติเป็นหมายเลข 100
index 2 หรือตำแหน่งสาม Item data สมมุติเป็นหมายเลข 150

3. Item Text หมายถึง ชื่อข้อมูลต่างๆ เช่น - เป็ด , ไก่ , ห่าน ตัวอย่าง เช่น -

ลำดับที่[0] 1. เป็ด 50 ตัว
ลำดับที่[1] 2. ไก่ 100 ตัว
ลำดับที่[2] 3. ห่าน 150 ตัว

Item ต่างๆมีลักษณะการทำงาน คือ มีทั้ง รับ และ ส่ง ..ชื่อไอเทม หรือ ข้อมูลที่มีอยู่ในไอเทมนั้นๆ ดังนี้

1. Get Item Select (Index)
2. Get Item Text
3. Get Item Data
4. Set Item Select (Index)
5. Set Item Text
6. Set Item data
7. Item Count (Index)

ความจริงแล้ว สิ่งต่างๆที่มีอยู่ใน ไอเทม ลำดับนั้นๆ เราสามารถเลือกใช้อย่างใดอย่างหนึ่งก็ได้ ItemText หรือ ItemData

เพื่อให้เกิดจินตนาการ เห็นภาพการทำงานต่างๆที่เกี่ยวข้องกับ Item ได้ชัดเจนขึ้น ให้ลองรันโค๊ดด้านล่าง และอ่านคำอธิบาย

โค๊ด: [Select]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiListView.au3>
#include <GuiButton.au3>

$hForm = GUICreate("Item sample", 444, 299, -1, -1)
$hListView = GUICtrlCreateListView("", 24, 24, 394, 206)
$Button1 = GUICtrlCreateButton("SetItem", 24, 256, 75, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("GetItem", 104, 256, 75, 25, $WS_GROUP)
$Button3 = GUICtrlCreateButton("SelectItem", 184, 256, 75, 25, $WS_GROUP)
$Button4 = GUICtrlCreateButton("ItemCount", 264, 256, 75, 25, $WS_GROUP)
$Button5 = GUICtrlCreateButton("DeleteItems", 344, 256, 90, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
_GUICtrlListView_AddColumn($hListView, "ColumName", 200)
GUICtrlCreateListViewItem("ItemName 1", $hListView)
GUICtrlCreateListViewItem("ItemName 2", $hListView)
GUICtrlCreateListViewItem("ItemName 3", $hListView)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete()
Exit
Case $Button1
            MsgBox(64, "SetItem", "Change to new items name")
_GUICtrlListView_SetItem($hListView, "New ItemName 1", 0, 0)
            _GUICtrlListView_SetItem($hListView, "New ItemName 2", 1, 0)
_GUICtrlListView_SetItem($hListView, "New ItemName 3", 2, 0)
Sleep(500)
ToolTip("Please wait! Restoring item name", 420, 400)
Sleep(1500)
            _GUICtrlListView_SetItem($hListView, "ItemName 1", 0, 0)
            _GUICtrlListView_SetItem($hListView, "ItemName 2", 1, 0)
_GUICtrlListView_SetItem($hListView, "ItemName 3", 2, 0)
ToolTip("")
Case $Button2
$aItem = _GUICtrlListView_GetItem($hListView, 0)
            $bItem = _GUICtrlListView_GetItem($hListView, 1)
$cItem = _GUICtrlListView_GetItem($hListView, 2)
MsgBox(4160, "Information", $aItem[3]&@CRLF& $bItem[3]&@CRLF& $cItem[3])
Case $Button3
_GUICtrlListView_SetItemSelected($hListView, 1)
Sleep(500)
MsgBox(4160, "Information", "Line : "&_GUICtrlListView_GetSelectedCount($hListView)&" Selected = " & _GUICtrlListView_GetItemSelected($hListView, 1))
Case $Button4
MsgBox(4160, "Information", "All Items = "&_GUICtrlListView_GetItemCount($hListView)&" Row")
Case $Button5
            _GUICtrlListView_DeleteAllItems($hListView)
If _GUICtrlListView_GetItemCount($hListView)= 0 then
Sleep(500)
ToolTip("Please wait! Creatting Items", 420, 400)
Sleep(1500)
GUICtrlCreateListViewItem("ItemName 1", $hListView)
GUICtrlCreateListViewItem("ItemName 2", $hListView)
GUICtrlCreateListViewItem("ItemName 3", $hListView)
ToolTip("")
EndIf
EndSwitch
WEnd

 

 

Coolfirmed by (0)สมาชิก:
 
« แก้ไขครั้งสุดท้าย: 24 กุมภาพันธ์ 2012, 15:08:28 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #18 เมื่อ: 24 กุมภาพันธ์ 2012, 17:22:28 »
อันนี้สำคัญ โค๊ดนี้ยังไม่เคยเปิดเผยที่ไหนมาก่อน อาจารย์ออกแบบเขียนคำสั่งเอง

เป็นการใช้งาน ListView ..คลิ๊กเลือกชื่อไฟล์ในรายการ และกดปุ่มเพื่ิอสั่งรันโปรแกรมนั้นๆ

ลองนำไปศึกษาและประยุกต์ใช้งานดูครับ

โค๊ด: [Select]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiListView.au3>
#include <GuiButton.au3>

$hForm = GUICreate("Form1", 200, 150, -1, -1)
$hListView = GUICtrlCreateListView("", 10, 16, 180, 80)
_GUICtrlListView_AddColumn($hListView, "Colum", 50)
_GUICtrlListView_AddColumn($hListView, "File", 100)
$Button1 = GUICtrlCreateButton("GetItemSelect", 55, 110, 91, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
_CreateItemData()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
        Case $Button1
$iCount = _GUICtrlListView_GetSelectedIndices($hListView)
If $iCount = '0' Then
ShellExecute("Notepad.exe", "", "", "open")
    _GUICtrlListView_SetItemSelected($hListView, 0, False)
ElseIf $iCount = '1' Then
    ShellExecute("Calc.exe", "", "", "open")
_GUICtrlListView_SetItemSelected($hListView, 1, False)
Else
    MsgBox(4160, "", "กรุณาคลิ๊กเลือกItemบนลิสท์รายการ")
EndIf
EndSwitch
WEnd

Func _CreateItemData()
   $aItem = _GUICtrlListView_AddItem($hListView, "1")
   _GUICtrlListView_AddSubItem($hListView, $aItem, "Notepad.exe", 1)
   $bItem = _GUICtrlListView_AddItem($hListView, "2")
   _GUICtrlListView_AddSubItem($hListView, $bItem, "Calc.exe", 1)
EndFunc
Coolfirmed by (0)สมาชิก:
 
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..

ออฟไลน์ sak2005

  • สมาชิกกิตติมศักดิ์
  • *
  • โพสต์: 1,934
  • คูลเฟิร์ม: 7826
  • zula: 3653.25
  • เพศ: ชาย
    • ดูรายละเอียด
  • ตำแหน่ง:ครูผู้ให้

  • ล็อคอิน @ วันนี้ เวลา 01:45:45
Re: รวมความรู้เกี่ยวกับ AutoIt ปี 2555 (Update)
« ตอบกลับ #19 เมื่อ: 01 มีนาคม 2012, 13:05:53 »
แจกโค๊ดโปรแกรม เครื่องคิดเลข

หลังจากไม่ประสบความสำเร็จในการออกแบบเขียนโปรแกรมเครื่องคิดเลขมานาน

อาจารย์ค้นคิดออกแบบเขียนใหม่อยู่หลายครั้ง จึงประสบความสำเร็จ ดังโค๊ดที่เห็นอยู่ด้านล่าง

โค๊ด: [Select]
#NoTrayIcon
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <GuiEdit.au3>
#Include <GuiButton.au3>
Opt('MustDeclareVars', 1)
CalculatorPlus()
Func CalculatorPlus()
    Global $Ads, $Gta, $Gts, $Ed1, $Ed2, $Ed3, $Ed4, $Child
    Local $hForm = GUICreate("Calculator Plus", 257, 227, -1, -1)
    Local $MenuItem2 = GUICtrlCreateMenu("&Edit")
    Local $MenuItem_Copy = GUICtrlCreateMenuItem("Copy     Ctrl+C", $MenuItem2)
    Local $MenuItem_Paste = GUICtrlCreateMenuItem("Paste     Ctrl+V", $MenuItem2)
    GUICtrlSetState(-1, $GUI_DISABLE)
    Local $MenuItem1 = GUICtrlCreateMenu("&View")
    Local $MenuItem6 = GUICtrlCreateMenuItem("Standard", $MenuItem1, -1 , 1)
    GUICtrlSetState(-1, $GUI_CHECKED)
    Local $MenuItem7 = GUICtrlCreateMenuItem("Scientific", $MenuItem1)
    Local $MenuItem11 = GUICtrlCreateMenuItem("Conversion", $MenuItem1)
    Local $MenuItem12 = GUICtrlCreateMenuItem("", $MenuItem1)
    Local $MenuItem13 = GUICtrlCreateMenuItem("Digit grouping ", $MenuItem1)
    GUICtrlSetState(-1, $GUI_CHECKED)
    Local $MenuItem14 = GUICtrlCreateMenuItem("Classic View", $MenuItem1)
    GUICtrlSetState(-1, $GUI_CHECKED)
    Local $MenuItem4 = GUICtrlCreateMenu("&Help")
    Local $MenuItem8 = GUICtrlCreateMenuItem("Help Topics", $MenuItem4)
    Local $MenuItem9 = GUICtrlCreateMenuItem("", $MenuItem4)
    Local $MenuItem_About = GUICtrlCreateMenuItem("About Calculator Plus", $MenuItem4)
    GUISetIcon("C:\WINDOWS\system32\calc.exe")
    Local $Button1 = GUICtrlCreateButton("1", 52, 137, 36, 29, $WS_GROUP)
    Local $Button2 = GUICtrlCreateButton("2", 92, 137, 36, 29, $WS_GROUP)
    Local $Button3 = GUICtrlCreateButton("3", 132, 137, 36, 29, $WS_GROUP)
    Local $Button4 = GUICtrlCreateButton("4", 52, 104, 36, 29, $WS_GROUP)
    Local $Button5 = GUICtrlCreateButton("5", 92, 104, 36, 29, $WS_GROUP)
    Local $Button6 = GUICtrlCreateButton("6", 132, 104, 36, 29, $WS_GROUP)
    Local $Button7 = GUICtrlCreateButton("7", 52, 71, 36, 29, $WS_GROUP)
    Local $Button8 = GUICtrlCreateButton("8", 92, 71, 36, 29, $WS_GROUP)
    Local $Button9 = GUICtrlCreateButton("9", 132, 71, 36, 29, $WS_GROUP)
    Local $Button_Zero = GUICtrlCreateButton("0", 52, 170, 36, 29, $WS_GROUP)
    Local $Button11 = GUICtrlCreateButton("+/-", 92, 170, 36, 29, $WS_GROUP)
    Local $Button_Dot = GUICtrlCreateButton(".", 132, 170, 36, 29, $WS_GROUP)
    Local $Button_Add = GUICtrlCreateButton("+", 172, 170, 36, 29, $WS_GROUP)
    Local $Button_Ans = GUICtrlCreateButton("=", 212, 170, 36, 29, $WS_GROUP)
    Local $Button_Mul = GUICtrlCreateButton("*", 172, 104, 36, 29)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    Local $Button_Div = GUICtrlCreateButton("/", 172, 71, 36, 29, $WS_GROUP)
    Local $Button17 = GUICtrlCreateButton("sqrt", 212, 71, 36, 29, $WS_GROUP)
    Local $Button18 = GUICtrlCreateButton("%", 212, 104, 36, 29, $WS_GROUP)
    Local $Button19 = GUICtrlCreateButton("1/x", 212, 137, 36, 29, $WS_GROUP)
    Local $Button_Sub = GUICtrlCreateButton("-", 172, 137, 36, 29, $WS_GROUP)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    Local $Button21 = GUICtrlCreateButton("MC", 7, 71, 36, 29, $WS_GROUP)
    Local $Button22 = GUICtrlCreateButton("MR", 7, 104, 36, 29, $WS_GROUP)
    Local $Button23 = GUICtrlCreateButton("MS", 7, 137, 36, 29, $WS_GROUP)
    Local $Button24 = GUICtrlCreateButton("M+", 7, 170, 36, 29, $WS_GROUP)
    Local $Button_BS = GUICtrlCreateButton("Backspace", 52, 35, 63, 29, $WS_GROUP)
    Local $Button26 = GUICtrlCreateButton("CE", 119, 35, 63, 29, $WS_GROUP)
    Local $Button_Clear = GUICtrlCreateButton("C", 186, 35, 63, 29, $WS_GROUP)
    Local $Edit1 = GUICtrlCreateEdit("", 8, 0, 239, 23, BitOR($ES_RIGHT,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
Local $Edit3 = GUICtrlCreateEdit("", 8, 0, 239, 23, BitOR($ES_RIGHT,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    Local $Edit2 = GUICtrlCreateEdit("", 8, 0, 239, 23, BitOR($ES_RIGHT,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN))
    GUICtrlSetData(-1, "0")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    Local $Edit4 = GUICtrlCreateEdit("", 8, 0, 239, 23, BitOR($ES_RIGHT,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
    GUICtrlSetData(-1, "0")
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    Local $Graphic1 = GUICtrlCreateGraphic(10, 37, 26, 25, BitOR($SS_NOTIFY,$SS_SUNKEN))
    $Child = GUICreate("About calculator Plus", 319, 165, -1, -1, BitOR($WS_MINIMIZEBOX,$WS_DLGFRAME,$WS_GROUP,$WS_CLIPSIBLINGS))
    Local $Button_OK = GUICtrlCreateButton("OK", 120, 105, 75, 25, $WS_GROUP)
    GUICtrlCreateLabel("Microsoft @ Calculator Plus"&@CRLF&"Version1.0"&@CRLF&"Copyright @ 2004 Microsoft Corporation", 50, 8, 200, 100)
GUICtrlCreateLabel("This product is licensed under the terms of the ", 8, 68, 224, 17)
    Local $Label_User = GUICtrlCreateLabel("End-User", 232, 68, 48, 17)
    GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FFFF)
    Local $Label_Agree = GUICtrlCreateLabel("License Agreement.", 8, 85, 98, 17)
    GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x00FF00)
    GUISwitch($hForm)
    GUISetState()
    WinSetOnTop("Calculator Plus", "", 1)
    While 1
        Local $nMsg = GUIGetMsg()
        Switch $nMsg
            Case $GUI_EVENT_CLOSE
                GUIDelete($Child)
GUIDelete($hForm)
Exit
            Case $MenuItem_About
GUISwitch($Child)
                GUISetState(@SW_SHOW, $Child)
WinSetOnTop("About calculator Plus", "", 1)
            Case $Button_OK
GUISwitch($hForm)
    GUISetState(@SW_HIDE, $Child)
Case $MenuItem_Copy
ClipPut(_GUICtrlEdit_GetText($Edit1))
GUICtrlSetState($MenuItem_Paste, $GUI_ENABLE)
GUICtrlSetState($Edit4, $GUI_SHOW)
_GUICtrlEdit_SetText($Edit1, '')
Case $MenuItem_Paste
    _GUICtrlEdit_SetText($Edit4, ClipGet())
GUICtrlSetState($Edit4, $GUI_SHOW)
Case $Button_BS
                If _GUICtrlEdit_GetText($Edit1)='' Then
                _GUICtrlEdit_SetText($Edit1, '')
                GUICtrlSetState($Edit2, $GUI_SHOW)
GUICtrlSetState($Edit4, $GUI_HIDE)
            Else
            GUICtrlSetState($Edit2, $GUI_HIDE)
            Local $StringTR=StringTrimRight(_GUICtrlEdit_GetText($Edit1), 1)
                _GUICtrlEdit_SetText($Edit1, $StringTR)
            EndIf
            Case $Button_Clear
                _GUICtrlEdit_SetText($Edit1, '')
            GUICtrlSetState($Edit1, $GUI_HIDE)
            GUICtrlSetState($Edit2, $GUI_SHOW)
GUICtrlSetState($Edit4, $GUI_HIDE)
            Case $Button7
            GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit1, $GUI_SHOW)
            Local $GT7=_GUICtrlEdit_GetText($Edit1)
            _GUICtrlEdit_SetText($Edit1, $GT7&7)
    Case $Button8
            GUICtrlSetState($Edit2, $GUI_HIDE)
                GUICtrlSetState($Edit1, $GUI_SHOW)
            Local $GT8=_GUICtrlEdit_GetText($Edit1)
    _GUICtrlEdit_SetText($Edit1, $GT8&8)
            Case $Button9
            GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit1, $GUI_SHOW)
            Local $GT9=_GUICtrlEdit_GetText($Edit1)
    _GUICtrlEdit_SetText($Edit1, $GT9&9)
            Case $Button4
            GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit1, $GUI_SHOW)
            Local $GT4=_GUICtrlEdit_GetText($Edit1)
    _GUICtrlEdit_SetText($Edit1, $GT4&4)
            Case $Button5
            GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit1, $GUI_SHOW)
            Local $GT5=_GUICtrlEdit_GetText($Edit1)
            _GUICtrlEdit_SetText($Edit1, $GT5&5)
            Case $Button6
            GUICtrlSetState($Edit2, $GUI_HIDE)
                GUICtrlSetState($Edit1, $GUI_SHOW)
            Local $GT6=_GUICtrlEdit_GetText($Edit1)
            _GUICtrlEdit_SetText($Edit1, $GT6&6)
            Case $Button1
GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit1, $GUI_SHOW)
            Local $GT1=_GUICtrlEdit_GetText($Edit1)
            _GUICtrlEdit_SetText($Edit1, $GT1&1)
            Case $Button2
    GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit1, $GUI_SHOW)
            Local $GT2=_GUICtrlEdit_GetText($Edit1)
            _GUICtrlEdit_SetText($Edit1, $GT2&2)
            Case $Button3
            GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit1, $GUI_SHOW)
            Local $GT3=_GUICtrlEdit_GetText($Edit1)
            _GUICtrlEdit_SetText($Edit1, $GT3&3)
            Case $Button_Zero
GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit1, $GUI_SHOW)
            Local $GT_Zero=_GUICtrlEdit_GetText($Edit1)
            _GUICtrlEdit_SetText($Edit1, $GT_Zero&0)
     Case $Button_Dot
            If Not StringInStr(_GUICtrlEdit_GetText($Edit1), ".")Then
                    GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit1, $GUI_SHOW)
            Local $GT_Dot=_GUICtrlEdit_GetText($Edit1)
            _GUICtrlEdit_SetText($Edit1, $GT_Dot&'.')
                    EndIf
            Case $Button_Add
            $Ed1 = _GUICtrlEdit_GetText($Edit1)
            If $Ed1 = '' then ContinueLoop
                _GUICtrlEdit_SetText($Edit1, '')
            GUICtrlSetState($Edit1, $GUI_HIDE)
            GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit3, $GUI_SHOW)
    _GUICtrlEdit_SetText($Edit3, $Ed1)
    $Gta=_GUICtrlButton_GetText($Button_Add)
            Case $Button_Sub
            $Ed2 = _GUICtrlEdit_GetText($Edit1)
                If $Ed2 = '' then ContinueLoop
    _GUICtrlEdit_SetText($Edit1, '')
            GUICtrlSetState($Edit1, $GUI_HIDE)
            GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit3, $GUI_SHOW)
            _GUICtrlEdit_SetText($Edit3, $Ed2)
$Gta=_GUICtrlButton_GetText($Button_Sub)
            Case $Button_Mul
            $Ed3 = _GUICtrlEdit_GetText($Edit1)
                If $Ed3 = '' then ContinueLoop
            _GUICtrlEdit_SetText($Edit1, '')
            GUICtrlSetState($Edit1, $GUI_HIDE)
            GUICtrlSetState($Edit2, $GUI_HIDE)
    GUICtrlSetState($Edit3, $GUI_SHOW)
            _GUICtrlEdit_SetText($Edit3, $Ed3)
            $Gta =_GUICtrlButton_GetText($Button_Mul)
            Case $Button_Div
            $Ed4 = _GUICtrlEdit_GetText($Edit1)
                If $Ed4 = '' then ContinueLoop
            _GUICtrlEdit_SetText($Edit1, '')
            GUICtrlSetState($Edit1, $GUI_HIDE)
            GUICtrlSetState($Edit2, $GUI_HIDE)
            GUICtrlSetState($Edit3, $GUI_SHOW)
_GUICtrlEdit_SetText($Edit3, $Ed4)
            $Gta =_GUICtrlButton_GetText($Button_Div)
            Case $Button_Ans
                Select
                Case $Gta = '+'
                        $Ads =  _GUICtrlEdit_GetText($Edit1) + $Ed1
                    _GUICtrlEdit_SetText($Edit1, '')
                    _GUICtrlEdit_SetText($Edit1, $Ads)
                    Case $Gta = '-'
                        $Ads = $Ed2 - _GUICtrlEdit_GetText($Edit1)
                    _GUICtrlEdit_SetText($Edit1, '')
                    _GUICtrlEdit_SetText($Edit1, $Ads)
                    Case $Gta = '*'
                $Ads = $Ed3 * _GUICtrlEdit_GetText($Edit1)
                    _GUICtrlEdit_SetText($Edit1, '')
                    _GUICtrlEdit_SetText($Edit1, $Ads)
                    Case $Gta = '/'
                $Ads = $Ed4 / _GUICtrlEdit_GetText($Edit1)
    _GUICtrlEdit_SetText($Edit1, '')
                    _GUICtrlEdit_SetText($Edit1, $Ads)
            Case Else
    If $Ads = @error Then
            _GUICtrlEdit_SetText($Edit1, '')
            GUICtrlSetState($Edit2, $GUI_SHOW)
    EndIf
EndSelect
EndSwitch
WEnd
EndFunc ;==> Calculator Plus
Coolfirmed by (1)สมาชิก:
« แก้ไขครั้งสุดท้าย: 09 มีนาคม 2012, 12:06:34 โดย sak2005 »
จำเป็นต้องใช้ FlashPlayer

คำคม: เมื่อเวลาเปลี่ยน.. ทุกอย่างเปลี่ยน..