![]() |
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. |
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 |
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 ![]() |
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 |
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) |
Re: Mainicon unter Windows 7
Hi himitsu,
Zitat:
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 |
Re: Mainicon unter Windows 7
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
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 |
Re: Mainicon unter Windows 7
Zitat:
Fakt bleibt trotzdem, BRCC32 kommt mit png compressed Icons als Resourcetyp ICON nicht zurecht: ![]() ![]() 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 |
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 |
Re: Mainicon unter Windows 7
Zitat:
Zitat:
Gruß Patrick |
Re: Mainicon unter Windows 7
Hi,
Zitat:
Zitat:
Im ![]() Zitat:
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 |
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: |
Re: Mainicon unter Windows 7
Hi himitsu,
Zitat:
:cheers: Gruß Assertor |
Re: Mainicon unter Windows 7
Hi,
Zitat:
![]() Gruß Assertor |
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:
|
Re: Mainicon unter Windows 7
So, jetzt hab ich auch soeinen Fehler erhalten
Zitat:
|
Re: Mainicon unter Windows 7
Zitat:
Der BRCC32 ist wohl immernoch dieser hier ? Zitat:
|
Re: Mainicon unter Windows 7
Zitat:
|
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. |
Re: Mainicon unter Windows 7
Die RC.exe verlangt wohl eine andere Syntax?
Code:
[edit]
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 OK, ab der zweiten Zeile waren es wohl nur Folgefehler. Aber der BRCC32 kennt wohl mehr vordefinierte Konstanten. |
Re: Mainicon unter Windows 7
|
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ß) |
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? |
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? ( ![]() Ich habe das Test-Icon in der Größe 256x256 mal angehangen. |
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.
|
AW: Mainicon unter Windows 7
Zitat:
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. |
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! |
AW: Mainicon unter Windows 7
Zitat:
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 |
AW: Mainicon unter Windows 7
Zitat:
|
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 :) |
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 11:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz