| Autor |
Beitrag |
Kay E.
      
Beiträge: 118
|
Verfasst: So 21.11.10 16:21
Hallo!
Und mal wieder brauch ich eure Hilfe:
Ich hab ein neues Objekt erstellt, das von TImage abgeleitet ist. Dieses Objekt hat die Eigenschaft, dass es 3 Darstellungszustände hat. Im Grundzustand wird Bild a angezeigt, wenn ich links klicke Bild b und wenn ich rechts klicke Bild c.
Bis jetzt lese ich die Bilder aus dem Verzeichnis aus, in dem die Exe liegt. Ich würde aber lieber die Bilder in der Komponente selbst (bzw wenn das nicht geht zumindest in der Exe) kapseln, so dass ich die Bilder nicht immer "lose" mit dem Programm rumschleppen muss.
Wie stell ich das an?
Danke für eure Antworten!
|
|
platzwart
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: So 21.11.10 16:32
_________________ Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: So 21.11.10 16:34
Lade Dir den XNResource Editor aus dem Web.
3 * Addresource
das ganze Speichern unter Egalwie.res
Egalwie.res in dem Projektordner kopieren
In Deine Komponente einbinden über {$res Egalwie.res}
im Code
Delphi-Quelltext 1:
| bmp.LoadFromResourceName(HInstance, 'NAMEBILD1') |
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Zuletzt bearbeitet von bummi am So 21.11.10 18:06, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 21.11.10 17:11
Und das Einbinden mit {$R xy.res} kannst du natürlich auch in der Unit der Komponente machen. 
|
|
bummi
      
Beiträge: 1248
Erhaltene Danke: 187
XP - Server 2008R2
D2 - Delphi XE
|
Verfasst: So 21.11.10 18:06
@jaenicke
sorry, da habe ich wohl gepennt
@Kay E.
natürlich gehört die res in die Komponente
ich habe es korrigiert...
_________________ Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
|
|
Kay E. 
      
Beiträge: 118
|
Verfasst: So 21.11.10 19:31
Hey, dankeschön für die Antworten!
Ich bin die Liste durchgegangen und es hat auch alles funktioniert, nur steh ich jetzt bei dem Problem, die Resourcen im Quellcode anzusprechen. Die Bilder sind JPEG's und wenn ich den aufruf von bummi versuch (LoadFromResourceName), dann stell ich fest, dass JPEG's sowas nicht haben. Ich find da nur LoadFromStream, LoadFromClipboardFormat und in TImage.picture noch das LoadFromFile.
Wie bring ich die Daten aus der Res-Datei denn nun auf das TImage?
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 21.11.10 19:45
Benutze einfach TResourceStream, den kannst du dann an ein TJpegImage füttern. 
|
|
Kay E. 
      
Beiträge: 118
|
Verfasst: So 21.11.10 20:09
Also irgendwie bekomm ichs nicht gebacken.
So sieht das Resource-File aus:
und so die Implementierung:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| implementation
{$R ImagesTWiesenfeld.res}
procedure TWiesenfeld.LoadPictureFromJpgResource(picture : TPicture;const AResName: string); var rs: TResourceStream; jpg: TJPEGImage; begin rs := TResourceStream.Create(HInstance,AResName,RT_RCDATA); jpg := TJPEGImage.Create; try jpg.LoadFromStream(rs); picture.Assign(jpg); finally jpg.Free; rs.Free; end; end;
procedure TWiesenfeld.SetPicture(Fieldstate: TFieldState); begin case Fieldstate of fsEmpty: LoadPictureFromJpgResource(Picture,'RESEMPTY'); fsCrystal: LoadPictureFromJpgResource(Picture,'RESCRYSTAL'); fsBottle: LoadPictureFromJpgResource(Picture,'RESBOTTLE'); end; end; |
Es compiliert, aber beim Start des Programms kommt dann die Fehlermeldung:
Was mach ich denn falsch?
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 21.11.10 20:33
|
|
Kay E. 
      
Beiträge: 118
|
Verfasst: So 21.11.10 20:44
Ahhhh, perfekt!
Um ehrlich zu sein, hatte ich nicht genau verstanden, was der letzte Parameter von mir will *g* In das RCData hab ich in dem Zusammenhang dann iwo im Netz gefunden. Vielen Dank für die Hilf, so klappt alles!
|
|