2013-03-22 37 views
7

Projem için bir kaynak olarak bazı simgeler eklemem gerekiyordu (Bu durumda, bir TImageList'i TCoolTrayIcon'daki bir hata nedeniyle kullanamıyorum ve bileşeni hızlı bir şekilde değiştiremiyorum).Projeye bir .res dosyası eklemek varsayılan simgeyi değiştirir. Nasıl engellenir?

Bir Delphi kaynak dosyaya iki ico dosyaları eklemek için bir icons.rc komut dosyası oluşturduk:

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

o icons.res ince derler, o yüzden ilk birimine eklemek benim Delphi 7 projesi:

{$R icons.res} 

sonra (OnCreate tutamaklar saklamak) MainForm arasında:

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

ve kullanımı kolları iyi.

Şimdi sorun - proje seçeneklerine eklenmiş olan proje simgesinin (16x16 - 48x48 boyutlarında) yerini aldıktan sonra, {$ R simgeleri'ne eklediğim ilk simge (16x16 redicon) ile değiştirildi. res}.

Bu nasıl önlenir? Proje Seçenekleri -> Uygulama -> Yük Simgesi'nde eklenen simgeyi değiştirmeden bir projeye kaynak olarak ek simgeler nasıl eklenir?

+0

lütfen bize .dpr kodunu göster. – whosrdaddy

+0

Ana simgeyi her zaman kontrol ettiğim bir kaynak dosyasına dahil ediyorum. –

+0

, ayrı bir DLL'de ekleyebilir misiniz? "Kaynak DLL'leri" oldukça sık kullanılır –

cevap

7

VCL, uygulamanızın simgesi için 'MAINICON' adını kodlar. Bu TApplication.Create kod görülebilir:

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

, kabuk senin yürütülebilir ilk simge ana uygulama simgesi olduğunu varsayar. Kabuğun kullandığı sıra, simge adıyla alfabetiktir.

Bunun sonucunda, tüm simgelerinizin MAINICON alfabesinden sonra görünen adlara sahip olması gerekir.

İlgili konular