Các bác giúp em cái code về option button

Liên hệ QC

QuytFootball

Thành viên mới
Tham gia
21/8/21
Bài viết
18
Được thích
7
Em có dùng 2 option button trong bảng nhập liêu. Code bắt buộc 1 trong 2 phải được tick mới cho nhập liệu. Em cảm ơn ah

1630414843145.png
 
Tôi nói rất rõ là 2 trường hợp trắc nghiệm và bình chọn là có quyền để trống, và tôi gợi ý code cho 2 trường hợp đó. Còn trường hợp bắt buộc chọn 1 thì phải cẩn thận thôi. Viết cho người khác xài phải kèm hướng dẫn sử dụng, không làm theo ráng chịu. Chỉ khi có quyền để trống mới không để mặc định.
xài một cái CheckBox cho nó lành

Còn Checkbox chỉ dùng cho trường hợp yes/No (đối lập) chứ không dùng cho 2 tuỳ chọn với 2 nội dung không đối lập nhau.
 
Upvote 0
Tôi nói rất rõ là 2 trường hợp trắc nghiệm và bình chọn là có quyền để trống, và tôi gợi ý code cho 2 trường hợp đó. Còn trường hợp bắt buộc chọn 1 thì phải cẩn thận thôi. Viết cho người khác xài phải kèm hướng dẫn sử dụng, không làm theo ráng chịu. Chỉ khi có quyền để trống mới không để mặc định.


Còn Checkbox chỉ dùng cho trường hợp yes/No (đối lập) chứ không dùng cho 2 tuỳ chọn với 2 nội dung không đối lập nhau.
Ở đây cũng nói rất rõ là nếu ai đó nói phải để mặc định thì tôi cũng sẽ nói cũng có các trường hợp được để trống và do đây là việc mở rộng vấn đề mà chủ topic yêu cầu nên không ràng buộc việc có bắt buộc là phải chọn hay không chọn một trong nhiều cái OptionButton. OK?

Vấn đề CheckBox, thử đưa ra trường hợp nào mà 2 OptionButton (và chọn 1 là True) để tôi xử lý với 1 CheckBox đi, chứ nói không thì không được.
 
Lần chỉnh sửa cuối:
Upvote 0
Hi all bros, Cảm ơn anh em đã quan tâm và giúp đỡ nhé. Đúng là một vấn đề nhỏ thôi nhưng khi đi vào chi tiết sẽ thấy nhiều cái cần học hỏi chứ không phải đơn giản.

Mình làm cái userform cho đứa em mới ra trường quản lý 02 xe cuốc và vấn đề san lấp. Khi khởi chạy userfrom sẽ trống cả 2 op_buttons, nhưng mình muốn nó phải chọn xe trước khi đặt lịch nên mới hỏi về vấn đề này nên rất cảm ơn bro @Hoàng Trọng Nghĩa

Về quyền để trống của bro @ptm0412 , mình cũng cảm ơn vì có thể dùng cho 1 userform khác với thông tin có thể không khai báo
 
Upvote 0
Ở đây cũng nói rất rõ ...

Vấn đề CheckBox, thử đưa ra trường hợp nào mà 2 OptionButton (và chọn 1 là True) để tôi xử lý với 1 CheckBox đi, chứ nói không thì không được.
Tôi không muốn tranh luận hoặc cãi nhau: Nghĩa gợi ý 2 trường hợp "không bắt buộc chọn" và tôi gợi ý code khi "không bắt buộc chọn" nha! Đừng nghĩ xa quá rồi kiếm chuyện.
Còn trường hợp 2 tuỳ chọn không đối lập thì thiếu gì:
- Chọn hình tròn hay hình vuông (form tính diện tích) (nếu checkbox thì label là gì? nếu label là "hình tròn" thì khi không check không biết là hình thế nào)
- Chọn nhận quà hay nhận voucher (form đổi điểm) (nếu label của checkbox là "nhận quà" thì khi không check làm sao biết là sẽ nhận gì?)
- Chọn tách sheet hay tắt excel. Chọn label là gì?
 
Upvote 0
Tôi không muốn tranh luận hoặc cãi nhau: Nghĩa gợi ý 2 trường hợp "không bắt buộc chọn" và tôi gợi ý code khi "không bắt buộc chọn" nha! Đừng nghĩ xa quá rồi kiếm chuyện.
Còn trường hợp 2 tuỳ chọn không đối lập thì thiếu gì:
- Chọn hình tròn hay hình vuông (form tính diện tích) (nếu checkbox thì label là gì? nếu label là "hình tròn" thì khi không check không biết là hình thế nào)
- Chọn nhận quà hay nhận voucher (form đổi điểm) (nếu label của checkbox là "nhận quà" thì khi không check làm sao biết là sẽ nhận gì?)
- Chọn tách sheet hay tắt excel. Chọn label là gì?
Đơn giản thế mà ta????

1630488546959.png
 
Upvote 0
Không có Label, tự nhiên để nó trơ trụi thế này? Hiểu hông ta?

View attachment 265222
.............
Nhầm. Chủ thớt chỉ có 2 lựa chọn chứ không nhiều hơn. :D

Có thể dùng Label ngắn gọn vd. "Hãy lựa chọn". Dùng CheckBox thì phải giải thích, không đánh dấu thì nghĩa là gì (hoặc đánh dấu thì nghĩa là gì).
Với OptionButton thì người ta nhìn thấy ngay 2 lựa chọn là "vuông" và "tròn". Với CheckBox nếu Caption = "Hình vuông" thì người dùng hơi lúng túng khi không nhớ lựa chọn "kia" là gì.

Giải thích thì đượng nhiên dài dòng văn tự hơn.

Tất nhiên khi số lựa chọn > 2 (chọn 1 từ n, với n > 2) thì không thể dùng CheckBox. Còn OptionBiutton luôn dùng được.
 
Lần chỉnh sửa cuối:
Upvote 0
Có thể dùng Label ngắn gọn vd. "Hãy lựa chọn".
Nếu bỏ 2 option vào trong 1 frame, thì dùng ngay caption của frame để diễn giải "Chọn hình", lại còn gọn gàng và thẩm mỹ nữa.
Ngoài ra, nếu theo lập luận rằng
phải để người nhập xác định rõ ràng, không vì một thao tác mà quên chú ý đến sự lựa chọn nhằm xác định chủ ý của mình. #16
sau khi nhập liệu xong thì mình lại cho cả 2 chưa chọn gì cả để tiếp tục nhập nghiệp vụ mới #18

Thì khi dùng checkbox sẽ bị mặc dịnh là False ngay từ lúc mới vẽ lên. Nếu dạng Yes/No thì mặc định No, nếu là vuông tròn thì mặc định tròn. Code không can thiệp được.
 
Upvote 0
.............
Nhầm. Chủ thớt chỉ có 2 lựa chọn chứ không nhiều hơn. :D

Có thể dùng Label ngắn gọn vd. "Hãy lựa chọn". Dùng CheckBox thì phải giải thích, không đánh dấu thì nghĩa là gì (hoặc đánh dấu thì nghĩa là gì).
Với OptionButton thì người ta nhìn thấy ngay 2 lựa chọn là "vuông" và "tròn". Với CheckBox nếu Caption = "Hình vuông" thì người dùng hơi lúng túng khi không nhớ lựa chọn "kia" là gì.

Giải thích thì đượng nhiên dài dòng văn tự hơn.

Tất nhiên khi số lựa chọn > 2 (chọn 1 từ n, với n > 2) thì không thể dùng CheckBox. Còn OptionBiutton luôn dùng được.

Hàng nào công việc nấy. Mỗi control có lý do riêng của chúng. Đã là input thì dùng đại một control tổng quát như textbox cũng được, nhưng tất cả những điều kiện mà control khác tự có thì mình lại phải dùng code để làm. Vừa mệt vừa khó kiểm soát.

Căn bản, Option Button được sử dụng khi:
1. có 2 options trở lên, VÀ
2. chỉ được phép chọn 1 trong số options
Tất cả controls khác đều thiếu một hay cả hai tính chất này. Vì vậy:
- Nếu không cần một trong hai tính chất này thì có lẽ nên nghĩ đến control khác.
- Nếu cần cả hai tính chất này thì các controls khác sẽ bắt buộc phải dùng code để bù lắp. Code bù lắp sẽ rất khó bảo trì. Và đối với người quen UI thì sẽ khó hiểu. Điển hình, người ta quen theo luật dấu tròn là option button (một lựa chọn), dấu vuông là checkbox (0-n lựa chọn); bi giờ mình dùng checkbox thay option button thì người dùng sẽ chưng hửng.
 
Upvote 0
- Nếu cần cả hai tính chất này thì các controls khác sẽ bắt buộc phải dùng code để bù lắp. Code bù lắp sẽ rất khó bảo trì. Và đối với người quen UI thì sẽ khó hiểu. Điển hình, người ta quen theo luật dấu tròn là option button (một lựa chọn), dấu vuông là checkbox (0-n lựa chọn); bi giờ mình dùng checkbox thay option button thì người dùng sẽ chưng hửng.
Tôi thì thích cụm từ "bị bất ngờ". Tức đang quen "thế này", tự dưng bị gáo nước lạnh, phải mất một lúc định thần lại.

Thực ra chọn 1 trong "muôn vàn" là dấu hiệu nhận diện của OptionButton. Vì thế cho dù "muôn vàn" = 2 hay > 2 thì đều dùng OptionButton được. Nhưng chọn 1 trong "muôn vàn" không là dấu hiệu nhận diện của CheckBox nên nếu miễn cưỡng dùng CheckBox thì cũng chỉ dùng được khi "muôn vàn" = 2. Dùng được ở đây có cả ý nghĩa là người dùng không thể sơ ý hay cố tình chọn sao cho sảy ra tình huống là không chọn gì cả hoặc chọn hơn 1. Đã bắt chọn 1 trong "muôn vàn" thì muôn đời phải chọn 1 và chỉ chọn 1.
 
Upvote 0
Tôi thì thích cụm từ "bị bất ngờ". Tức đang quen "thế này", tự dưng bị gáo nước lạnh, phải mất một lúc định thần lại.
Tôi góp thêm 1 ý khi "muôn vàn" = 2:
Nếu 2 tuỳ chọn mang tính đối lập như Yes/No, đúng/ sai, có/ không, chịu/ ứ chịu, ... thì nên dùng checkbox, nếu 2 tuỳ chọn không mang tính trái ngược nhau (không đối lập nhau), thì nên dùng OptionButton.
 
Upvote 0
Tôi góp thêm 1 ý khi "muôn vàn" = 2:
Nếu 2 tuỳ chọn mang tính đối lập như Yes/No, đúng/ sai, có/ không, chịu/ ứ chịu, ... thì nên dùng checkbox, nếu 2 tuỳ chọn không mang tính trái ngược nhau (không đối lập nhau), thì nên dùng OptionButton.
Trường họp này thì dùng bao nhiêu CheckBox(es), 1 hay 2? và label chúng thế nào?
Cho một ví dụ có hình ảnh minh hoạ. Đặt CheckBox(es) và Option Buttons bên cạnh nhau xem cái nào dễ hiểu (đối với người dùng), dễ xài (dối với người phát triển) hơn?

Chú: năm 2000, lúc tôi được tiếp xúc những bài học đầu tiên với WebForm thì ví dụ điển hình tôi học cho Y/N là ... Radio buttons (tên cũ của Option Buttons)
 
Upvote 0
Trường họp này thì dùng bao nhiêu CheckBox(es), 1 hay 2? và label chúng thế nào?
Cho một ví dụ có hình ảnh minh hoạ. Đặt CheckBox(es) và Option Buttons bên cạnh nhau xem cái nào dễ hiểu (đối với người dùng), dễ xài (dối với người phát triển) hơn?
Theo tôi nếu chỉ có 2 trạng thái bật/tắt thì dùng CheckBox là đúng rồi. Dùng OptionButton sẽ gặp rắc rối.

- dùng CheckBox. Nếu muốn chọn thì click để đánh dấu, nếu không muốn chọn thì không click. Nếu click rồi mà nghĩ lại hoặc click do sơ ý thì luôn có thể click lần nữa để bỏ chọn. Tức với CheckBox thì có thể click rất nhiều lần để chuyển trạng thái bật / tắt.

- dùng OptionButton. Dĩ nhiên là nếu muốn chọn thì click, còn không muốn thì không click. Nhưng nếu click rồi sau đó muốn nghĩ lại hoặc sơ ý click thì sao? Không thể nào bỏ chọn được nữa. Với OptionButton thì nếu đã click thì muôn đời nó được chọn và không thể bỏ chọn như CheckBox được. Để khắc phục vấn đề này thì phải dùng 2 OptionButton là "Chọn con chó" và "Không chọn con chó". Nhưng như thế thì hơi không tự nhiên.

Nên nhớ rằng ta đang bàn về 2 TRẠNG THÁI bật / tắt, chọn / không chọn của chỉ duy nhất 1 ĐỐI TƯỢNG - hiện tượng, sự việc, con người, con vật. Khi có 2 ĐỐI TƯỢNG - hiện tượng, sự việc, con người, con vật, vd. chó và mèo thì có thể dùng 1 CheckBox với hàm ý bật là chọn chó (Caption = "Chó"), còn không bật, tức tắt là chọn mèo. Nhưng tôi vẫn thích 2 OptionButton với Caption = "Chó" và Caption = "Mèo" hơn.

Khi bàn tới 3 ĐỐI TƯỢNG - hiện tượng, sự việc, con người, con vật, vd. chó, mèo và chuột bạch, thì bắt buộc phải dùng OptionButton.

Trong những bài trước của mình tôi không nói về 2 TRẠNG THÁI bật tắt của 1 ĐỐI TƯỢNG - hiện tượng, sự việc, con người, con vật. Tôi nói về ĐỐI TƯỢNG: 2 đối tượng hoặc > 2 đối tượng.
 
Lần chỉnh sửa cuối:
Upvote 0
Trường họp này thì dùng bao nhiêu CheckBox(es), 1 hay 2? và label chúng thế nào?
Cho một ví dụ có hình ảnh minh hoạ. Đặt CheckBox(es) và Option Buttons bên cạnh nhau xem cái nào dễ hiểu (đối với người dùng), dễ xài (dối với người phát triển) hơn?

Chú: năm 2000, lúc tôi được tiếp xúc những bài học đầu tiên với WebForm thì ví dụ điển hình tôi học cho Y/N là ... Radio buttons (tên cũ của Option Buttons)
Đối với 2 tuỳ chọn đối nghịch như tôi đã thí dụ, thì chỉ cần 1 checkbox. Caption của nó là cái nào cũng được (1 trong 2 tuỳ chọn), vì người dùng hiểu ngay trái ngược đúng là sai, trái ngược sai là đúng; trái với có là không và ngược lại. Thí dụ trong việc tính diện tích:
- 2 option button để chọn hình tròn hoặc hình vuông, caption của chúng là "hình tròn" và "hình vuông"
- 1 checkbox có caption là "Có lỗ (tròn)". Check là có lỗ, không check thì không thể có ý nghĩa khác ngoại trừ nghĩa 'không có lỗ" (trong code khi check thì trừ ra khi tính diện tích, bỏ check là không trừ).
2 option button có thể đặt trong 1 frame và frame này có caption là "chọn hình", thay cho việc dùng label.

Ghi chú:
- Nếu 2 tuỳ chọn không đối lập như phải chọn giữa "có lỗ tròn" và "có lỗ lục giác" thì lại phải dùng option button chứ không dùng checkbox.
 
Lần chỉnh sửa cuối:
Upvote 0
Theo tôi nếu chỉ có 2 trạng thái bật/tắt thì dùng CheckBox là đúng rồi. Dùng OptionButton sẽ gặp rắc rối.
...
2 trạng thái (flip-flop/bistate) không phải là Options. Và vì vậy cái CheckBox gần với chuyện này hơn.
Tự tính chất CheckBox cũng có 2 trạng thái: ticked và không ticked.

Đối với 2 tuỳ chọn đối nghịch như tôi đã thí dụ, thì chỉ cần 1 checkbox. Caption của nó là cái nào cũng được (1 trong 2 tuỳ chọn), vì người dùng hiểu ngay trái ngược đúng là sai, trái ngược sai là đúng; trái với có là không và ngược lại.
Yes/No là chọn lựa.

Cũng như Nam/Nữ. Form có thể đưa ra một CheckBox labelled là Nam và người ta tự động hiểu không tick là Nữ? Tại sao lại không labelled Nữ và không tick là Nam?
Trong nghề thăm dò ý kiến (survey), dùng CheckBox thay thế Option Buttons là một kỹ xảo để bóp méo kết quả.
Lý do: option button bắt buộc người dùng phải xác định (chọn 1) hoặc không xác định (làm lơ hoặc bỏ sót). Dùng checkbox là cố tình 'hốt' cái kết quả đối. Nếu người dùng làm lơ hoặc bỏ sót thì sẽ được kết quả bên đối. Muốn lấy tổng kết gần sự thật một chút thì đặt cái checkbox chỗ dễ thấy. Muốn tổng theo ý mình thì đặt nó chỗ dễ bị sót.

(*1) trong Survey Form, khi lấy kết quả của Option Button loại không mặc định thì thực ra có thêm một trị 'không chọn'
Ví dụ có 2 buttons Nam/Nữ, kết quả download xuống thường là 1 trong 3 trạng thái: Nam, Nữ, và Trơn (not specified).
 
Upvote 0
Yes/No là chọn lựa.

Cũng như Nam/Nữ.
Nam/ Nữ về lý thuyết là sự đối nghịch giới tính. Sau này có thêm giới tính thứ 3, thứ 4, ... nhưng mọi văn bản in ra, mọi form được tạo ra để đánh dấu đều là checkbox với label là Nam, Check là Nam và không check là nữ. Trong phần mềm mà tôi thiết kế thì dùng combobx chọn, List là 1 list động ai muốn thêm gì thì thêm.
Cũng là lý thuyết, tôi cũng có quyền để caption của checkbox là "Nữ", check là nữ và không check là nam. Chẳng qua nó ngược với thói quen người dùng. Cũng như "có khoét lỗ" và "không khoét lỗ", thói quen check là có, không check là không.
Còn vụ kỹ xảo bóp méo thì tôi không bàn, vì do tính chất ngành nghề nó vậy. Không chỉ trong survey
 
Lần chỉnh sửa cuối:
Upvote 0
Cũng là lý thuyết, tôi cũng có quyền để caption của checkbox là "Nữ", check là nữ và không check là nam. Chẳng qua nó ngược với thói quen người dùng. Cũng như "có khoét lỗ" và "không khoét lỗ", thói quen check là có, không check là không.
Còn vụ kỹ xảo bóp méo thì tôi không bàn, vì do tính chất ngành nghề nó vậy. Không chỉ trong survey
Bỏ qua chuyện kỹ xảo. Tôi cốt ý nói: dùng CheckBox cho trường hợp 0/1 là buộc người dùng phải hiểu rằng "bạn không trả lời câu này đồng nghĩa với bạn chọn ..."
 
Upvote 0
"bạn không trả lời câu này đồng nghĩa với bạn chọn ..."
Trả lời/ không trả lời câu hỏi lại là đặc thù của 1 form dành riêng cho loại hình đặc thù nào đó. Form dùng tính toán hoặc dùng để nhập liệu thì người dùng phải cẩn thận. Để phòng xa thì như tôi đã nói: dùng combobox mặc định rỗng và ràng buộc not null.
TB: Chào mừng anh trở lại và viết bài. Thảo luận tranh luận với 1 vài anh chàng trong này chán quá.
 
Upvote 0
.... Để phòng xa thì như tôi đã nói: dùng combobox mặc định rỗng và ràng buộc not null.
Phòng vậy hơi xa quá. Theo kinh nghiệm thiết kế form của tôi thì combobox hơi mất thì giờ chọn. Gặp cái form dùng làm data entry thì người dùng gõ quen rồi sẽ nhớ hết các thứ tự từng control. Các controls đơn giản họ gõ lẹ lắm.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom