2013-03-22 32 views
7

Tôi cần thêm một số biểu tượng vào dự án của mình làm tài nguyên (tôi không thể sử dụng TImageList trong trường hợp này, vì lỗi trong TCoolTrayIcon và tôi không thể thay thế thành phần nhanh chóng).Thêm tệp .res vào dự án thay thế biểu tượng mặc định. Làm cách nào để ngăn chặn tệp?

tôi đã tạo ra một kịch bản icons.rc thêm hai tập tin ico vào một tập tin tài nguyên Delphi:

redicon ICON "c:\icon\red.ico" 
greenicon ICON "c:\icon\green.ico" 

nó biên dịch tốt để icons.res, vì vậy tôi thêm nó vào đơn vị đầu tiên của tôi 7 dự án Delphi:

{$R icons.res} 

sau đó tôi lưu trữ các xử lý trong OnCreate() của MainForm:

hRedIcon := LoadIcon(hInstance,'redicon'); 
hGreenIcon := LoadIcon(hInstance,'greenicon'); 

và sau đó sử dụng các tay cầm tốt.

Hiện tại vấn đề - sau khi thực hiện điều đó, biểu tượng dự án đã được thêm vào tùy chọn dự án (kích thước 16x16 đến 48x48) được thay thế bằng biểu tượng đầu tiên (biểu tượng 16x16). res}.

Làm cách nào để ngăn chặn điều này? Cách thêm biểu tượng bổ sung vào dự án làm tài nguyên mà không thay thế biểu tượng được thêm vào trong Tùy chọn dự án -> Ứng dụng -> Biểu tượng tải?

+0

vui lòng chỉ cho chúng tôi mã .dpr của bạn. – whosrdaddy

+0

Tôi luôn bao gồm biểu tượng chính trong tệp tài nguyên mà tôi kiểm soát. –

+0

u có thể bao gồm nó trong một DLL riêng biệt? "DLL tài nguyên" được sử dụng khá thường xuyên –

Trả lời

7

Mã VCL cứng tên 'MAINICON' cho biểu tượng ứng dụng của bạn. Điều này có thể được nhìn thấy trong các mã trong TApplication.Create:

FIcon.Handle := LoadIcon(MainInstance, 'MAINICON'); 

Mặt khác, vỏ giả định rằng các biểu tượng đầu tiên trong thực thi của bạn là biểu tượng ứng dụng chính. Thứ tự mà shell sử dụng là chữ cái theo tên biểu tượng.

Hậu quả của việc này là tất cả các biểu tượng của bạn phải có tên xuất hiện sau MAINICON trong bảng chữ cái.

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