Autor Beitrag
Bischi
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 21.07.04 13:18 
Hallo,

ich habe ein kleines Programm entwickelt, welches zur Anzeige von Daten ein Treeview verwendet. Dem Treeview habe ich eine Imagelist zugewiesen, damit vor jedem Knoten ein kleines Bildchen angezeigt wird. Das Bild lade ich momentan noch mit

ausblenden Quelltext
1:
myimagelist.add(image.fromfile('star.ico');					


Ich möchte diese Icon aber nicht mehr von Platte laden, sondern als Resource direkt in meinem Executable haben, damit ich bei der Verteilung der Software nicht auch noch die Bildchen mitkopieren muss. In Visual Studio .NET weiss ich wie man einem Projekt eine Resource hinzufügt, in der Delphi 8 IDE habe ich die passenden Menüs noch nicht gefunden. Wo muss ich in der IDE suchen, damit das funktioniert.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Mi 21.07.04 13:39 
Ich kenn mich mit NET net aus, aber ich glaube, dass das genauso geht:
Du erstellt eine Resourcendatei:
ausblenden Res.rc
1:
Bildchen   ICON   star.ico					

Dann schreibst du in die DPR Datei (ziemlich weit oben):
ausblenden Delphi-Quelltext
1:
{$R 'Res.res' 'Res.rc'}					

Laden kannst du das Bild dann so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var Ico:TIcon;
begin
 Ico:=TIcon.Create;
 Ico.Handle:=LoadIcon(HInstance,'Bildchen');
 myImageList.Add(Ico);
end;

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 21.07.04 16:49 
@max: Ganz so einfach ist das nicht. Ich habe zwar die Delphi 8-Hilfe nicht mehr da und kann dir also nicht sagen, ob D8 noch das alte Format unterstützt, aber im Visual Studio ist eine Ressourcendatei eigentlich auch bloß noch eine XML-Datei. Bitmaps und Icons werden aber codiert gespeichert ("base64"), um Probleme mit nicht darstellbaren Zeichen zu vermeiden. *g* Hier mal ein Auszug:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
<data name="imageList1.ImageStream"
    mimetype="text/microsoft-urt/binary-serialized/base64">
  <value>
    AAEAAAD/////AQAAAAAAAAAMAgAAAFpTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0xLjAuMjQx
    MS4wLCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZT
    eXN0ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMA
    AAB8BwAAAk1TRnQBSQFMAwEBAAEFAQABBAEAARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgAB
    KAMAAUADAAEgAwABAQEAAQgGAAEIGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwB
    wAEAAfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQAD
    OQEAAYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMD

    ...

    AAP/AwAE/wIABP8wAAP/BQAC/wIABP8wAAP/AQAB/wMAAf8DAAT/MAAD/wUACP8wAAX/BwAE/zAABP8B
    AAH/BAAG/zAAEP8wABD/MAAQ/zAAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgABARYAA///
    AAIACw==
  </value>
</data>

;)


@Bischi: Warum machst du es nicht so, dass du (ähnlich VCL-Projekten) die Grafiken zur Entwurfszeit lädst? Du klickst auf deine Imageliste und suchst im Objektinspektor nach dem Eintrag "Images". Klickst du auf den Button mit den 3 Punkten, öffnet sich ein Dialogfeld, in dem du die gewünschten Bitmaps angeben kannst. Damit werden sie automatisch im richtigen Format in der "*.resx"-Datei abgelegt.
So hätte ich´s gemacht, weil das im Prinzip auch dem Weg entspricht, den ich aus VCL-Projekten kenne (sofern ich die Grafiken nicht dynamisch laden muss, weil ich sie aus dem System hole, o.ä.), und auf Grund der Angleichung an die VS-IDE solltest du kein Problem haben, diese Schritte mit Delphi 8 exakt nachzuvollziehen.

Evtl. sieht das bei VCL.NET-Projekten wieder anders aus (@max, bei WinForms gibt´s kein TIcon :)), aber in dem Fall müsste man eben bei Fragen zu .NET auch künftig noch dazu schreiben, ob man von WinForms oder der VCL.NET redet.

Ansonsten müsstest du mal kurz erklären, was du damit meinst, wenn du schreibst:
Zitat:
In Visual Studio .NET weiss ich wie man einem Projekt eine Resource hinzufügt

Sprich: Was machst du da genau? Dann wüsste ich immerhin schon, worin der Unterschied zu dem von mir o.g. Weg liegt.