Tôi muốn kiểm tra một số biểu mẫu. Có cách nào để mô phỏng báo chí của một Ok (hoặc Cancel) nút để các nút được nhấn và bắn xử lý sự kiện được liên kết với nó?Tôi làm cách nào để mô phỏng báo chí của một nút?
Trả lời
Cách tiếp cận sạch nhất là gọi phương thức Nhấp chuột của nút. Điều này tốt hơn các lựa chọn thay thế vì những lý do sau:
- Bạn có thể đọc thuộc tính OnClick, kiểm tra xem đó có phải là không và sau đó gọi phương thức. Nhưng điều đó có vẻ khá vô nghĩa vì phương thức Click đã thực hiện điều đó. Không có điểm nào trùng lặp mã này.
- Và bạn có thể gọi trực tiếp cho trình xử lý sự kiện, nhưng điều đó sẽ yêu cầu mã của bạn phải có kiến thức về nó. Điều đó hàm ý mức độ không mong muốn của việc ghép nối với các chi tiết thực hiện.
- Gọi
Click
sao chép những gì thực sự xảy ra khi người dùng nhấp. Nó là điều gì xảy ra khi người dùng nhấn nút. Nó đề cập đến bất kỳ hành động nào được liên kết với nút, ví dụ. Nó thiết lập các hình thức tài sản ModalResult. Và cứ thế.
+1, thông tin tuyệt vời..không ai có thể nghĩ về nó, – PresleyDias
Đây chính là điều tôi muốn. Tôi đã thử nghiệm nó và nó hoạt động, làm cho nó dễ dàng hơn cho tôi để kiểm tra các hình thức. Cảm ơn rất nhiều! – Arnold
btn_ok.click
hoặc btn_okClick(sender);
Gọi handler OnClick
kiện này sẽ không gọi xử lý sự kiện mặc định của Delphi, nhưng chỉ là một thực hiện bởi người sử dụng. Tôi nghĩ bạn nên tạo lớp của riêng bạn bắt nguồn từ TCustomButton
và triển khai hàm gọi phương thức Click
(được bảo vệ).
'TCustomButton.Click' là công khai, không được bảo vệ. –
Có, chỉ cần gọi 'Nhấp vào' trên một phiên bản' TButton'. Không cần dẫn xuất. –
Nó là công khai trong VCL, và nó được bảo vệ trong Firemonkey. – naXa
Nó tốt hơn để sử dụng phương pháp PerformClick()
của Button =>
button1.PerfomClick()
Nếu Nút của bạn không có trong tình trạng quyền nhấp (kích hoạt sai hoặc không nhìn thấy được), nó sẽ không thực hiện eventmethod nhấp chuột.
Không có 'PerformClick' trong VCL. Có một 'PerformClick' trong WinForms. Có lẽ đó là những gì bạn đang đề cập đến. –
Xem thêm câu trả lời này cho [delphi-gui-testing-and-modal-forms] (http://stackoverflow.com/a/6574035/576719). –
Bạn muốn mô phỏng chính xác như thế nào? Nếu di chuyển chuột? Nút có nên xuất hiện trên màn hình không? Nút có nên nhận các tin nhắn như 'wm_LButtonDown' không? –
@LU RD, cảm ơn con trỏ! Tôi chỉ tự hỏi làm thế nào để kiểm tra các hình thức phương thức. Điều này có ích. – Arnold