Application Icon

1

Application Icon

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Za pocetak, potrebno je da kreirate ikonicu programa u nekom bitmap formatu (BMP).
Potrebne su vam sledece velicine: 64x64, 48x48, 32x32, 16x16.

Prva velicina se koristi kada na Desktop postavite link ka programu, a Desktop je podesen da koristi Large Icons.
Posto je ovo retka situacija, velicinu 64x64 mozete i da izostavite.

Te tri ikonice je sada potrebno ukombinovati u .ICO fajl.
Ja u tu svrhu koristim XnView.
Za kombinovanje tri ikonice u jednu idite na Tools>Multipage file>Create. Pojavice se novi prozor u kome je lako snaci se.

Kada ste kreirali ikonicu, potrebno je od nje napraviti Windows Resource fajl.
U folderu u kome se nalazi spremljena ikonica (u donjem primeru je to fajl resource.ico) napravite fajl sledece sadrzine:
MAINICON ICON "resource.ico" 1 24 resource.manifest // Version Info 1 VERSIONINFO FILEVERSION 2,9,1,0 PRODUCTVERSION 2,9,1,0 {  BLOCK "StringFileInfo"   {   BLOCK "040904E4"    { VALUE "CompanyName", "MyCity" VALUE "FileVersion", "2.9.1.0" VALUE "FileDescription", "LogAnalyzer" VALUE "InternalName", "LA" VALUE "LegalCopyright", "Spasic Boban" VALUE "LegalTrademarks", "none" VALUE "OriginalFilename", "LA.exe" VALUE "ProductName", "LogAnalyzer" VALUE "ProductVersion", "2.9.1.0"    }   }  BLOCK "VarFileInfo"  {   VALUE "Translation", 1033, 1252  } }
Fajl promenite prema vasim potrebama i snimite pod imenom resource.rc

U gornjem fajlu se spominje i resource.manifest.
To je fajl koji vasem programu daje Windowsov look&feel, tj. Windows tema (theme) ce uticati na izgled vaseg programa.

Fajl resource.manifest izgleda ovako:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity     version="1.0.0.0"     processorArchitecture="X86"     name="Lazarus Program"     type="win32" /> <description>A program made under Lazarus</description> <dependency>     <dependentAssembly>         <assemblyIdentity             type="win32"             name="Microsoft.Windows.Common-Controls"             version="6.0.0.0"             processorArchitecture="X86"             publicKeyToken="6595b64144ccf1df"             language="*"         />     </dependentAssembly> </dependency> </assembly>

Sada treba da imate tri fajla koja su potrebna za dalje:
- resource.ico
- resource.manifest
- resource.rc

Sledi kompajliranje resource fajla. Otvorite konzolu u folderu u kome se nalaze fajlovi i otkucajte:
"c:\lazarus\pp\bin\i386-win32\windres.exe" -i resource.rc -o resource.res
Nije lose ovu liniju snimiti u batch fajl.

Dobicete dva nova fajla:
- resource.res
- resource.or

Sada je potrebno u main unitu vaseg programa dodati kod (code) koji ce ucitati resource.
Nadjite u programu 'initialization' deo. Obicno je na kraju fajla.
Primer: initialization   {$I untmain.lrs} end.

Nakon naredbe za linkovanje forme ubacite naredbu za ubacivanje resource-a.
Kod (code) iz prethodnog primera bi posle ubacivanja izgledao:
initialization {$I untmain.lrs} {$ifdef win32}   {$R resource.res} {$endif} end.

Zapazite da je potrebno uslovno kompajliranje (samo za Windows), posto se na Linuxu ikonica programa ne linkuje u sam program, vec uvek ide kao poseban fajl.

Primer (source):
https://www.mycity.rs/must-login.png



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

A sta biva sa Linux verzijom? Kako se tu stavlja ikona (externa)?



offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Za desktop je potrebno napraviti link-fajl (kao shortcut na Windows), i u njemu mozes da podesis ikonicu koja ce da se koristi na desktopu.

Iskreno, dalje od ovoga nisam nista probao.
Ako nesto saznam - napisacu ovde.

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Gledao sam kako rade ostale aplikacije... imaju izvrsni fajl, png (ili neku drugu) ikonicu i ImePrograma.desktop fajl u kojem je podesena precica i ikona za pokretanje fajla.

Sad... da li je to jedini ili najrasprostranjeniji nacin, ne znam... ali su tako odradjene sve aplikacije koje imam u Suse.

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Evo kako izgleda Lazarusov lazarus.desktop fajl:
[Desktop Entry] Name=Lazarus Comment=Lazarus IDE Exec=startlazarus %f Terminal=0 Type=Application Icon=lazarus.png Encoding=UTF-8 Categories=IDE;Development;X-Red-Hat-Base;Application; StartupWMClass=Lazarus MimeType=text/x-pascal;

Nije problem u tome, problem je kako na linuxu postaviti ikonicu aplikacije gore na onu traku gde ide i Form.Caption.

Za Windows to ide automatski ukoliko postoji resource koji se zove MAINICON. Zato je dobro u MAINICON imati 16x16 ikonicu, da ne bi sam Windows radio resize. On ce da odabere iz ICO fajla onu koja najvise odgovara (u nasem slucaju 16x16). Zbog ovoga je isto dobro da je pozadina ikonice transparentna.

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

To otprilike i jeste struktura "desktop" fajla... Desktop fajl obicno ide u /usr/share/applications, a ikonica koja je specifikovana u njemu u /usr/share/pixmaps ili /usr/share/icons.

A za ikonicu... Khm... Zar ne postoji opcija u samom Lazarusu za to? Ili se ja varam. Confused

Dopuna: 01 Sep 2006 0:57

Razjasnjenje desktop fajla:

Name=Lazarus
Ime koje se prikazuje u K ili Gnome meniju, ili na desktopu
Comment=Lazarus IDE
Komentar koji se prikazuje kada se postavi kursor preko ikonice ili u K meniju ako je ukljucena opcija
Exec=startlazarus %f
Linija startovanja aplikacije
Terminal=0
Da li je konzolna aplikacija ili ne
Type=Application
Tip... U svakom slucaju ovde je u pitanju aplikacija
Icon=lazarus.png
Ikona iz /usr/share/pixmaps, /usr/share/icons ili specifikovane custom staze
Encoding=UTF-8
Kodna strana naziva i opisa ikone
Categories=IDE;Development;X-Red-Hat-Base;Application;
Kategorija u koju ide aplikacija (u ovom slucaju graphics. Pogledaj gimp.desktop za primer.)
StartupWMClass=Lazarus
Ovo mozes izbaciti. Vecina desktop fajlova je ne sadrzi.
MimeType=text/x-pascal;
Tip fajlova koje aplikacija prihvata. Nije neophodno. Mislim da je u pitanju D&D stvar. Ne direktna asocijacija

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

@bocke
Postoji property forme koji se zove icon, ali to ne radi. Postoji samo da bi se lakse konvertovali Delphi programi, tj. da se ne buni pri importovanju da mu je property nepoznat (posto ga Delphi poseduje, i na njemu radi kako treba).

Mislim da na Linuxu treba da funkcionise frmMain.Icon.LoadFromFile(); postavljen u onCreate event.
Na Windowsu ne funkcionise LoadFromFile, u to sam se uverio. Mora preko resources da se ide.

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

Nemam trenutno Lazarus... Ako neko ne proveri do sutra, ja cu. Wink

offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Imam Lazarus instaliran na Linuxu, ali sam uspeo da pregazim MBR na HD-u...

offline
  • bocke  Male
  • Moderator foruma
  • Glavni moderator Linux foruma
  • Veliki Pingvin
  • Guru
  • Pridružio: 16 Dec 2005
  • Poruke: 12488
  • Gde živiš: Južni pol

bobby ::@bocke
Postoji property forme koji se zove icon, ali to ne radi. Postoji samo da bi se lakse konvertovali Delphi programi, tj. da se ne buni pri importovanju da mu je property nepoznat (posto ga Delphi poseduje, i na njemu radi kako treba).


U pravu si. Bez efekta.

bobby ::Mislim da na Linuxu treba da funkcionise frmMain.Icon.LoadFromFile(); postavljen u onCreate event.

Nisam jos probao... U toku dana cu.

Ko je trenutno na forumu
 

Ukupno su 910 korisnika na forumu :: 48 registrovanih, 4 sakrivenih i 858 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., arton, Dimitrise93, Djokkinen, DonRumataEstorski, dulleo, Excalibur13, FileFinder, Georgius, Griffon vulture, hooraay, ikan, Ivica1102, Krvava Devetka, Kubovac, ladro, laganini123, lord sir giga, Mercury, Mi lao shu, milenko crazy north, minmatar34957, moldway, muaddib, nebkv, nenad81, novator, oldtimer, ostoja, ozzy, pacika, panzerwaffe, pedja.st, pein, Sančo, sevenino, Sirius, Srle993, theNedjeljko, Tores, virked, vlad4, vlajkox, voja64, W123, wizzardone, zziko, šumar bk2