Đây là những câu lệnh gọi hàm thực thi dùng trong lập trình giao diện GUI , đây là những bước cơ bản ,những bạn nào mới làm wen có thể tham khảo , tài liệu này tôi sưu tầm được trên mang ..
Tổng quan tính chất và hàm trong GUI
Mình xin gửi các bạn là tài liệu dạng .pdf của tài liệu trong Help của Matlab. Các bạn nào có thể tự đọc hiểu được English thì tài liệu này là quá đầy đủ rồi. Các bài viết của mình dựa một phần vào tnài liệu này và dựa vào kinh nghiệm khi mình lập trình.
Mình đang làm đồ án tốt nghiệp nên mỗi ngày cố gắng viết một tí cho các bạn đọc nhé. Mà đồ án của mình làm với FPGA, chỉ dùng System Generator là liên quan đến Matlab thôi :d.
Trong bài viết này, mình giới thiệu các bạn các tính chất đặc trưng của các điều khiển mà các bạn hay gặp.
Để hiện cửa sổ các tính chất Property Inspector của một điều khiển chúng ta có 3 cách sau:
Nhấn đúp chuột vào mỗi điều khiển.
Chọn điều khiển rồi vào menu View, chọn Property Inspector.
Chọn điều khiển rồi nhấn vào biểu tượng Property Inspector, gần chỗ M-file editor.
Khi đó, cửa sổ Property Inspector sẽ hiện ra. Khi nhấn vào các điều khiển khác thì cửa sổ này sẽ hiện thông tin tương ứng cho điều khiển đó.
Một vài tính chất chung của các điều khiển mà các bạn nên chú ý:
Tính chất (property)
Giá trị (value)
Miêu tả
Enable
on, inactive, off Mặc định là: on
Xác định khi nào thì điều khiển hiển thị lên giao diện. Đặt = off, thì điều khiển sẽ không xuất hiện.
Max
Vô hướng. Mặc định là 1.
Giá trị lớn nhất, tùy thuộc vào từng điều khiển.
Min
Vô hướng. Mặc định là 0
Giá trị nhỏ nhất, tùy thuộc vào từng điều khiển.
Position
Vector gồm 4 phần tử (left, bottom, width, height)
Kích thước của điều khiển và vị trí tương đối của nó với điều khiển chứa nó.
String
Units
Đơn vị đo lường dùng trong xác định vị trí.
Value
Vô hướng hoặc vector
Giá trị của component, tùy thuộc vào từng component.
Ngoài ra, thuộc tính cực kì quan trọng mà các bạn phải thay ngay từ đâu là: tag. Thuộc tính này giống thuộc tính Caption mà các bạn gặp trong Visual Basic, chính là tên để phân biệt giữa các điều khiển. Mỗi điều khiển chỉ có một tên duy nhất. các bạn nên qui định cho dễ nhớ nhé. Mình nghĩ là nên kết hợp giữa tên của loại điều khiển và mục đích của điều khiển đó.
Ví dụ: một ô nhập dữ liệu giá trị tiền, thuộc Edit Box nên mình đặt tag là: editMoney.
Bây giờ đi vào từng điều khiển cụ thể.
1. Push Button
Thay đổi chữ hiển thị (label) hiển thị trên điều khiển này bằng cách thay đổi thuộc tính String. Chữ hiển thị trên Button chỉ có thể là 1 dòng, nên nếu bạn gõ nhiều dòng trong thuộc tính String thì chỉ hiển thị dòng đầu tiên. Nếu số kí tự dòng đầu tiên lớn hơn bề rộng có thể hiển thị chữ được của bề mặt Button thì Matlab tự rút ngắn String đó với dấu 3 chấm (…).
Thay đổi vị trí của PushButton = thay đổi thuộc tính Position. Có thể code trong MFile (thay đổi trong quá trình thực thi) hoặc thay đổi ngay lúc thiết kế(gắp thả).
Để thêm một ảnh vào PushButton thì chúng ta gán thuộc tính CData bằng một ma trận m x n x 3 của giá trị RGB. Thực hiện trong MFile ở hàm Open của điều khiển để ngay khi chạy chương trình đã load ảnh này vào rồi.
img = rand(16,64.3);
set(handles.pushbutton1, ‘CData’,img);
Chú ý: Có thể tạo biểu tượng riêng của bạn cho các nut Push Button bằng cách dùng Icon Editor, sau đó dùng hàm ind2rgb để chuyển sang ảnh gán vào thuộc tính CData.
Các sự kiện xảy ra khi nhấn Push Button được viết trong các hàm ngắt như Callback,..
2. Slider (Thanh trượt)
Thay đổi khoảng giá trị của Slider bằng cách thay đổi thuộc tính Min và Max. Tất nhiên Min < Max.
Giá trị hiện tại của Slider được = giá trị của thuộc tính Value. Nên khi set hoặc get thì ta lấy giá trị này.
Khi click vào 2 cái mũi tên 2 bên thì thanh trượt sẽ trượt tương ứng về 2 phía theo một bước nào đó. Thay đổi thuộc tính SliderStep = [min_step, max_step]. min_step là giá trị bước nhảy khi click vào 2 mũi tên. Còn Max_step là giá trị khi mà click vào trong vùng trượt.
3. Radio Button
Để biết nút Radio có được đánh dấu hay là không thì chúng ta xem thuộc tính Value của nó.
Value = 1 thì check
Value = 0 thì là k check
4. Check Box
Check Box thì thuộc tính quan trọng cũng tương tự như Radio Button.
5. Edit Text
Thuộc tính quan trọng là String, chính là xâu kí tự hiển thị trên Edit Text. Chú ý: để hiển thị như ý muốn thì các bạn cần phải xem kĩ thêm các hàm xử lý string nhé.
Để hiển thị Edit Text dạng Multi-line thì cần thay đổi thuộc tính Max, Min. Max> Min. Ví dụ: Max = 2, Min = 0 sẽ hiển thị 2 dòng đó.
6. Static Text
Thằng này tương tự như Edit Text.
7. Popup Menu
8. List Box
9. Toggle Button
Tổng quan về hàm Callback:
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
Tổng quan tính chất và hàm trong GUI
Mình xin gửi các bạn là tài liệu dạng .pdf của tài liệu trong Help của Matlab. Các bạn nào có thể tự đọc hiểu được English thì tài liệu này là quá đầy đủ rồi. Các bài viết của mình dựa một phần vào tnài liệu này và dựa vào kinh nghiệm khi mình lập trình.
Mình đang làm đồ án tốt nghiệp nên mỗi ngày cố gắng viết một tí cho các bạn đọc nhé. Mà đồ án của mình làm với FPGA, chỉ dùng System Generator là liên quan đến Matlab thôi :d.
Trong bài viết này, mình giới thiệu các bạn các tính chất đặc trưng của các điều khiển mà các bạn hay gặp.
Để hiện cửa sổ các tính chất Property Inspector của một điều khiển chúng ta có 3 cách sau:
Nhấn đúp chuột vào mỗi điều khiển.
Chọn điều khiển rồi vào menu View, chọn Property Inspector.
Chọn điều khiển rồi nhấn vào biểu tượng Property Inspector, gần chỗ M-file editor.
Khi đó, cửa sổ Property Inspector sẽ hiện ra. Khi nhấn vào các điều khiển khác thì cửa sổ này sẽ hiện thông tin tương ứng cho điều khiển đó.
Một vài tính chất chung của các điều khiển mà các bạn nên chú ý:
Tính chất (property)
Giá trị (value)
Miêu tả
Enable
on, inactive, off Mặc định là: on
Xác định khi nào thì điều khiển hiển thị lên giao diện. Đặt = off, thì điều khiển sẽ không xuất hiện.
Max
Vô hướng. Mặc định là 1.
Giá trị lớn nhất, tùy thuộc vào từng điều khiển.
Min
Vô hướng. Mặc định là 0
Giá trị nhỏ nhất, tùy thuộc vào từng điều khiển.
Position
Vector gồm 4 phần tử (left, bottom, width, height)
Kích thước của điều khiển và vị trí tương đối của nó với điều khiển chứa nó.
String
Units
Đơn vị đo lường dùng trong xác định vị trí.
Value
Vô hướng hoặc vector
Giá trị của component, tùy thuộc vào từng component.
Ngoài ra, thuộc tính cực kì quan trọng mà các bạn phải thay ngay từ đâu là: tag. Thuộc tính này giống thuộc tính Caption mà các bạn gặp trong Visual Basic, chính là tên để phân biệt giữa các điều khiển. Mỗi điều khiển chỉ có một tên duy nhất. các bạn nên qui định cho dễ nhớ nhé. Mình nghĩ là nên kết hợp giữa tên của loại điều khiển và mục đích của điều khiển đó.
Ví dụ: một ô nhập dữ liệu giá trị tiền, thuộc Edit Box nên mình đặt tag là: editMoney.
Bây giờ đi vào từng điều khiển cụ thể.
1. Push Button
Thay đổi chữ hiển thị (label) hiển thị trên điều khiển này bằng cách thay đổi thuộc tính String. Chữ hiển thị trên Button chỉ có thể là 1 dòng, nên nếu bạn gõ nhiều dòng trong thuộc tính String thì chỉ hiển thị dòng đầu tiên. Nếu số kí tự dòng đầu tiên lớn hơn bề rộng có thể hiển thị chữ được của bề mặt Button thì Matlab tự rút ngắn String đó với dấu 3 chấm (…).
Thay đổi vị trí của PushButton = thay đổi thuộc tính Position. Có thể code trong MFile (thay đổi trong quá trình thực thi) hoặc thay đổi ngay lúc thiết kế(gắp thả).
Để thêm một ảnh vào PushButton thì chúng ta gán thuộc tính CData bằng một ma trận m x n x 3 của giá trị RGB. Thực hiện trong MFile ở hàm Open của điều khiển để ngay khi chạy chương trình đã load ảnh này vào rồi.
img = rand(16,64.3);
set(handles.pushbutton1, ‘CData’,img);
Chú ý: Có thể tạo biểu tượng riêng của bạn cho các nut Push Button bằng cách dùng Icon Editor, sau đó dùng hàm ind2rgb để chuyển sang ảnh gán vào thuộc tính CData.
Các sự kiện xảy ra khi nhấn Push Button được viết trong các hàm ngắt như Callback,..
2. Slider (Thanh trượt)
Thay đổi khoảng giá trị của Slider bằng cách thay đổi thuộc tính Min và Max. Tất nhiên Min < Max.
Giá trị hiện tại của Slider được = giá trị của thuộc tính Value. Nên khi set hoặc get thì ta lấy giá trị này.
Khi click vào 2 cái mũi tên 2 bên thì thanh trượt sẽ trượt tương ứng về 2 phía theo một bước nào đó. Thay đổi thuộc tính SliderStep = [min_step, max_step]. min_step là giá trị bước nhảy khi click vào 2 mũi tên. Còn Max_step là giá trị khi mà click vào trong vùng trượt.
3. Radio Button
Để biết nút Radio có được đánh dấu hay là không thì chúng ta xem thuộc tính Value của nó.
Value = 1 thì check
Value = 0 thì là k check
4. Check Box
Check Box thì thuộc tính quan trọng cũng tương tự như Radio Button.
5. Edit Text
Thuộc tính quan trọng là String, chính là xâu kí tự hiển thị trên Edit Text. Chú ý: để hiển thị như ý muốn thì các bạn cần phải xem kĩ thêm các hàm xử lý string nhé.
Để hiển thị Edit Text dạng Multi-line thì cần thay đổi thuộc tính Max, Min. Max> Min. Ví dụ: Max = 2, Min = 0 sẽ hiển thị 2 dòng đó.
6. Static Text
Thằng này tương tự như Edit Text.
7. Popup Menu
8. List Box
9. Toggle Button
Tổng quan về hàm Callback:
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




0 nhận xét:
Đăng nhận xét
♦ Mời bạn gửi Nhận xét của mình. Nếu không có tài khoản, bạn vẫn có thể nhận xét bằng cách Chọn hồ sơ là Tên/URL hay Ẩn danh.
♦ Các bạn nên để lại nhận xét của mình để góp ý , phản hồi, đánh giá bài viết . Thông qua Nhận xét hãy để cho mọi người biết Bạn là ai.
BQT + NLH +