
Enable Các Đối Tượng GUI Matlab
Như bạn đã biết thì trong mỗi một đối tượng nào đó như là Edittext, Push Button, Static Text,… Thì đều có trạng thái hiện thị ra cho người sử dụng có thể sử dụng chuột từ bàn phím để tác động vào đối tượng đó để làm một nhiệm vụ mà người dùng đã quy định sẵn.

Một câu hỏi đặt ra là Tôi không muốn đối tượng Enable khi mà điều kiện nào đó mà tôi áp đặt sẵn chưa thỏa mãn thì có được hay không? Xin trả lời với bạn là có. Chức năng Enable này khá là hữu dụng trong thực tế.
Chẳng hạn tôi lấy một ví dụ này. Khi bạn truy cập vào một Website nào đó có chức năng đăng ký thành viên chẳng hạn. Mặc định thì nút đăng ký đó vẫn hiện thị nhưng bạn không thể nhấn vào đó để đăng ký. Trong trường hợp bạn đã điền đầy đủ thông tin hợp lệ như là họ tên, quê quán, giới tính… rồi thì lúc đó nút đăng ký mới hiện nổi bật nên để bạn nhấn vào đó.
Trong Matlab nói chung và trong lập trình GUI nói riêng thì thuộc tính Enable này đã có sẵn của các đối tượng rồi bạn chỉ cần lấy ra sử dụng mà thôi. Thì để bạn hiểu rõ hơn vấn đề tôi cùng bạn làm một ví dụ nho nhỏ về thuộc tính này.
| Cách sử dụng Enable trong GUI Matlab
Để không mất qua nhiều thời xây dựng giao diện thì Tôi đã xây dựng một giao diện đơn giản như hình dưới đây. Việc quan trọng chúng ta là học cách on off thuộc tính enable thôi.

Không biết bạn có để ý không? Nếu bạn để ý đến Tag: pushbutton2 bạn có thấy đối tượng này mờ không? Để mờ như vậy chính là ta đã off đi thuộc tính Enable của nó rồi. Mặc định tất cả đối tượng sẽ on. Để off thì bạn hãy vào Property Inspector của đối tượng đó và tìm đến dòng Enable chọn off

Khi bạn chọn off rồi sau đó bạn chạy trương trình đó nên thì bạn sẽ không thao tác được đến đối tượng đó được.
Oke. Nhiệm vụ ở ví dụ này sẽ như sau: Khi trương trình chạy nên thì ta sẽ nhập một chuỗi nào đó vào Tag edit1 ví dụ như là VuTienIT chẳng hạn. Nếu nhập đúng chuỗi đó thì khi nhấn vào vào Tag pushbutton1 (Kiem Tra) thì sẽ xuất hiện thông báo và đối tượng Tag pushbutton2 (Ve Do Thi) sẽ được nổi nên cho phép bạn nhấn và vẽ 1 đồ thị nào đó vào Tag axes1. Ngược lại nếu bạn nhập sai chuỗi đó thì ta sẽ không làm gì cả. Ta cùng bắt tay vào làm nhé
1. Đối tượng tag: pushbutton1
Bây giờ bạn hãy mở file .m đó ra tìm đến function có string là Kiem Tra để tiến hành viết chức năng cho nó,
getValue = get(handles.edit1, 'string');
Trong đó: get() lấy giá trị của edittext có tag là edit1 và gán vào biến getValue
flag = 0; if getValue == 'VuTienIT' msgbox(['Xin Chao ' , getValue]); flag = 1; end
Trong đó:
- Gán cờ flag mặc định là 0
- Kiểm tra xem biến getValue có bằng VuTienIT hay không? Nếu đúng thì:
- msgbox(): Hiện thị một thông báo nào đó
- [‘Xin Chao ‘ , getValue] : Nối 2 chuỗi lại với nhau
- Gán cờ flag = 1;
checkEnable = get(handles.pushbutton2, 'Enable'); if strcmp(checkEnable, 'off') && flag == 1 set(handles.pushbutton2, 'Enable', 'on'); end
Trong đó:
- Biến checkEnable sẽ nhận giá trị on hay off của đối tượng pushbutton2
- strcmp(checkEnable, ‘off’) Kiểm tra xem nó đang off hay on
- Trong trường hợp đối tượng đó đang off thì ta sẽ bật nên thành on để ta có thể nhấn chuột vào được.
Bây giờ bạn chạy thử trương trình nên xem thế nào nhé.

Như bạn thấy thì nút Ve Do Thi đã hiện nên rồi đó. Giờ ta tiến hành sử lý đến đối tượng này
2. Đối tượng tag: pushbutton2
Việc Demo cho bạn sử dụng thuộc tính Enable cho nên ta không chú tâm lắm đến việc khác cho nên Tôi sẽ vẽ một đò thị đơn giản sau,
x = [-5 : 0.01 : 5]; y = x.^2; plot(x, y);
Nếu bạn chưa biết hay còn yếu về vẽ đồ thị thì bạn có thể xem lại bài này hướng dẫn vẽ đồ thị để hiểu rõ hơn vấn đề.
Oke bạn thử chạy trương trình nên xem nào

Như vậy cơ bản thì tôi và bạn đã hoàn thành xong ví dụ trên rồi đó. Thực ra về viết code thì ta vẫn có thể viết gắn gọn tối ưu hơn. Nhưng chúng ta đang học cách sử dụng thuộc tính này cho nên ta không đi sâu vào vấn đề đó. Qua ví dụ bạn đã biết cách sử dụng thuộc tính Enable chưa?
Tổng Kết:
Trên đây chúng ta đã hoàn thành xong việc sử dụng Enable như thế nào trong việc lập trình giao diện trên phần mền Matlab cũng như chức năng có để làm gì. Nếu bạn còn thắc mắc gì xin vui lòng để lại bình luận phía dưới tôi sẽ cố gắng giải đáp cho bạn. Chúc bạn thành công!