Autor Beitrag
kondor
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 25.02.03 20:00 
wie kann ich eine Icon im Programm speichern, sodass ich sie dann während des Programmlaufs mit der Aktuellen umtauschen kann?

_________________
"Many receive advice, few profit by it." Publilius Syrus
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Mo 10.03.03 23:23 
Wähernd der Laufzeit umtauschen kannst du das wie folgt:
Du nimmst den Image Editor, speicherst in die project1.rc datei meherer icons rein und nimmst dann form1.icon und lädst es aus der resource. wie du das laden machst hab ich grad keinen plan.
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Di 11.03.03 00:18 
Eine sehr simple Methode ist auch über ImageList. Im ImageList einfach alle gewünschten Icons laden und so zuweisen:

ausblenden Quelltext
1:
ImageList1.GetIcon(0, Icon);					

ausblenden Quelltext
1:
ImageList1.GetIcon(0, Form1.Icon);					

ausblenden Quelltext
1:
ImageList1.GetIcon(0, Application.Icon);					


Für Anfänger auf jeden Fall einfacher.

_________________
Popov
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 11.03.03 09:16 
ImageList? Wozu? - Was ist denn daran schwer?
ausblenden Quelltext
1:
2:
Application.Icon.Handle := LoadIcon(hInstance,MAKEINTRESOURCE(1));
Form1.Icon.Handle := { ... }

Basierend auf dem Vorschlag von Onz. Sprich: Texteditor auf und bspw. folgendes eintippen:
ausblenden Quelltext
1:
2:
3:
1  ICON  "MeinIco.ico"
2  ICON  "DeinIco.ico"
3  ICON  "SeinIco.ico"

und mit der Endung ".rc" speichern. Das ganze mit Borlands Ressourcencompiler in eine RES-Datei umwandeln:
ausblenden Quelltext
1:
brcc32 Test.rc					

in das Projekt einbinden
ausblenden Quelltext
1:
{$R Test.res}					

und dann wie ganz am Anfang gezeigt die Icons laden und zuordnen. - Für Anfänger zu beachten ist eigentlich nur, dass die ID (1, 2, 3) eben keine Zahl sondern eher ein String (pchar) ist. Daher wäre
ausblenden Quelltext
1:
LoadIcon(hInstance,1);					

falsch,
ausblenden Quelltext
1:
LoadIcon(hInstance,'1');					

(bzw. wie oben via MAKEINTRESOURCE) allerdings richtig. Mit anderen Worten: anstelle der Nummern kann man als IDs auch gleich Worte benutzen, die das Symbol treffend beschreiben:
ausblenden Quelltext
1:
STOP  ICON  "stop.ico"					
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Di 11.03.03 10:44 
Oh nein. Zugegeben, die Ressorce-Varianter ist professionaler und wird auch von mir angewendet, aber sie ist nicht genauso einfach wie Image-List. Vor allem nicht für Anfänger. Wobei ich kondor nicht als Anfänger bezeichte, es ist eher allgemein gesagt.

Ich kann mich noch erinnern als ich früher eine Animation in den TrayIcon einbauen wollte. Es hat Stunden gedauert es hinzukriegen. Frag mich heute nicht wieso, es war so. Irgendetwas hat immer nicht funktioniert. Aber ich hatte auch keine schöne Anleitung von Mathias ;) Ich hab mir letztens mal ein altes Programm von mir angeguckt und hab die Hände über den Kopf geschlagen. Es hat funktioniert, aber zeigen darf man das keinem.

Mit dem Wissen von heute ist nichts schwer. Aber man sollte hin und wieder wie ein Anfänger denken.

_________________
Popov
kondor Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Di 11.03.03 13:58 
wow, super!
genau das hab ich gesucht!!! funktioniert tadellos!

vielen dank an Mathias.

_________________
"Many receive advice, few profit by it." Publilius Syrus
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Di 11.03.03 14:06 
Hachja....die alten Programme...katastrophaler code...aber sie gehen.
Mathias' Anleitung ist natürlich besser als meine. Nagut, es war spät.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 11.03.03 14:17 
Popov hat folgendes geschrieben:
(...)

Nichts für ungut, Popov. Ich verstehe dich vollkommen, Popov. Peter (Lustig) hat, glaube ich, von seinem ersten Programm mit unzähligen if-Abfragen erzählt. Und meine ersten Programme sahen nicht besser aus.

Aber genau das ist doch der Sinn des Forums -

Die Lösungen, die man sich im Laufe der Zeit durch Erfahrungen erarbeitet hat, kann man so auch Anfängern zur Verfügung stellen, damit die a) nicht die selben verschlungenen Pfade nehmen müssen wie man selbst damals, und b) damit sie es gleich richtig bzw. vernünftig und so optimal wie möglich machen.

Gruß.
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Di 11.03.03 14:37 
Nichtsdestotrotz halte ich die ImageList Methode nich für schlecht. Es ist kein billiger Trick. ImageList bitet die Möglichkeit mit Icons zu arbeiten. Ich schätze, daß viele diese Möglichkeit einfach noch nicht bemerkt haben. Mir fällt einfach keine andere Anwendungsmöglichkeit für TImageList.GetIcon ein. Wo sonst kann man Icons anwenden?

_________________
Popov
Moritz M.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1672



BeitragVerfasst: Di 11.03.03 14:44 
ImageList ist auch eine gute Lösung.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 11.03.03 16:10 
Popov hat folgendes geschrieben:
Mir fällt einfach keine andere Anwendungsmöglichkeit für TImageList.GetIcon ein. Wo sonst kann man Icons anwenden?

List-View, bspw. Wobei ich dabei nicht via GetIcon zugreife. Na gut, das hängt sicher von der Anwendung ab, aber mir fällt eigentlich nur ein Programm ein, das aus einem bestimmten Ordner die Icondateien ausgelesen und in einer List-View dargestellt hat.
Kurz gesagt: mit FindFirst/usw. habe ich die Dateien gesucht, dann die jeweils gefundene als Icon in die ImageList geschoben - allerdings war der Rückgabewert dieses "Schiebens" bereits der Index, den ich für das List-View-Item gebraucht habe. :)