![]() |
Problem mit Icon aus Ressource
Hallo,
ich möchte ein zusätzliches Icon in mein Programm einbinden, um es für eine Verknüpfung und - hier liegt das Problem - für ein Formular zu nutzen. Ich habe 3 Möglichkeiten probiert. :arrow: RC-Datei, Delphi-Code, Fehler Möglichkeit 1
Delphi-Quellcode:
9 ICON "Zahnrad.ico"
Delphi-Quellcode:
:!: Zuriffsverletzung
var ResIco : TResourceStream;
begin ResIco := TResourceStream.CreateFromID(hInstance, 9, 'ICON'); try Icon.LoadFromStream(ResIco); finally FreeAndNil(ResIco); end; Möglichkeit 2 (RT_ICON = vordefiniert)
Delphi-Quellcode:
9 RT_ICON "Zahnrad.ico"
Delphi-Quellcode:
:!: kein Fehler, Icon wird im Formular angezeigt, ist aber für die Verknüpfung nicht zu sehen, als wäre es nicht da.
var ResIco : TResourceStream;
begin ResIco := TResourceStream.CreateFromID(hInstance, 9, 'RT_ICON'); try Icon.LoadFromStream(ResIco); finally FreeAndNil(ResIco); end; Möglichkeit 3
Delphi-Quellcode:
ZrI ICON "Zahnrad.ico"
Delphi-Quellcode:
:!: "Ressource 'ZrI' wurde nicht gefunden
var ResIco : TResourceStream;
begin ResIco := TResourceStream.Create(hInstance, 'ZrI', 'ICON'); try Icon.LoadFromStream(ResIco); finally FreeAndNil(ResIco); end; Ich hoffe, jemand kann die "2 Bedingungen" unter einen Hut bringen :( Danke, ManuMF |
Re: Problem mit Icon aus Ressource
ich hab grad probiert und glaube den Fehler gefunden zu haben. Wenn die rc-Datei so aussieht:
Code:
so zeigt mein Ressourcenhacker als Typ "Icon" an und nicht "ICON"
ZrI ICON "Icon1.ico"
wenn die RC-Datei hingegen so aussieht:
Code:
so zeigt der Ressorucenhacker als Typ "ICON2" an.
ZrI ICON2 "Icon1.ico"
Da ICON also ein resserviertes Wort ist wird das ganze nicht unbedingt als "ICON" eingebunden. Bei Verwendung des Types "ICON" wird sogar geprüft vom Ressourcencompiler ob es sich um eine gültige Icon-Datei handelt. Folgendes sollte also bei dir funktionieren:
Code:
ZrI ICON "Zahnrad.ico"
Delphi-Quellcode:
anstelle von "Icon" ist es jedoch besser die constante zu nutzen RT_ICON zu verwenden.
var ResIco : TResourceStream;
begin ResIco := TResourceStream.Create(hInstance, 'ZrI', 'Icon'); try Icon.LoadFromStream(ResIco); finally FreeAndNil(ResIco); end;
Delphi-Quellcode:
var ResIco : TResourceStream;
begin ResIco := TResourceStream.Create(hInstance, 'ZrI', RT_ICON); try Icon.LoadFromStream(ResIco); finally FreeAndNil(ResIco); end; |
Re: Problem mit Icon aus Ressource
Hallo,
wenn ich diesen Code verwende, funktioniert es ja nicht (Möglichkeit 3). Die Ergänzung mit RT_ICON funktioniert auch nicht, dann habe ich das Icon nicht als Symbol für eine Verknüpfung. :-( Gruß, ManuMF |
Re: Problem mit Icon aus Ressource
Ich bin ja sooo toll :mrgreen: :love:
Du musst als Typ: RT_GROUP_ICON verwenden (im Delphi-Quelltext) Hab es gefunden als ich in der Hilfe bei "FindResource" mir mal die typen angesehen hab auf der Suche nach einem IconTyp. Und bei RT_ICON stand Hardware-dependent. Also hab ich nach einer Icon-Konstanten gesucht wo "Hardware-independent" steht. Und siehe da. Direkt über der Konstanten RT_ICON fand ich RT_GROUP_ICON |
Re: Problem mit Icon aus Ressource
Hallo,
Zitat:
Aber statt des Icons im Formular nur ein 16x16 schwarzes Quadrat... Gruß, ManuMF |
Re: Problem mit Icon aus Ressource
so, das ganze geht viel einfacher:
Delphi-Quellcode:
und schon hat dein Fenster ein anderes Icon.
Self.Icon.Handle := LoadIcon(HInstance, 'ZrI');
|
Re: Problem mit Icon aus Ressource
Hallo,
Danke! :thumb: Endlich klappt es... Das hilft mir, 4KB einzusparen. ;-) Nein, im Ernst, ich möchte es ja für die Zukunft wissen, wenn ich mal wesentlich mehr Icons zu laden haben sollte... Gruß, ManuMF |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 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