การเขียนโปรแกรมด้วย PocketC# ตอนที่ 3

สวัสดีครับเพื่อน ๆ ทุกท่าน ในตอนที่ 2 เราได้ทดลองสร้าง Form เปล่า ๆ ไปแล้ว ตอนนี้เราลองมาดูการรับข้อมูลเข้าไปทำงานในฟอร์ม ว่ามีวิธีการอย่างไร โดยทั่วไปแล้ว การรับข้อมูลของ PocketPC จะรับเข้าผ่านช่องทางหลัก ๆ อยู่สองช่องทาง คือ ผ่านทาง Keyboard และผ่านทาง Touch Screen

เมื่อเราสร้างฟอร์มแล้ว และต้องการรับข้อมูลจาก Keyboard หรือทาง Touch Screen เราก็ต้องใช้ method หรือคำสั่งเพิ่มเติมดังนี้

การรับข้อมูลจาก Keyboard

protected override void OnKeyDown(KeyEventArgs keyArgs)

{

//คำสั่งที่ต้องการให้ทำงานเมื่อกด key;

}

การรับข้อมูลจาก Touch Screen

protected override void OnMouseDown(MouseEventArgs mouseArgs)

{

//คำสั่งที่ต้องการให้ทำงานเมื่อแตะหน้าจอ;

}

ขอให้เพื่อน ๆ ลองเพิ่มคำสั่งตามนี้ ต่อท้าย method iami() ครับ

protected override void OnKeyDown(KeyEventArgs keyArgs)

{

MessageBox.Show(“Key Pressed”,”Keys”);

}

protected override void OnMouseDown(MouseEventArgs mouseArgs)

{

MessageBox.Show(“Screen Touch”,”Screen”);

}

จากนั้นลอง Build และ Run ดู โดยลองกดปุ่มทิศทาง หรือใช้ปากกาแตะหน้าจอดูครับ จะเห็นได้ว่าฟอร์มจะตอบสนองต่อการกดปุ่มหรือแตะด้วยการแสดงข้อความเป็น MessageBox ขึ้นมา

สำหรับ MessageBox นี้จะมีองค์ประกอบสำคัญอยู่สองส่วนคือส่วนข้อความใน Box และส่วนหัวเรื่องของ Box ข้อความในเครื่องหมายคำพูดอันแรก จะเป็นข้อความใน Box ส่วนข้อความในเครื่องหมายคำพูดอันที่สองจะเป็นหัวเรื่องของ Box ครับ

เพื่อความชัดเจนว่า ฟอร์มของเรารับข้อมูลจากการแตะหน้าจอจริง ๆ ไม่ได้โม้ ขอให้เพื่อน ๆ เพิ่มคำสั่งใน MessageBox ของ method OnMouseDown ดังนี้ครับ

protected override void OnMouseDown(MouseEventArgs mouseArgs)

{

MessageBox.Show(“Screen Touch=”+mouseArgs.X+”:”+mouseArgs.Y,”Screen”);

}

จากนั้น Build และ Run แล้วใช้ปากกาจิ้มหน้าจอดูที่ตำแหน่งต่าง ๆ จะเห็นข้อความแสดงถึงตำแหน่งในแนวแกน X และ Y ของจุดที่ปากกาจิ้มลงไปที่หน้าจอครับ เพราะเราได้เขียนคำสั่งให้ดึงตำแหน่งของการจิ้ม จาก mouseArgs มาแสดงใน MessageBox ของเราด้วย ซึ่งปกติหน้าจอของ PocketPc จะมีขนาดกว้างในแนวแกน X เท่ากับ 240 จุด ขนาดความสูงในแนวแกน Y เท่ากับ 320 จุด แต่จากการจิ้มดูในฟอร์มของเรา ความสูงจะมีไม่เกิน 295 จุด เพราะต้องเสียพื้นที่ให้กับแถบหัวของฟอร์มไปประมาณ 25 จุด นั่นเอง สำหรับจอ VGA ปกติจะมีขนาด 480x640 จุด แต่ผมไม่มีเครื่องทดสอบ ก็ต้องรบกวนเพื่อน ๆ ที่ใช้จอ VGA ทดลองจิ้มดูนะครับ

ครับ ก็เป็นแนวทางการเขียนคำสั่งเพื่อควบคุมการทำงานของฟอร์มเปล่า ๆ ของเรานะครับ ผมก็ใช้เทคนิคนี้อีกนั่นแหละ ที่ใช้ควบคุมโปรแกรมไฟฉุกเฉินให้มันเปลี่ยนสีหน้าจอเมื่อแตะหน้าจอแต่ละครั้งครับ และใช้เทคนิคการนำค่า X,Y ที่ได้จากหน้าจอตำแหน่งต่าง ๆ ไปใช้ในเกมจับผิดสารพัดสัตว์ด้วยครับ ง่ายไหมครับ

การควบุคมฟอร์มด้วย controls

จากที่กล่าวมาตอนแรกว่า เมื่อสร้างฟอร์มเปล่า ๆ แล้ว ต่อไปเราก็ต้องออกแบบการแสดงผลบนหน้าจอ ปุ่มกด กล่องข้อความต่าง ๆ เพื่อใช้โต้ตอบกับผู้ใช้ ดังนั้นเราต้องเพิ่มคำสั่งเกี่ยวกับ controls ต่าง ๆ ลงใน method iami() ของเรา ให้มีส่วนต่าง ๆ เป็นโครงสร้างดังนี้

iami()

{

// Form header หรือส่วนหัวของฟอร์ม เช่น Text=”ฉันเป็นฉันเอง” หรือ BackColor=Color.Red ที่เราได้เขียนไปแล้ว

//Controls Declaration การประกาศว่าจะใช้ controls อะไรบ้าง

//Controls Properties การกำหนดคุณสมบัติของ controls

//Add all Controls สั่งให้แสดง controls บนหน้าจอฟอร์ม

//Add Control Events รับคำสั่งจากผู้ใช้ที่ป้อนให้แก่ controls เพื่อปฏิบัติ

}

คราวนี้เรามาลองเขียนการสร้าง controls กันเลยครับ เพื่อไม่ให้สับสน จึงขอให้เพื่อน ๆ ลบ method คำสั่งเกี่ยวกับการรับข้อมูลจาก KeyBoard และ TouchScreen ที่เขียนไว้แล้ว ออกทั้งหมดก่อนครับ คงเหลือไว้แต่ method iami() แบบเดิม แล้วเพิ่มคำสั่งเข้าไปใน iami() ตามนี้ครับ

using System;

using System.Windows.Forms;

using System.Drawing;

namespace testform

{

class iami : Form

{

static void Main()

{

Application.Run(new iami());

}

iami()

{

//Form header

MinimizeBox=false;

Text=”ฉันเป็นฉันเอง”;

BackColor=Color.Red;

//controls declaration

Button button1=new Button();

TextBox textBox1=new TextBox();

Label lbl1=new Label();

//button properties

button1.Location=new Point(90,100);

button1.Size=new Size(60,20);

button1.Text=”ออก”;

//textBox properties

textBox1.Text=”ฉันเป็นฉัน”;

textBox1.Size=new Size(220,40);

textBox1.Location=new Point(10,50);

//label properties

lbl1.Text=”ฉันเป็นฉัน”;

lbl1.Location=new Point(10,10);

lbl1.Size=new Size(220,20);

lbl1.BackColor=Color.Blue;

//Add all controls

Controls.Add(button1);

Controls.Add(textBox1);

Controls.Add(lbl1);

//Add control Events

}

}

}

เวลาเขียนคำสั่งลงใน PocketC# ให้ระวังตัวอักษรใหญ่เล็กให้ดี อย่าลืม จุด กับเครื่องหมาย ; และพิมพ์คำสั่ง lbl1 ให้ดีครับ ต้องพิมพ์ว่า แอลบีแอลหนึ่ง นะครับ เพราะตัวอักษรแอลกับเลขหนึ่ง มันเหมือนกันเป๊ะ ถ้าพิมพ์ผิดจะ compileไม่ผ่านนะเออ

จากชุดคำสั่งข้างต้น เราจะสร้าง controls 3 ตัว คือ Button , TextBox และ Label โดยกำหนดขนาดด้วย Size และกำหนดตำแหน่งด้วย Location ซึ่งอ้างอิงจากตำแหน่ง X,Y บนหน้าจอนั่นเอง นอกจากนี้ยังกำหนดข้อความที่จะแสดงบนปุ่ม หรือกล่องข้อความด้วยคำสั่ง Text และใน Control Label นั้นสามารถกำหนดสีพื้นหลังของข้อความได้ด้วยคำสั่ง BackColor แบบเดียวกับฟอร์ม ต่อมาก็เป็นส่วนการ Add controls เพื่อให้แสดง controls ทั้งสามบนหน้าจอ ส่วนการควบคุม controls ในส่วนสุดท้ายเรายังไม่ได้ใส่คำสั่งเอาไว้ คงมีแต่หัวข้อคือ //Add control Events

จากนั้นลอง Build และ Run ดูครับ จะเห็นฟอร์มสีแดงแป๊ด ปุ่มกด และกล่องข้อความ รวมถึงข้อความมีพื้นหลังสีน้ำเงิน หากเราลองเอาปากกาจิ้มปุ่ม “ออก” ก็จะเห็นมันกะพริบแวบ แวบ แต่ไม่เกิดอะไรขึ้น เพราะเรายังไม่ได้ใส่คำสั่งให้มันทำอะไร ในหัวข้อ //Add control Events นั่นเอง

ช่วงนี้ก็ให้เพื่อน ๆลองเปลี่ยนค่า Size, Location หรือข้อความใน Text ของ Controls ต่าง ๆ ตามต้องการ ระหว่างรอผมเขียนตอนที่ 4 ต่อไปครับ

ขอให้สนุกครับ

[email protected]

5 สิงหาคม 2550

 

 

 

 

 

 

 

 

 

 

 

Hosted by www.Geocities.ws

1