Tôi đã cố gắng hiểu tất cả thông tin và tôi bị mất. Tôi đã xem xét Delphi (Pascal), C, C ++, java ... không có gì là rõ ràng. Vì vậy, sau một tháng, đây là vấn đề như tôi thấy. Tôi có thể hoàn toàn đi chệch hướng, vì vậy hãy nói với tôi ... lịch sự, làm ơn.
Một người gửi sự kiện, một người bắt giữ miễn là Người gửi đăng ký người bắt. Tôi có 4 hộp thoại cần được cập nhật mỗi khi tệp (có mã xử lý nằm trong mô-đun khác ngoài 4 hộp thoại) thay đổi. Tôi đã xem xét cập nhật từng cách cũ, nhưng sau đó tôi xem xét các sự kiện và xử lý tin nhắn của Delphi. Hãy xem nào:
Tệp F (Người gửi) đã đọc xong và sẽ thông báo cho Hộp thoại 1..4 về việc hiện có dữ liệu để chúng hiển thị và người dùng có thể xử lý. Tốt nhất là gì?
Cố gắng đăng ký Hộp thoại 1..4 làm người nghe và yêu cầu Người gửi kích hoạt OnUpdatedDataEvent bằng cách nào đó?
Hãy thử gửi một tin nhắn trên toàn hệ thống, hy vọng Hộp thoại 1..4 sẽ bắt được nó?
Lưu ý rằng sự kiện giữ cho mọi thứ được kết hợp trong khi nhắn tin thì không ... và rất khó để gỡ lỗi.
Và tôi tự hỏi làm thế nào để khối tệp tin có thể đăng ký 4 người nghe (hộp thoại)?
Những gì tôi đang xem xét là khả năng gọi theo tầng, có nghĩa là người gọi gọi một người nghe, người gọi tiếp theo ... cho đến khi nó đi đến cuối chuỗi. Tôi thậm chí tự hỏi nếu điều đó thậm chí có thể.
Một ví dụ:
Giả sử Tệp F là một danh sách các ngôn ngữ. Bây giờ, DialogBox 1 thực hiện một cái gì đó cho danh sách (thêm một ngôn ngữ mới chẳng hạn); hộp tổ hợp đó cập nhật tệp F; đến lượt nó lại kích hoạt DataUpdatedEvent. 4 hộp thoại chứa TComboBoxes hiển thị danh sách ngôn ngữ khi chúng bật lên. Tôi muốn 4 hộp thông báo thay đổi và cập nhật nội dung hộp kết hợp của riêng chúng bằng Tệp mới cập nhật ... mà không phải lo lắng về cách các hộp kết hợp biết chúng cần làm mới nội dung của chúng. Nếu nó hoạt động như đã hình dung, thông số Người gửi sẽ chuyển qua và hộp thoại kích hoạt dataUpdateEvent sẽ bị bỏ qua vì nó đã được cập nhật. Sau tất cả, if sender = self thì tiếp tục xử lý sự kiện tiếp theo sẽ dễ thực hiện.
Tất cả những điều đó bởi vì tôi muốn tập thể dục trí não của mình ... để ngăn ngừa bệnh Alzheimer, tôi có thể thêm vào không thành công lắm.