Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mit Firemonkey Bild aus Ressource laden (https://www.delphipraxis.net/178603-mit-firemonkey-bild-aus-ressource-laden.html)

Haus117 16. Jan 2014 20:25

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.

Mavarik 16. Jan 2014 23:54

AW: Mit Firemonkey Bild aus Ressource laden
 
Fehler in der RC Datei?

Ich mache es so...
GlobalScale ist der Bildschirmfaktor Retina usw.

Delphi-Quellcode:
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;
Mavarik

Union 17. Jan 2014 06:55

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;

Haus117 17. Jan 2014 11:18

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...

Union 17. Jan 2014 11:53

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.

Mavarik 17. Jan 2014 11:58

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;

hsg 17. Jan 2014 12:22

AW: Mit Firemonkey Bild aus Ressource laden
 
... und ein 'end' vor dem rot unterstrichendem 'else' würde einen weiteren Fehler beseitigen.

Mavarik 17. Jan 2014 12:27

AW: Mit Firemonkey Bild aus Ressource laden
 
Zitat:

Zitat von hsg (Beitrag 1244107)
... und ein 'end' vor dem rot unterstrichendem 'else' würde einen weiteren Fehler beseitigen.

Ich war's nicht...:stupid:

Sir Rufo 17. Jan 2014 12:41

AW: Mit Firemonkey Bild aus Ressource laden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn du dir CnWizards installierst, dann würde dir so ein Fehler sofort auffallen. (Achte mal auf die Linien zwischen dem
Delphi-Quellcode:
begin
und
Delphi-Quellcode:
end
)
Anhang 40553

Haus117 17. Jan 2014 15:30

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:
Procedure Form1.LoadBild(FImage:TImage;ResName:String);
scheint es noch nicht zu sein.

wenn ich die Funktion einfüge fehlt bestimmt noch ne Bibliothek oder Uni oder sowas? denn er unterstreicht mir wieder folgendes:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz