ThaiPBL.com

PowerBuilder Library Thailand

อีเมล พิมพ์ PDF

กำหนด type of window เป็นแบบ respond

โดยปกติแล้ว เวลาที่เรากำหนด type of window เป็นแบบ respond เราจะไม่สามารถทำการปรับขนาดของ window ในขณะที่รัน application ได้ แต่เรามีวิธีทำได้โดยการเรียกใช้ API เข้ามาจัดการได้
โดยทำตามขั้นตอนดังนี้

ขั้นแรกให้ทำการกำหนดตัวแปรแบบ Local External Functions ดังนี้

function long GetWindowLongA (long hWindow, integer nIndex) Library "user32.dll"
function long SetWindowLongA (long hWindow, integer nIndex, long dwNewLong) library "user32.dll"
เสร็จแล้วก็กำหนดตัวแปรแบบ Global Variable สำหรับใช้อ้างถึง PFC service ตัวที่เราจะใช้ดังนี้

n_cst_numerical lnv_numerical

จากนั้นให้ทำการสร้าง function ขึ้นมามีการกำหนดค่าต่างๆลงไปดังนี้ และตั้งชื่อฟังก์ชั่นว่า resize ก็แล้วกัน

Name Type Pass
aw_window Window Value
ab_control Boolean Value

เสร็จแล้วก็เขียนสคริปต์ด้านล่างนี้ลงไป

long ll_Styles
boolean lb_Control
n_cst_numerical lnv_numerical

constant long WS_THICKFRAME = 262144
constant long WS_SYSMENU = 524288

ll_styles = GetWindowLongA(handle(aw_window), -16)
if ll_styles 0 then

ll_styles = lnv_num.of_BitWiseOr(ll_styles, WS_THICKFRAME)
if ab_Control then
ll_styles = lnv_num.of_BitWiseOr(ll_styles, WS_SYSMENU)
end if

return SetWindowLongA(handle(aw_window), -16, ll_styles)

end if

return -1
เมื่อเสร็จแล้วก็ต้องมีการทดลองใช้งานให้สร้าง วินโดวส์แบบ respond ขึ้นมาและคลิกเครื่องหมายที่ช่อง control menu ออกซะเสร็จแล้วก็ save และที่ open event ของตัว respond นี้ให้ทำการเขียนสคริปต์ลงไปดังนี้

resize(w_respond,true)

เสร็จแล้วก็ทดลองันดูนะครับลองเปรียบเทียบกับการที่เราไม่เรียกใช้ฟังก์ชั่นดังกล่าว เราจะพบว่าเมื่อมีการเรียกใช้ ฟังก์ชั่นตัวนี้เราจะสามารถปรับขนาดของ respond window ได้
บทความนี้มาจาก www.soopawat.com