Professional Documents
Culture Documents
จากรูป เลือก popup menus: general_pop ที่เราไดสรางไวแลวมาผูกกับ canvas: employee_can เมื่อผูกแลวสามารถใชงาน popup
menus บน canvas: employee_can ไดโดยคลิกเมาสดานขวาเพื่อเรียกใชงาน
จากรูป ผูใชเลือกวันที่ที่ตองการไดโดยใชเมาสคลิกเลือก หรือใชปุมบน calendar ที่มีเครื่องหมาย <<, <, >, >> เลื่อนไปยังเดือน
หรือปกอนหนานี้ หรือถัดไป เมื่อไดวันที่ที่ตองการแลวใหคลิกปุม Ok ถาตองการออกจาก calendar ใหคลิกปุม Cancel
ความหมายของปุมบน calendar
<< : เลื่อนไปปกอนหนานี้ 1 ป
< : เลื่อนไปเดือนกอนหนานี้ 1 เดือน
> : เลื่อนไปเดือนถัดไป 1 เดือน
>> : เลื่อนไปปถัดไป 1 ป
สวนประกอบของ Calendar
เมื่อเพิ่ม calendar ใน Form เราตองเพิ่มสวนประกอบที่สําคัญ 2 สวนใน Form กอนคือ calendar object group และ calendar.pll
- Calendar object group
Object นี้ประกอบดวย data blocks, buttons และ canvases ที่จําเปนตองใชเพื่อแสดง calendar เราถือวา calendar object group
เปนเพียงสวนหนึ่งที่ถูกเลือกใชงาน มันถูกเก็บใน object library ชื่อ stndrd20.olb
- Calendar90.pll เปน PL/SQL Library ที่กําหนดใหมีกลไกการทํางานของ calendar
เมื่อ calendar object group ถูกยายไปไวใน Form จะมี form objects จํานวนมากถูกเพิ่มเขาไปใน Form ถาเราตองการเปลี่ยน
default format ของ calendar ใหแกไขที่ objects ตามรายการดานลางดังนี้
- Control block ชือ
่ date_control_block เปนที่เก็บ buttons
- Control block ชือ่ date_button_block มี buttons สําหรับแตละวันในเดือน
- Content canvas ชื่อ date_lov_canvas ใชแสดง calendar
- Visual attribute ชื่อ date_normal_va เปน format ของ date ที่ไมถูกเลือก
- Visual attribute ชื่อ date_selected_va เปน format ของ date ที่ถูกเลือก
- Visual attribute ชื่อ date_weekend_va เปน format ของ weekend date คือวันเสาร และอาทิตย
Calendar90.pll มี package ชื่อ date_lov ใชแสดง calendar และทํางานดานอื่นๆ และมี procedure ที่ใชงานรวมกันคือ get_date
เราสามารถนํา procedure นี้ไปไวใน when-button-pressed trigger หรือ key-listval trigger เพื่อใหแสดง calendar
Date_lov.get_date(calendar date,
form item,
X position,
Y position,
window title,
ok button text,
cancel button text,
weekend,
autoconfirm,
autoskip);
บทที่ 20 List of Values, Radio Button, Item List และ Popup Menus
377
สําหรับ Autoconfirm ถากําหนดเปน True คา year ที่ return จะเปนป 0007 แทนที่จะเปน 2007 ถาเปน False คาที่ return จะถูกตอง
คือเปนป 2007 ซึ่งผูเขียนยังไมทราบสาเหตุวาเกิดจากอะไร
เมื่อระบุ X และ Y position ใน date_lov.get_dae สิ่งที่ควรระวังคือหามใช parameter: position ในคําสั่ง set_window_property ที่
เราใชเพื่อกําหนดต่ําแหนงของ runtime Form ใน windows ตัวอยางเชน
SET_WINDOW_PROPERTY(:SYSTEM.EVENT_WINDOW,POSITION,20,15);
สราง table นี้ไดโดย run script file: chap_20_02.sql จาก SQL*Plus ใหพิมพคําสั่ง
SQL>@c:\dev10g\script\chap_20\chap_20_02.sql
บทที่ 20 List of Values, Radio Button, Item List และ Popup Menus
378
ขอมูลตัวอยาง
Emp_code Emp_name Birth_date Birth_place Salary
10001 JOHNSON SYSDATE BANGKOK 25000
10002 SMITH SYSDATE BANGKOK 78000
10003 MARRY SYSDATE BANGKOK 11000
10004 WILLIAM SYSDATE BANGKOK 8000
10005 LINDA SYSDATE BANGKOK 43000
2) นํา PL/SQL Library ชื่อ calendar90.pll ไปผูก (attach) กับ Form ที่สรางไวในขั้นตอนแรก
จากรูป คลิกที่ Attached Libraries node แลวคลิกเครื่องหมายบวกสีเขียวมุมบนซายของ Object navigator หรือจาก menu bar
เลือก Edit->Create จะปรากฎหนาจอใหใส Library ใหคลิกปุม Browse เลือก calendar90.pll ที่เก็บใน c:\dev10g\library\chap_20
แลวคลิกปุม Attach จะมีหนาจอ dialog box แสดงขอความให remove path ใหเลือกเปน No
จากรูป แสดง PL/SQL Library ชื่อ calendar90.pll ที่ถูก attach เขากับ Form แลว
บทที่ 20 List of Values, Radio Button, Item List และ Popup Menus
379
จากรูป คลิกเลือก library ที่ตองการ complie คือ calendar90 ที่อยูภายใต PL/SQL Libraries node แลวกดปุม Ctrl+T หรือจาก
menu bar เลือก Program->Compile Module ก็จะไดไฟล calendar90.plx เก็บไวใน folder ที่เดียวกันกับ calendar90.pll
เมื่อ compile ไดไฟล calendar90.plx แลว ใหนําไฟล calendar90.pll, calendar90.plx และ stndrd20.olb ไปไวในไวใน default
directory ของ Form คือ C:\DevSuiteHome_1\forms ถาไปไวที่อื่น เชน c:\dev10g\lib\chap_20 เราตองสราง path ใหมิฉะนั้นเมื่อ
สั่ง run Form จะทําให calendar ไมถูกแสดงออกมาเนื่องจากหา calendar90.plx ไมพบ
บทที่ 20 List of Values, Radio Button, Item List และ Popup Menus
380
จากรูป เมื่อเปดไฟลไดแลว ภายใต standares ใหคลิกที่ Library Tabs จะปรากฎ objects ยอยดังรูป
2) ใชเมาสลาก calendar ไป
ไวที่ Object Groups node
1) ดับเบิลคลิกที่
components
บทที่ 20 List of Values, Radio Button, Item List และ Popup Menus
381
จากรูป component: calendar ถูกยายไปไวใน Object Groups node แลว หลังยาย component: calendar สังเกตไดวามี objects
ตางๆเปนจํานวนมากถูกเพิ่มเขามาใน Object navigator
Button แสดง
calendar
จากรูป ผูเขียนสราง button ไวดานขวาของ item: ฺBirth date และใน button ไดเขียน trigger code ใน when-button-pressed
trigger ดังนี้
บทที่ 20 List of Values, Radio Button, Item List และ Popup Menus
382
นอกจากเขียน trigger code ไวใน button แลว ถาเราไมตองการใชวิธีคลิกที่ button เพื่อใหแสดง calendar (ไมตองการใหแสดง
button บน Form) แตตองการใชวิธีกดปุม Ctrl+L แทนเหมือนกับการเรียก List of Values ออกมาใชงานก็สามารถทําได
ใหนํา trigger code ทั้งหมดที่เขียนใน when-button-pressed trigger ไปไวใน key-listval trigger ของ item: birth_date แทนก็จะ
ไดผลเชนเดียวกันกับที่เขียนไวใน button การเรียกใชงานเมื่อเคอเซอรอยูที่ field: Birth date บน Form ใหเรากดปุม Ctrl+L จะเปน
การประมวลผลคําสั่งที่เขียนใน key-listval trigger ใหแสดง calendar ออกมา
จากรูป เมื่อผูใชคลิกที่ปุมขาง field: Birth date หรือเมื่อเคอเซอรอยูที่ field: Birth date ใหกดปุม Ctrl+L จะปรากฎหนาจอ calendar
ใหคลิกเลือกวันที่ที่ตองการแลววันที่นั้นจะถูกนําไปแสดงใน field: Birth date และเคอเซอรจะเลื่อนไปยัง field ถัดไปคือ Birth place
ทันทีโดยอัตโนมัติ
บทที่ 20 List of Values, Radio Button, Item List และ Popup Menus
383
บทที่ 20 List of Values, Radio Button, Item List และ Popup Menus