Tôi đang sử dụng kiểu Delphi XE6 và VCL. Tôi có ứng dụng và dll chính. Ứng dụng chính của tôi đã bật các chủ đề thời gian chạy và tôi đang sử dụng các tệp kiểu vcl. Tôi đã làm điều tương tự như DLL của tôi. Tôi đã bật các chủ đề thời gian chạy và thêm VCL.Themes, VCL.Styles theo sử dụng và tệp tài nguyên với tệp kiểu VCL bên trong nó. Khi DLL được nạp, tôi tải kiểu VCL từ tài nguyên và thiết lập nó cho DLL gui. Ứng dụng chính và DLL không được xây dựng với các gói thời gian chạy.Kiểu VCL từ DLL đang ảnh hưởng đến TMenuItem trong Ứng dụng
Bây giờ tôi có giao diện đồ họa ứng dụng chính với phong cách riêng và kiểu gui dll theo phong cách riêng. Điều này dường như hoạt động tốt cho đến khi ...
Khi tôi nhấp vào nút trong ứng dụng chính của mình, sự kiện sẽ mở TPopupMenu, nó được tạo kiểu với cùng một kiểu như GUI DLL thay vì kiểu ứng dụng chính. Nếu tôi điều hướng thông qua menu tôi nhận được AV và chương trình bị treo. Hãy xem hình ảnh đính kèm.
Tôi đang làm gì sai? Cách giải quyết duy nhất mà tôi đang thấy sẽ là tạo ra TPopupMenu tùy chỉnh của riêng tôi từ một số điều khiển khác.
Như tôi đã hứa, tôi đã chuẩn bị chương trình demo đơn giản tương tự ứng dụng của tôi. Nó bao gồm các ứng dụng máy chủ với phong cách riêng và DLL với phong cách thêm vào tài nguyên. Chạy nó và bấm vào nút Popup sau đó thử chọn một cái gì đó từ popup. Nó sẽ sụp đổ và dừng lại ở một số StdWindowProc hoặc một cái gì đó như thế. Ngoài ra nếu bạn vào menu hệ thống cửa sổ (góc trên cùng bên trái) khi bạn cố gắng chọn một cái gì đó từ trình đơn đó, bạn sẽ thấy rằng menu hệ thống được tạo kiểu như dll gui và treo quá. Liên kết đến tập tin rar: dropbox.com/sh/f2jmbsmw18akpyg/AAA6SWdBmVhf6n6K-mvYLLmua?dl=0
Nhờ sự giúp đỡ của bạn.
Giải thích rất có thể là bạn đang truyền các đối tượng VCL qua ranh giới giữa các mô-đun của bạn, điều này không được phép trừ khi bạn sử dụng các gói thời gian chạy. –
Một khả năng khác mà tôi có thể nghĩ đến là mã kiểu VCL có lẽ sẽ xóa liệt kê tài nguyên và liệt kê các tài nguyên trong toàn bộ quá trình. Việc quét nhanh mã cho thấy có thể là một vấn đề nếu 'AutoDiscoverStyleResources' là' True'. Cuộc gọi đó đến 'EnumModules' trông hơi khó chịu với tôi. –
Nếu bạn không thể gỡ lỗi này thì tôi đoán bạn đang yêu cầu chúng tôi đào sâu vào nó. Để làm như vậy, chúng tôi có thể cần phải có mã chứng minh sự cố. –