2013-12-16 18 views
5

Hãy nói rằng tôi có một datamodule với một ImageList. Tôi cũng có một hình thức với một nút. Nếu tôi muốn treo thuộc tính ImageList của nút, tôi sẽ thêm DataModule vào các biểu mẫu sử dụng sau đó chọn ImageList trong trình đơn thả xuống Hình ảnh trong các thuộc tính nút.Sẽ có bất kỳ tác động bất lợi nào nếu tôi vô tình xóa nội dung nào đó khỏi một biểu mẫu sử dụng danh sách mà kiểm soát đang tham chiếu?

Tuy nhiên, giờ đây tôi có thể xóa DataModule khỏi danh sách Sử dụng biểu mẫu và mọi thứ dường như vẫn hoạt động tốt. Ngoài ra, nếu DataModule được mở trong IDE và không có trong danh sách sử dụng biểu mẫu, tôi có thể nhập thủ công thuộc tính hình ảnh của nút tên của danh sách hình ảnh và có vẻ như hiển thị chính xác hình ảnh trên nút.

Câu hỏi: Sẽ có bất kỳ tác động bất lợi nào nếu tôi vô tình xóa nội dung nào đó khỏi biểu mẫu sử dụng danh sách mà kiểm soát đang tham chiếu?

Tôi hiện đang trong quá trình xóa danh sách sử dụng hàng trăm biểu mẫu trong một dự án lớn (sử dụng cnPack và Icarus) và tôi muốn biết mức độ cẩn thận (hoặc tàn nhẫn).

+0

Tôi khuyên bạn nên di chuyển các đơn vị đó sang điều khoản Sử dụng thực hiện. điều này bảo vệ DFM và làm cho giao diện sử dụng khoản sạch hơn. –

Trả lời

5

Đối với IDE là có thể tìm thấy một DataModule (đối với tài sản không một lần thiết lập) lúc thiết kế, sau đây phải đúng:

  • Các DataModule phải được mở/tạo ra ít nhất một lần trong phiên họp của IDE (có thể đóng sau đó trong phiên), xem (*),
  • Đơn vị DataModule phải có mặt trong mệnh đề sử dụng của đơn vị Biểu mẫu.

Đối với IDE là có thể tìm thấy một DataModule một lần nữa (đối với tài sản đã được thiết lập) lúc thiết kế, sau đây phải đúng:

  • Các DataModule phải được mở/tạo ra ít nhất một lần trong suốt phiên họp của IDE (nó có thể được đóng lại sau đó trong phiên), hay
  • đơn vị DataModule phải có mặt trong những ứng dụng điều khoản của đơn vị mẫu, hay
  • các DataModule un nó phải được thêm vào tệp dự án.

Đối với chương trình có khả năng tìm thấy một DataModule (đối với tài sản đã được thiết lập) trong thời gian chạy:

  • Các DataModule phải được tạo ra, hay
  • Đơn vị DataModule phải có mặt trong mệnh đề sử dụng của đơn vị Biểu mẫu.

Đối với chương trình có khả năng tìm thấy một DataModule (đối với tài sản không xác định) trong thời gian chạy:

  • Đơn vị DataModule phải có mặt trong những ứng dụng điều khoản của đơn vị mẫu.

Do đó, về mặt lý thuyết, nếu đáp ứng đủ các điều kiện phù hợp, đơn vị DataModule của bạn có thể được bỏ qua từ mệnh đề sử dụng của Biểu mẫu. Nhưng để tự tin về liên kết thời gian chạy, tôi sẽ kết luận rằng không có an toàn hoặc ít nhất không có lối thoát thuận tiện từ việc thêm đơn vị DataModule vào điều khoản sử dụng của đơn vị Biểu mẫu.


(*) Trong các dự án lớn với nhiều hình thức và DataModules, nó là rất phổ biến để không mở cửa hàng DataModule trong IDE, và các thiết lập có thể dễ dàng bị lạc. Đang phụ thuộc vào designtime ràng buộc bởi tên DataModule sau đó có thể dẫn đến các hình thức của bạn không bao giờ hiển thị bất kỳ dữ liệu (hoặc hình ảnh trong trường hợp này). Đây là một lỗi rất khó lường trước được khi không kiểm tra tất cả các thiết lập DataModule của Form. Một giải pháp cho điều đó là thiết lập tất cả các thuộc tính tham chiếu đến các thành phần của DataModule theo cách thủ công trong thời gian chạy, tốt nhất là trong một hàm khởi tạo thừa hoặc trong một trình xử lý sự kiện OnCreate. Điều này cũng ngăn các vấn đề đặt tên trùng lặp với nhiều phiên bản DataModule, như là this question thỏa thuận với.

4

Việc liên kết các thuộc tính thành phần (như Hình ảnh) độc lập với mục nhập phù hợp trong danh sách sử dụng. Ma thuật được ẩn bên trong hệ thống phát trực tuyến (tìm kiếm xxxFixUpReferences). Miễn là trình biên dịch không phàn nàn bạn có thể loại bỏ những mục đó một cách an toàn.

Vẫn có thể IDE không hài lòng với điều đó.

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