Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mainicon unter Windows 7 (https://www.delphipraxis.net/139918-mainicon-unter-windows-7-a.html)

Roaster 8. Sep 2009 12:46


Mainicon unter Windows 7
 
Hi,

ich versuche schon seit einiger Zeit das Mainicon (Unter Projekt-Optionen hinzugefügt), so zu entwerfen, dass es unter Vista/Windows 7 korrekt aussieht. Korrekt bedeutet für mich, dass wenn ich mit Alt+Tab umschalte, ich ein großes Icon habe und nicht ein (wahrscheinlich) hochskaliertes. Weiterhin sieht es in der Taskleiste von Win7 eher bescheiden aus und nicht so, wich ich es mit Axialis IconWorkshop 6.5 entworfen habe.

Ich habe in meiner Icon (.ico) Datei alles Format drin: 16x16 32x32, 48x48, 128x128 und sogar 256x256. Letzteres Format sogar komprimiert. Dieses Icons habe ich dann in den Projektoptionen hinzugefügt und kompiliert und in Wind7/Vista getestet.

Aber es sieht mehr oder weniger so aus, als ob die beiden OSs das Icon nicht korrekt finden oder benutzen.

Was mache ich hier falsch? Welche Formate benötigt Win7/Vista denn nun um alles korrekt zu verwenden? Ich benutze Turbo Delphi Pro/BDS2006.

holliesoft 8. Sep 2009 14:27

Re: Mainicon unter Windows 7
 
Hi,

soweit ich weiß, unterstützt Turbo Delphi noch nicht die Icon-Variante "256*256 Pixel PNG komprimiert". Das 256 Pixel Icon funktioniert aber, wenn Du es unkomprimiert benutzt.

Gruß
Patrick

Roaster 8. Sep 2009 14:29

Re: Mainicon unter Windows 7
 
Hi,

das könnte sein, nur hatte ich auch schon mal probiert das Icon nachträglich in die EXE mit ReplaceVistaIcon ReplaceVistaIcon zu kopieren und dies zeigte am Ende das gleiche Ergebnis.

Assertor 8. Sep 2009 14:31

Re: Mainicon unter Windows 7
 
Hi Roaster,

Delphi unterstützt leider durch die Bank weg (Dx - D2010) keine Projekticons in der Auflösung von 256x256px. Es wird immer skaliert. Über die Projektoptionen ist bei 64px Schluß, der Bug ist bekannt und wird leider als nicht wichtig erachtet. Es gibt auch keine Fehlermeldung beim Zuweisen, nur die exe enthält später nichts gescheites > 64px, jedenfalls erinnere ich mich an meine Tests so.

Bis D2006/2007 können Icons in Resourcen in Delphi zusätzlich keine komprimierten (256px) PNGs enthalten, daran scheidert der BRCC32 (bei RC Typ ICON).

Embarcadero/CodeGear hat soweit ich mich erinnere erst mit Delphi 2009 den Microsoft Resource Compiler lizenziert. Damit lassen sich auch direkt 256px PNG compressed Icons als Resource kompilieren.

Möglichkeiten also:
1) Das RES file mit dem RC aus dem MS SDK erstellen und einbinden (z.B. als Icon Groupe ICON) und die IconGruppe MAINICON aus der exe nach dem Build entfernen

2) Ab D2009: Das RC mit 256px PNG compressed ICON kann zum RES kompiliert werden und als alternative IconGruppe in die exe eingebunden werden, auch hierbei muß die IconGruppe MAINICON nach dem Build entfernt werden.

3) Alternativer Weg: Nach dem Build die IconGruppe MainIcon in der exe austauschen, z.B. durch ResHacker

Mit allen Wegen wird im Flip3d, Explorer etc das hochauflösende Icon sichtbar. Ich selbst verwende den 2. Weg. Im PostBuild wird die Delphi-Icongruppe MAINICON vollständig entfernt.

Nachtrag: Es ist also zu unterscheiden zwischen dem Bug die Icons in den Projektoptionen zuzuweisen und dem richtigen Resource Compiler, der auch mit PNG Icons umgehen kann.

Zu Deinem Problem im Explorer: Stichwort "Icon Cache". Kopiere die Datei in ein anderes Verzeichnis, u.U. ist auch ein Neustart notwendig bevor Du das richtige Icon siehst.

Gruß Assertor

himitsu 8. Sep 2009 14:48

Re: Mainicon unter Windows 7
 
Wenn man die Projektresource {$R *.res} wegläßt, dann dürfte der Linker doch auch keine Icon-Resourcen einbinden.
Und in diesem Frall würde es doch reichen, wenn man selber eine Resource, mit den gewünschten Icons und eventuell noch der Versionsinfos (welche dann auch weg wären) nutzt.

Dann müßte man zumindestens nach dem Compilieren nix mehr ändern.

(ein Beispiel für 'ne eigene Versions-Resource findet mal in meinem Manifest-Creator)

Assertor 8. Sep 2009 14:59

Re: Mainicon unter Windows 7
 
Hi himitsu,
Zitat:

Zitat von himitsu
Wenn man die Projektresource {$R *.res} wegläßt, dann dürfte der Linker doch auch keine Icon-Resourcen einbinden.
Und in diesem Frall würde es doch reichen, wenn man selber eine Resource, mit den gewünschten Icons und eventuell noch der Versionsinfos (welche dann auch weg wären) nutzt.

Richtig, kann ich aber nicht nutzen: Ich will automatisch inkrementierende Build-Nummern in der IDE. Eine VersionInfo oder Manifest ist schnell geschrieben, aber die Nr.-Automatisierung geht sonst nur über externen Buildprocess (make, ant o.ä.).

Nachtrag: Gut, man könnte das über das PreBuild Ereignis lösen, aber das Entfernen des Delphi-Helms ist für mich einfacher ;)

Gruß Assertor

holliesoft 8. Sep 2009 15:00

Re: Mainicon unter Windows 7
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Assertor
Hi Roaster,

Delphi unterstützt leider durch die Bank weg (Dx - D2010) keine Projekticons in der Auflösung von 256x256px. Es wird immer skaliert. Über die Projektoptionen ist bei 64px Schluß, der Bug ist bekannt und wird leider als nicht wichtig erachtet. Es gibt auch keine Fehlermeldung beim Zuweisen, nur die exe enthält später nichts gescheites > 64px, jedenfalls erinnere ich mich an meine Tests so.

Sicher? Schau Dir mal den Screenshot an... Wenn das große gelbe Notizzettel-Icon hochskaliert ist, dann frage ich mich...

1. Welchen sauguten Algorithmus benutzt Windows 7 dafür? Den will ich auch ;-)
2. Wieso wird das Delphi-Projektdatei-Icon nicht hochskaliert?

Gruß
Patrick

//EDIT

Unkomprimiertes Icon, 256 Pixel, 32bit Farbtiefe, erstellt mit IcoFX und über die Projektoptionen eingefügt

Assertor 8. Sep 2009 15:05

Re: Mainicon unter Windows 7
 
Zitat:

Zitat von holliesoft
Sicher? Schau Dir mal den Screenshot an... Wenn das große gelbe Notizzettel-Icon hochskaliert ist, dann frage ich mich...

Um welchen Icon-Typ handelt es sich? Ein Screenshot sagt nun wirklich garnichts... Welche Auflösungen, Farbtiefen und Kompression hat das Icon?

Fakt bleibt trotzdem, BRCC32 kommt mit png compressed Icons als Resourcetyp ICON nicht zurecht:
http://qc.embarcadero.com/wc/qcmain.aspx?d=45574
http://qc.embarcadero.com/wc/qcmain.aspx?d=73885

Du kannst in D2007 ein 256px Icon wohl als uncompressed zuweisen, da ruder ich etwas zurück - das geht auch in D2006.

Auf die schnelle finde ich die Information nicht wieder, es entspricht aber trotzdem meiner Erfahrung: Es gibt (gab?) wohl ein Problem beim Schreiben der Icons in die Projektresource, wenn diese über die Projektoptionen zugewiesen wurde. Dies betrifft Icons mit hoher Auflösung und Kompression.

Gruß Assertor

patti 8. Sep 2009 15:09

Re: Mainicon unter Windows 7
 
Benutze zum Erstellen von Icons IcoFX, ein Programm, das ich mal im Internet gefunden hab. In den Einstellungen habe ich "Compress 256x256 images for Windows Vista" deaktiviert. Nach dem Erstellen des Icons (allerdings nicht als PNG) kann ich es in den Projektoptionen als Icon wählen und auf dem Desktop und in Ordnern etc. wird es (zumindest unter Vista - wie es unter Win 7 ist, weiß ich leider nicht) richtig dargestellt :gruebel:

Patti

holliesoft 8. Sep 2009 15:27

Re: Mainicon unter Windows 7
 
Zitat:

Zitat von Assertor
Wie ist das Icon denn in die EXE gekommen und um welchen Typ handelt es sich?

Sorry, mein Fehler, hab die Infos vergessen... hab meinen Beitrag oben editiert :-)

Zitat:

Zitat von patti
Benutze zum Erstellen von Icons IcoFX, ein Programm, das ich mal im Internet gefunden hab. In den Einstellungen habe ich "Compress 256x256 images for Windows Vista" deaktiviert. Nach dem Erstellen des Icons (allerdings nicht als PNG) kann ich es in den Projektoptionen als Icon wählen und auf dem Desktop und in Ordnern etc. wird es (zumindest unter Vista - wie es unter Win 7 ist, weiß ich leider nicht) richtig dargestellt

Benutze auch IcoFX mit der genannten Option - und ja, Windows 7 zeigt es auch richtig an :-)

Gruß
Patrick

Assertor 8. Sep 2009 15:35

Re: Mainicon unter Windows 7
 
Hi,

Zitat:

Zitat von holliesoft
Zitat:

Zitat von Assertor
Wie ist das Icon denn in die EXE gekommen und um welchen Typ handelt es sich?

Sorry, mein Fehler, hab die Infos vergessen... hab meinen Beitrag oben editiert :-)

Gerade gesehen, ja unkomprimiert geht das.

Zitat:

Zitat von patti
Benutze zum Erstellen von Icons IcoFX, ein Programm, das ich mal im Internet gefunden hab. In den Einstellungen habe ich "Compress 256x256 images for Windows Vista" deaktiviert. Nach dem Erstellen des Icons (allerdings nicht als PNG) kann ich es in den Projektoptionen als Icon wählen und auf dem Desktop und in Ordnern etc. wird es (zumindest unter Vista - wie es unter Win 7 ist, weiß ich leider nicht) richtig dargestellt

Kann man so machen. Ich bevorzuge den anderen Weg, da gerade bei kleinen Tools die unkomprimierten Icons teilweise erheblich größere Dateien erzeugen - da gehen schnell ein paar hundert kB drauf. Aber was ist heute schon Speicherplatz :mrgreen:

Im MS Styleguide steht es so:
Zitat:

Only a 32-bit copy of the 256x256 pixel image should be included, and only the 256x256 pixel image should be compressed to keep the file size down. Several icon tools offer compression for Windows Vista.
Mag jeder selbst rauslesen, was er will.

Was jetzt der einzelne Programmierer draus macht ist natürlich seine Sache. Wenn ich eine EXE sehe, die ein uncompressed 256px Icon in der IconGruppe MAINICON hat, muß ich auf jeden Fall immer über die Delphi IDE und den Programmierer schmunzeln ;)

Gruß Assertor

himitsu 8. Sep 2009 16:45

Re: Mainicon unter Windows 7
 
Autoinkrement siehe Luckies Seite und das könnte man dann ja als Pre-Build laufen lassen

[edit]
grad den Nachtrag gelesen :oops:

Assertor 8. Sep 2009 16:55

Re: Mainicon unter Windows 7
 
Hi himitsu,

Zitat:

Zitat von himitsu
Autoinkrement siehe Luckies Seite und das könnte man dann ja als Pre-Build laufen lassen

[edit]
grad den Nachtrag gelesen :oops:

Genau, nur wegen Dir :zwinker: Wußt ich doch, daß wenn ich das nicht nachtrage, Du mir gleich das Pre-Build um die Ohren haust :mrgreen:

:cheers:

Gruß Assertor

Assertor 18. Sep 2009 09:30

Re: Mainicon unter Windows 7
 
Hi,

Zitat:

Zitat von Assertor
Zitat:

Zitat von holliesoft
Sicher? Schau Dir mal den Screenshot an... Wenn das große gelbe Notizzettel-Icon hochskaliert ist, dann frage ich mich...

...
Es gibt (gab?) wohl ein Problem beim Schreiben der Icons in die Projektresource, wenn diese über die Projektoptionen zugewiesen wurde. Dies betrifft Icons mit hoher Auflösung und Kompression.

Addendum: Ich lag absolut richtig, Andy hat es jetzt im Snapshot des IDE Fixpack gefixt für D2007-D2010. Link: http://andy.jgknet.de/blog/?p=698

Gruß Assertor

Roaster 18. Sep 2009 14:33

Re: Mainicon unter Windows 7
 
Wäre natürlich jetzt prima, wenn ich dies auch für mein Turbo Delphi Pro noch bekäme, da ich noch das ein oder andere Progrämmchen dort am Laufen habe :wink:

himitsu 1. Jun 2010 13:35

Re: Mainicon unter Windows 7
 
So, jetzt hab ich auch soeinen Fehler erhalten

Zitat:

Error ManifestCreator.manifest.rc 415 3: Allocate failed
Anscheinend mag der BRCC32 vom Delphi 2010 immernoch keine größeren/moderneren Icons. :?

turboPASCAL 1. Jun 2010 15:04

Re: Mainicon unter Windows 7
 
Zitat:

Anscheinend mag der BRCC32 vom Delphi 2010 immernoch keine größeren/moderneren Icons
Na das ist doch fein, noch ein Grund warum ich bei D6 bleibe. ;)
Der BRCC32 ist wohl immernoch dieser hier ?
Zitat:

Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.
:mrgreen:

himitsu 1. Jun 2010 15:20

Re: Mainicon unter Windows 7
 
Zitat:

Zitat von turboPASCAL
Der BRCC32 ist wohl immernoch dieser hier ?
Zitat:

Borland Resource Compiler Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation. All rights reserved.

Jupp.

Stevie 1. Jun 2010 16:08

Re: Mainicon unter Windows 7
 
Versuch mal den Windows SDK Resource Compiler (rc.exe im BDS\bin Verzeichnis und afaik ab 2009 dabei).
Kann man auch in den Projektoptionen unter "Resource Compiler" -> "Resource compiler to use" einstellen.

himitsu 1. Jun 2010 17:25

Re: Mainicon unter Windows 7
 
Die RC.exe verlangt wohl eine andere Syntax?

Code:
ManifestCreator.manifest.rc(5) : error RC2144 : PRIMARY LANGUAGE ID not a number
ManifestCreator.manifest.rc(7) : error RC2135 : file not found: VS_VERSION_INFO
ManifestCreator.manifest.rc(8) : error RC2135 : file not found: 1
ManifestCreator.manifest.rc(9) : error RC2135 : file not found: 1
ManifestCreator.manifest.rc(10) : error RC2135 : file not found: 0x3fL
ManifestCreator.manifest.rc(12) : error RC2135 : file not found: FILEOS
ManifestCreator.manifest.rc(13) : error RC2135 : file not found: VFT_STATIC_LIB
ManifestCreator.manifest.rc(16) : error RC2164 : unexpected value in RCDATA
ManifestCreator.manifest.rc(18) : error RC2135 : file not found: BLOCK
ManifestCreator.manifest.rc(20) : error RC2135 : file not found: VALUE
[edit]
OK, ab der zweiten Zeile waren es wohl nur Folgefehler.

Aber der BRCC32 kennt wohl mehr vordefinierte Konstanten.

Uwe Raabe 1. Jun 2010 18:46

Re: Mainicon unter Windows 7
 
Zitat:

Zitat von himitsu
Die RC.exe verlangt wohl eine andere Syntax?

Schau mal hier

himitsu 1. Jun 2010 19:03

Re: Mainicon unter Windows 7
 
Nee, die Aufrufsyntax hab ich schon am Laufen,
aber bei der Syntax des Resource-Script muckt die RC.exe rum und wirft Fehler.

Hab grade erstmal meinen Manifest-Creator so umgestllt, daß eventuell verwendete Konstanten sicherheitshalber per DEFINE verfügbar gemacht werden
und daß man nun den Compiler auswählen kann, für welchen die Batchfile erstellt wird.

Einiges läuft schon. (aktuell suche ich, warum er "ICON" nicht kennt und was dafür hin muß)

Schwedenbitter 13. Jul 2011 13:43

AW: Re: Mainicon unter Windows 7
 
Hallo,

ich habe diesen Thread zum Anlass genommen, meiner App auch große Icons für Windows Vista/7 zu gönnen. Dabei fiel mir aber auf, dass zumindest unter Windows 7 nur die Icons in den Größen 48x48 und 256x256 benutzt werden.
Irgendwo hatte ich gelesen, man solle auch Icons in 128x128 ect. zur Verfügung stellen. Das ist doch dann aber quatsch, oder?

IconFX bietet von Hause aus auch "nur" 16x16, 24x24, 32x32, 48x48 und 256x256.

Wie ist es denn nun richtig?
Da die für Vista komprimierten Icons von TurboDelphi nicht erkannt werden und meine App jetzt fast doppelt so groß ist, hier meine nächste Frage: Kann man die irgendwie anders verkleinern?

361 21. Dez 2017 16:01

AW: Mainicon unter Windows 7
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Abend alle zusammen,

ich hoffe es ist ok, wenn ich diesen Thread noch mal aufgreife, da meine Suche nicht sehr viel passendes ergeben hat.

Ich nutze Delphi DX10.1 Berlin und habe mittels rc-Datei ein Multi-Layer-Icon mit Layern größer 128x128 Pixel (wie von Embarcadero dokumentiert), nämlich 16x16, 32x32, 48x48 und 256x256 Pixel versucht einzubinden. Leider erhalte ich die Fehlermeldung "[BRCC32 Error] ApplicationIcon.rc(1): Allocate failed" beim kompilieren. Wenn das Multi-Layer-Icon maximal 128x128 Pixel hat (was aber nicht der Dokumentation für Windows entspricht), dann klappt es. Es klappt auch mit dem 256x256 Icon wenn ich es in den Project Settings direkt auswähle, nur eben nicht über die rc-Datei. Hat hier jemand eine Information oder einen Tipp, ob das lösbar ist?

(Dokumentation, die ich meine)
Ich habe das Test-Icon in der Größe 256x256 mal angehangen.

CCRDude 22. Dez 2017 09:29

AW: Mainicon unter Windows 7
 
Und wenn Du das Icon über eine .res statt .rc einbindest? Dann kannst Du einen anderen externen resource compiler verwenden.

Ghostwalker 22. Dez 2017 12:25

AW: Mainicon unter Windows 7
 
Zitat:

Zitat von CCRDude (Beitrag 1389468)
Und wenn Du das Icon über eine .res statt .rc einbindest? Dann kannst Du einen anderen externen resource compiler verwenden.

Ähm...normalerweise wird immer ein .Res eingebunden. Diese muss aber erstmal aus einem .RC mittels Resourcecompiler erzeugt werden.

Bei Verwendung der Auflösungen:

16,24,32,48,128,256 in einem Icon hatte ich das gleiche Problem. Durch Zufall hab ich mal die 128'er Auflösung beim Erstellen des Icons (mittels IconFX) vergessen und siehe da. Der Compiler läuft durch.

Seit dem hab ich generell die 128'er Auflösung weggelassen.

CCRDude 23. Dez 2017 08:12

AW: Mainicon unter Windows 7
 
Ähm... jetzt hast Du schön klug geschissen, dass der Linker natürlich immer die .res nimmt, aber meine Idee trotzdem nicht verstanden ;)

Übergib dem $R nur eine .res und erstelle die mit einem anderen als dem Delphi Resouce Compiler!

EWeiss 23. Dez 2017 11:21

AW: Mainicon unter Windows 7
 
Zitat:

Ähm... jetzt hast Du schön klug geschissen
sorry.. oder du? ;)
Denn wenn das wie von @Ghostwalker beschrieben ohne 128 Icon funktioniert warum soll er dann die *.res extern erzeugen?
wenn ich ein 256 Icon verwenden kann, dann kann ich mir das 128'er getrost schenken.
Windows sollte in der Lage sein das 256 runter zu skalieren.

gruss

Ghostwalker 23. Dez 2017 13:03

AW: Mainicon unter Windows 7
 
Zitat:

Zitat von CCRDude (Beitrag 1389536)
Ähm... jetzt hast Du schön klug geschissen, dass der Linker natürlich immer die .res nimmt, aber meine Idee trotzdem nicht verstanden ;)

Deine Idee hab ich, trotz deiner missverständlichen Formulierung, sehr wohl verstanden. Wie vorher in diesem Thread bereits angemerkt wurde, braucht man noch nicht mal an der Einbindung der Resourcen was umstellen, sondern kann via Compiler-Einstellungen einfach einen alternativen Resourcecompiler angeben. 8-)

361 23. Dez 2017 16:09

AW: Mainicon unter Windows 7
 
Guten Abend Euch,

und entschuldigt bitte meine verspätete Antwort. Ich hatte einen System-Crash meiner Workstation und musste diese erst wieder zum laufen kriegen.

Vielen Dank für Eure Antworten. Heißt das, wenn ich die 128er weg lasse, klappt es mit dem 256er? Ich bin mir eigentlich recht sicher, dass ich das so hatte, werde es aber nun noch einmal probieren, denn ich hatte mich an die Dokumentation von Embardadero gehalten, wo 128 nicht angehakt ist. Ich versuche es noch mal und bin für jeden Tipp und jede Hilfe dankbar. Was mir schon mal hilft ist, dass andere das gleiche Problem haben. Damit kann ich schon mal gewisse Punkte ausschließen.

Wünsche allen schon mal frohe Weihnachten :)

Fukiszo 18. Jan 2018 00:11

AW: Mainicon unter Windows 7
 
ich hatte mir mal ResourceTuner (HeavenTools) gekauft, deren Consolen programm beherrscht sowas.
nach einer kompilation entfernt eine batch alles was ich ihr beigebracht habe und fügt was-auch-immer in die .exe datei ein. unter anderem auch Vista icons, solange sie im PNG format vorliegen.
das ist leider nur buy-ware aber falls man richtig in der patsche sitzt und dutzende .exe datei abarbeiten muss kann es enorm nützlich sein.
mal abgesehen von alle vorangegangenen vorschlägen zu diesem thema.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz