Ngày 27 tháng 10 năm 2012

Bài 3 : Tổng quan về hàm Callback trong lập trình GUI



Bài viết này định nghĩa hàm CallBack , các loại hàm và các ứng xử của chúng ...

Sau khi các bạn tạo cái giao diện đã xong thì đến phần lập trình rất quan trọng, chính là lập trình các hành vi của các điều khiển để đáp ứng lại các sự kiện như nhấn phím, kéo thanh trượt, khi chọn menu, ... đó chính là các hàm Callback (giống như các hàm sự kiện trong Visual Basic).

Thế nào là hàm Callback ?

Callback là một hàm mà các bạn viết miêu tả hành vi của một thành phần GUI xác định hoặc là của chính GUI figure, điều khiển các hành vi của chúng bằng cách thực hiện một số hành động được viết trong hàm, để đáp ứng lại một sự kiện của chính thành phần đó. Cách lập trình này thường gọi là : Lập trình lái sự kiện (event driven programming). 

Ví dụ, khi bạn nhấn một Button thì vẽ đồ thị đúng không ?? Vậy thì khi nhấn phím thì hiển nhiên đã gọi hàm Callback nhấn phím của Button đó, và trong hàm Callback này có lệnh vẽ đồ thị rồi.

Các loại hàm Callback ?

Mỗi thành phần có nhiều hàm Callback khác nhau, các bạn xem thêm ở Properties nhé. Sau đây liệt kê các loại hàm Callback và các điều khiển có thể có hàm này.

Callback property
Sự kiện xảy ra
Thành phần có hàm này
ButtonDownFcn
Thực hiện khi người dùng nhấn chuột lên hoặc trong 5 pixels của component hoặc figure. Nếu là component thì thuộc tính Enable phải on ( tất nhiên rùi ).
Axes,figure,button
group,panel,user
interfacecontrols
Callback
Hành động của các component, ví dụ như thực thi khi người dùng click lên Push Button hoặc chọn một thành phần menu.
Contextmenu,
menu,userinterface
controls
CloseRequestFcn
Thực thi trước khi figure đóng.
Figure
CreateFcn
Tạo các thành phần.Nó được dùng để khởi tạo các thành phần khi nó được tạo ra. Nó thực thi sau khi thành phần hoặc figure được tạo, nhưng trước khi hiển thị lên trên giao diện người dùng.
Axes,figure,button
group,contextmenu,
menu,panel,user
interfacecontrols
DeleteFcn
Xóa thành phần. Nó có thể được dùng để thực hiện hành động xóa bỏ trước khi component hoặc figure bị hủy bỏ.
Axes,figure,button
group,contextmenu,
menu,panel,user
interfacecontrols
KeyPressFcn
Thực thi khi người dùng nhấn một phím trong keyboard và component hoặc figure của hàm callback đó đang được focus.
Figure,userinterface
controls
KeyReleaseFcn
Thực thi khi người dùng nhả một phím đang bấm và figure vẫn đang được focus.
Figure
ResizeFcn
Thực thi khi người dùng thay đổi kích thước của panel, button group, hoặc figure với điều kiện thuộc tính Resize của figure = on.
Buttongroup,figure,
panel
SelectiononChangeFcn
Thực thi khi người dùng lựa chọn một nút Radio Button khác hoặc toggle button khác trong thành phần Button Group.
Buttongroup
WindowButtonDownFcn
Thực thi khi bạn nhấn chuột (trái hoặc phải) trong khi con trỏ vẫn nằm trong vùng cửa sổ figure.
Figure
WindowButtonMotionFcn
Thực thi khi bạn di chuyển con trỏ trong vùng cửa sổ figure.
Figure
WindowButtonUpFcn
Ban đầu bạn nhấn chuột (trái, hoặc phải) thì khi nhả phím đó ra thì hàm này sẽ được gọi.
Figure
WindowScrollWheelFcn
Thực thi khi nút cuộn của chuột cuộn trong khi figure vẫn trong tầm focus.
Figure