ThaiPBL.com

PowerBuilder Library Thailand

อีเมล พิมพ์ PDF

การทำให้รูปภาพมีการเปลี่ยนแปลงเมื่อมีการเลื่อน เมาส์

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

มาเริ่มกันเลยดีกว่า เริ่มแรกก็ให้เปิด วินโดวส์ เพนเตอร์ขึ้นมา แล้วก็กำหนด Local External function ดังนี้ครับ

Function Boolean TrackMouseEvent(ref trackmouseevent lpEventTrack) Library "USER32.DLL"
Function Boolean _TrackMouseEvent(ref trackmouseevent lpEventTrack) Library "COMCTL32.DLL"

จากนั้นก็วาง picture button ลงไปหนึ่งอันเลือกรูปภาพที่ต้องการลงไป แล้วก็คลิกขวา เลือก สคริปต์ เลือก clicked event ก่อน แล้วก็เขียนสคริปต์ลงไปดังนี้

close(getparent())

เสร็จแล้วก็ทำการกำหนด user event ดังนี้ครับ

mousemove ทำการ map กับ pbm_mousemove

mousehover

mouseleave

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

Border = true
BorderStyle = StyleRaised!

ที่ moseleave event

Border = false

ที่ mosemove event

trackmouseevent lpEventTrack

if not ib_mouseover then
ib_mouseover = true

lpEventTrack.cbSize = 16 //structure is 4 ulongs which is 16 bytes
lpEventTrack.dwFlags = TME_HOVER + TME_LEAVE
lpEventTrack.hwndTrack = Handle (this)
lpEventTrack.dwHoverTime = 100 //hover time-out (if TME_HOVER was specified in dwFlags), in milliseconds

//if this does not work, try swaping this call with the emulated one below
// TrackMouseEvent(lpEventTrack)
_TrackMouseEvent(lpEventTrack)
end if

ที่ other event

choose case message.Number
case WM_MOUSEHOVER
this.TriggerEvent("mousehover")
case WM_MOUSELEAVE
ib_mouseover = false
this.TriggerEvent("mouseleave")
end choose

จากนั้นก็ทำการ save แล้วก็ลองรันดูนะครับ เมื่อคุณเลื่อนเมาส์ไปบน รูปภาพก็จะเห็นการเปลี่ยนแปลงเกิดขึ้น ลองดูนะครับ