![]() |
Mit Firemonkey Bild aus Ressource laden
Hey Leute,
ich benutze Delphi Starter XE5 und würde gerne ein Bild der exe direkt hinzufügen. Daher habe ich schon die .rc-Datei erstellt und in eine .res-Datei umgewandelt. MIt einer normalen VLC-FOrmular-Anwendung bekomme ich es mit folgender Zeile auch super hin. Image1.Picture.Bitmap.LoadFromResourceName(hinstan ce, 'bild1'); Nur in Firemonkey-Desktopanwendungen gibt es den Befehl nicht. Firemonkey möchte ich aber nutzen, da ich die Floatanimation davon nutze um Panels sanft ein und auszublenden. Habe daher folgendes probiert: procedure TForm1.Button1Click(Sender: TObject); var InStream: TResourceStream; begin InStream := TResourceStream.Create(HInstance, 'Bild1', RT_RCDATA); try Image1.Bitmap.LoadFromStream(InStream); finally InStream.Free; end; end; da sagt er mit aber immer, das er die Ressourcendatei nicht finden kann. Vielleicht kann mir ja einer von euch helfen. |
AW: Mit Firemonkey Bild aus Ressource laden
Fehler in der RC Datei?
Ich mache es so... GlobalScale ist der Bildschirmfaktor Retina usw.
Delphi-Quellcode:
Mavarik
Procedure TMyForm.LoadBild(FImage:TImage;ResName:String);
var RS : TResourceStream; begin FImage.MultiResBitmap.Clear; if GlobalScale < 2.0 then begin RS := TResourceStream.Create(HInstance,ResName+'Low',RT_RCDATA); FImage.MultiResBitmap.LoadItemFromStream(RS,1.0); FreeAndNil(RS); end else begin RS := TResourceStream.Create(HInstance,ResName+'High',RT_RCDATA); FImage.MultiResBitmap.LoadItemFromStream(RS,2.0); FreeAndNil(RS); end; end; |
AW: Mit Firemonkey Bild aus Ressource laden
Wenn man keinen doppelten Source mag:
Delphi-Quellcode:
Procedure TMyForm.LoadBild(FImage:TImage;ResName:String);
var RS : TResourceStream; Factor : single; Resolution : string; begin FImage.MultiResBitmap.Clear; if GlobalScale < 2.0 then begin Factor := 1.0; Resolution := 'Low'; else begin Factor := 2.0; Resolution := 'High'; end; RS := TResourceStream.Create(HInstance,ResName+Resolution,RT_RCDATA); FImage.MultiResBitmap.LoadItemFromStream(RS, Factor); FreeAndNil(RS); end; |
AW: Mit Firemonkey Bild aus Ressource laden
Liste der Anhänge anzeigen (Anzahl: 1)
Im Procedurennamen hab ich mal den Punkt entfernt weil er mir das sonst als rot anzeigt. Oder hatte der Punkt nen bestimmten Grund?
DIe rotmarkierten Sachen zeigt er mir als Fehler an. Was mache ich falsch? Und einfach FImage durch Image1 ersetzen funktioniert auch nicht... |
AW: Mit Firemonkey Bild aus Ressource laden
Die Prozedur war als Methode eines TMyForm-Objekts deklariert. Wenn Dein Formularobjekt anders heißt, musst Du das anpassen und im Objekt ebenfalls deklarieren. GlobalScale ist eine gobale Variable, die mußt Du ebenfalls vorher deklarieren und füllen.
|
AW: Mit Firemonkey Bild aus Ressource laden
Bzw.
Delphi-Quellcode:
Function GlobalScale:Single;
var ScreenSrv: IFMXScreenService; begin if TPlatformServices.Current.SupportsPlatformService(IFMXScreenService, IInterface(ScreenSrv)) then Result := ScreenSrv.GetScreenScale else Result:= 1.0; end; |
AW: Mit Firemonkey Bild aus Ressource laden
... und ein 'end' vor dem rot unterstrichendem 'else' würde einen weiteren Fehler beseitigen.
|
AW: Mit Firemonkey Bild aus Ressource laden
Zitat:
|
AW: Mit Firemonkey Bild aus Ressource laden
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du dir
![]()
Delphi-Quellcode:
und
begin
Delphi-Quellcode:
)
end
Anhang 40553 |
AW: Mit Firemonkey Bild aus Ressource laden
Liste der Anhänge anzeigen (Anzahl: 1)
OKay, das mit dem end hätte ich sehen müssen^^ aber der Wizard ist ne coole Idee.
also mein Formular-Objekt ist zB. mein Button oder der Name meiner Form? denn
Delphi-Quellcode:
scheint es noch nicht zu sein.
Procedure Form1.LoadBild(FImage:TImage;ResName:String);
wenn ich die Funktion einfüge fehlt bestimmt noch ne Bibliothek oder Uni oder sowas? denn er unterstreicht mir wieder folgendes: |
AW: Mit Firemonkey Bild aus Ressource laden
Dann geh mit dem Cursor in der IDE auf das rot unterstrichene und drücke ganz beherzt Shift+Ctrl+A.
Oder du benutzt die Online-Hilfe ![]() ![]() |
AW: Mit Firemonkey Bild aus Ressource laden
Jetzt mal unabhängig von diesem Scale, er findet meine Ressource ja nicht. Und das obwohl ich unter {$R *.dfm} das hier schreibe
{$R Test.res}. Und in der test.re steht: Bild1 BITMAP "C:\Users\blablabla\Desktop\Foto.bmp". dann müsste doch eigentlich auch RS := TResourceStream.Create(HInstance,Bild1hight,RT_RCD ATA); FImage.MultiResBitmap.LoadItemFromStream(RS, 2); funktionieren oder nicht? |
AW: Mit Firemonkey Bild aus Ressource laden
Sollte die Datei nicht test.rc heißen? Und der Include {$R 'test.res' 'test.rc'} ?
|
AW: Mit Firemonkey Bild aus Ressource laden
Zitat:
|
AW: Mit Firemonkey Bild aus Ressource laden
Zitat:
Code:
Tags setzen?
[DELPHI]
[/DELPHI] Dann würde das so aussehen
Delphi-Quellcode:
RS := TResourceStream.Create(HInstance,Bild1hight,RT_RCDATA);
FImage.MultiResBitmap.LoadItemFromStream(RS, 2); |
AW: Mit Firemonkey Bild aus Ressource laden
Liste der Anhänge anzeigen (Anzahl: 1)
Okay, habs gelöst. Danke an alle die mir geholfen haben. Der Trick war folgender:
Bild einfach per Drag&Drop unter "Projekverwaltung" (oben rechts) auf die Projekt.exe ziehen. Damit ist alles an rc und res Daten erstellt was man braucht. Den Namen der Ressource findet man dann in der rc Datei die im Projektordner erstellt wurde. Außerdem erscheint ein Ordner in der "Projektverwaltung" in welchem das Bild steckt. Wenn man das dort anklickt, erscheint im "Objektinspektor" (unten links) die Eigenschaften zum TResourceStream. Dort war Ressourcentyp BITMAP eingestellt und ich musste das einfach nur auf RT_RCDATA ändern..... warum auch immer ihm das im Quelltext nicht gereicht hat. |
AW: Mit Firemonkey Bild aus Ressource laden
Warum ihm das im Quelltext nicht gereicht hat?
Nun ganz einfach, du sagst im OI, dass das Bild in der Ressource als BITMAP liegen soll und im Quelltext, dass du aus der Ressource etwas vom Typ RT_RCDATA holen willst. Beide Sachen haben doch erst einmal nichts miteinander zu tun. |
AW: Mit Firemonkey Bild aus Ressource laden
Zitat:
Zitat:
![]() |
AW: Mit Firemonkey Bild aus Ressource laden
Hast recht, das war die Lösung. Ich konnte nur leider nicht riechen, dass es das nochmal als Einstellung gibt.^^
|
AW: Mit Firemonkey Bild aus Ressource laden
Zitat:
Scheinbar funktioniert es nur, wenn es in der DPR drin steht und Delphi das dann auch in die Projektverwaltung (aktuell DPROJ) übernommen hatte, dann wird da beim Inline-Compilieren auch der Resourcen-Compiler angeschmissen und die RES aus der RC neu kompiliert. |
AW: Mit Firemonkey Bild aus Ressource laden
Es funktioniert auch wenn es nicht in der DPROJ steht. Dann muss die .res aber einmalig durch einen Aufruf von brcc32 manuell erstellt werden. Danach wird die .res dann immer automatisch aktualisiert.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 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