Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   FMX komponete & Resourcen (https://www.delphipraxis.net/184918-fmx-komponete-resourcen.html)

Rynardald 30. Apr 2015 10:08

FMX komponete & Resourcen
 
In meinem FMX-Projekt möchte ich einige kleine Bitmaps als Ressource speichern, um sie nicht immer separat neben meiner .exe zu speichern.
Diese Bitmap's habe habe ich über 'Project -> Ressourcen und Bilder' dem Package hinzugefügt und sie liegen auch in der '.dres'-Datei.
Jedoch immer wenn ich versuche diese Ressource zu laden erhalte ich die Fehlermeldung das diese Ressource nicht vorhanden ist.

In dieser Zeile erhalte ich immer die Fehlermeldung:
Delphi-Quellcode:
LResourceStream := TResourceStream.Create(FindClassHInstance(TPmFmxTitelbar), 'ImgOptions', RT_RCDATA);

Mavarik 30. Apr 2015 10:10

AW: FMX komponete & Resourcen
 
Zitat:

Zitat von Rynardald (Beitrag 1299800)
Delphi-Quellcode:
FindClassHInstance(TPmFmxTitelbar)

Wo für das?

Also ich mach das so:

Delphi-Quellcode:
{$R CheckBox.res CheckBox.RC }

Procedure LoadGlobalBild(FImage:TImage;ResName:String);
var
  RS : TResourceStream;
begin
  FImage.MultiResBitmap.Clear;

  if DDTGetScreenScale < 1.5
    then begin
           RS := TResourceStream.Create(HInstance,ResName+'1',RT_RCDATA);
           FImage.MultiResBitmap.LoadItemFromStream(RS,1.0);
           FreeAndNil(RS);
         end
    else begin
           if DDTGetScreenScale < 2.0
             then begin
                    RS := TResourceStream.Create(HInstance,ResName+'15',RT_RCDATA);
                    FImage.MultiResBitmap.LoadItemFromStream(RS,1.5);
                    FreeAndNil(RS);
                  end
             else begin
                    RS := TResourceStream.Create(HInstance,ResName+'2',RT_RCDATA);
                    FImage.MultiResBitmap.LoadItemFromStream(RS,2.0);
                    FreeAndNil(RS);
                  end;
        end;
end;
Und die Checkbox.RC sieht so aus:

Code:
Check1 RCDATA "ICONS\Checkklein.png"
Check15 RCDATA "ICONS\Checkmittel.png"
Check2 RCDATA "ICONS\Check.png"
UnCheck1 RCDATA "ICONS\Uncheckklein.png"
UnCheck15 RCDATA "ICONS\UncheckMittel.png"
UnCheck2 RCDATA "ICONS\Uncheck2.png"

Rynardald 30. Apr 2015 10:32

AW: FMX komponete & Resourcen
 
Ich nutze
Delphi-Quellcode:
FindClassHInstance(TPmFmxTitelbar)
weil die Ressourcen in einer Komponente liegen und nicht in meinem Hauptprojekt und da muss ich das Handle von meiner Komponente nehmen, wenn ich Stackoverflow (how-to-add-and-use-a-resource-from-a-custom-package-component-in-delphi) richtig verstanden habe.

Mavarik 30. Apr 2015 10:38

AW: FMX komponete & Resourcen
 
Zitat:

Zitat von Rynardald (Beitrag 1299804)
Ich nutze
Delphi-Quellcode:
FindClassHInstance(TPmFmxTitelbar)
weil die Ressourcen in einer Komponente liegen und nicht in meinem Hauptprojekt und da muss ich das Handle von meiner Komponente nehmen, wenn ich Stackoverflow (how-to-add-and-use-a-resource-from-a-custom-package-component-in-delphi) richtig verstanden habe.

Also ich lese daraus das alle 4 versuche nicht funktioniert haben...

DeddyH 30. Apr 2015 10:41

AW: FMX komponete & Resourcen
 
Dann hast Du wohl nicht gründlich genug gelesen.
Zitat:

I had to add the .res file of my package to the package's .dpr just after the {$R *.res} line. Like this:

Delphi-Quellcode:
{$R *.res}
{$R 'my_pacakge.res'}
Also, I had to include the my_package.rc file to my project, so the resources would get compiled to the .res after each build. That did the trick, I guess.
Zitat:

You need to use FindClassHInstance(), specifying your component's class type, instead of using the global HInstance variable or GetModuleHandle(). That way, you obtain the correct module handle regardless of whether the package gets statically linked or dynamically linked into the main executable.

Mavarik 30. Apr 2015 10:45

AW: FMX komponete & Resourcen
 
Zitat:

Zitat von DeddyH (Beitrag 1299807)
Dann hast Du wohl nicht gründlich genug gelesen.

Schon aber das setzt voraus Du hast den *.res File...

Rynardald 30. Apr 2015 10:55

AW: FMX komponete & Resourcen
 
das problem hierbei ist das die Ressourcen die ich brauch nur in der .dres stehen und nicht in der .res.
Und eine .rc-Datei habe ich gar nicht (die ist doch nur notwendig wenn ich die ressourcen manuel hinzufügen muss, die IDE überspringt doch diesen schritt?)

Mavarik 30. Apr 2015 11:42

AW: FMX komponete & Resourcen
 
Zitat:

Zitat von Rynardald (Beitrag 1299800)
In meinem FMX-Projekt möchte ich einige kleine Bitmaps als Ressource speichern, um sie nicht immer separat neben meiner .exe zu speichern.

Das war doch die Frage, oder?

Dann mach dir eine RC Datei... Daraus macht die IDE die die *.res Datei fertig...

Oder mach es per Hand mit Binobj...

Rynardald 30. Apr 2015 13:03

AW: FMX komponete & Resourcen
 
Ok, die Frage hat sich erledigt. Ich hab die .dres-Datei in die Unit noch eingebunden mit
Delphi-Quellcode:
{$R PackageName.dres}
. Danach hat alles funktioniert. Ich dachte wenn die dres-Datei in der dpk-eingebunden ist würde das reichen. Aber dem ist anscheinend nicht so.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:11 Uhr.

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