2012-08-27 29 views
6

Cách tốt nhất để cho phép hủy biểu mẫu phương thức khi xác thực cấp trường là gì?Cách tốt nhất để cho phép hủy bỏ biểu mẫu phương thức khi xác thực cấp trường là gì?

Tôi có biểu mẫu Delphi được hiển thị một cách bình thường. Trong đó có các nút TComboBoxes, TEdits, Ok và Cancel. Các trường này có phương thức OnExit là lửa để kiểm tra xem dữ liệu có hợp lệ hay không. Tuy nhiên, tôi muốn có nút Hủy bỏ nhấp chuột cho phép biểu mẫu đóng mà không xác nhận các trường. Điều gì xảy ra là khi nút Cancel được nhấp, sau đó OnExit của trường được gọi và xác nhận được chạy trước khi OnClick của nút đóng biểu mẫu. Thời gian này là không mong muốn vì nó khiến người dùng sửa dữ liệu mà họ muốn từ bỏ. Cảm ơn.

Trả lời

10

Tôi đã bỏ qua xác thực dữ liệu "về thoát khỏi trường" hoàn toàn. Nó làm cho người dùng biết những gì họ đang làm (ví dụ, ai đó có thể sao chép dữ liệu từ một nguồn khác và dán trên màn hình hiện tại, theo cách sẽ chỉ có ý nghĩa khi tất cả dữ liệu được dán vào - xác thực trên mỗi trường thường được trên con đường của hành động như vậy).

Thay vào đó, hãy thử thực hiện xác thực dữ liệu khi người dùng sẵn sàng chuyển sang màn hình hiện tại, thường là khi họ nhấp vào nút "OK" hoặc "Tiếp theo".

+7

Xác thực không phải lúc nào cũng có nghĩa là một hộp thoại tin nhắn cực kỳ la hét điều gì đó về dữ liệu sai. Nó cũng có thể là ví dụ văn bản trường nhập màu đỏ, một số loại biểu tượng dấu chấm than bên cạnh trường hoặc ví dụ: một bong bóng cảnh báo bật lên từ hiện trường. Trong mọi trường hợp, nó sẽ ngăn chặn người dùng lưu bản ghi của khóa học. – TLama

+1

TLama - bạn nói đúng, miễn là sự kiện OnExit không khóa người dùng cho đến khi dữ liệu được sửa chữa. – user1595471

+1

Tôi thích ý tưởng tránh toàn bộ vấn đề như được đề xuất bởi @ user1595471 và sẽ đề xuất thay đổi khung kiểm tra lỗi của chúng tôi để cho phép điều này hoặc ít nhất thay đổi cách hiển thị lỗi cho người dùng theo TLama. Tuy nhiên, nếu điều này được coi là không thể chấp nhận thì tôi sẽ tìm các tùy chọn khác. Suy nghĩ đầu tiên của tôi là truyền một thông báo do người dùng xác định cho chính tôi yêu cầu trường được chọn. Tôi tin rằng điều này sẽ cho phép sự kiện của nút hủy kích hoạt và đóng biểu mẫu trước khi thông báo do người dùng xác định được xử lý. Cảm ơn tất cả các đầu vào. – user1627960

Các vấn đề liên quan