AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FMX komponete & Resourcen

Ein Thema von Rynardald · begonnen am 30. Apr 2015 · letzter Beitrag vom 30. Apr 2015
Antwort Antwort
Rynardald

Registriert seit: 18. Sep 2014
26 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

FMX komponete & Resourcen

  Alt 30. Apr 2015, 11:08
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:
LResourceStream := TResourceStream.Create(FindClassHInstance(TPmFmxTitelbar), 'ImgOptions', RT_RCDATA);
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: FMX komponete & Resourcen

  Alt 30. Apr 2015, 11:10
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"

Geändert von Mavarik (30. Apr 2015 um 11:14 Uhr)
  Mit Zitat antworten Zitat
Rynardald

Registriert seit: 18. Sep 2014
26 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: FMX komponete & Resourcen

  Alt 30. Apr 2015, 11:32
Ich nutze 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.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: FMX komponete & Resourcen

  Alt 30. Apr 2015, 11:38
Ich nutze 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...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

AW: FMX komponete & Resourcen

  Alt 30. Apr 2015, 11:41
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: FMX komponete & Resourcen

  Alt 30. Apr 2015, 11:45
Dann hast Du wohl nicht gründlich genug gelesen.
Schon aber das setzt voraus Du hast den *.res File...
  Mit Zitat antworten Zitat
Rynardald

Registriert seit: 18. Sep 2014
26 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: FMX komponete & Resourcen

  Alt 30. Apr 2015, 11:55
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?)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.143 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: FMX komponete & Resourcen

  Alt 30. Apr 2015, 12:42
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...
  Mit Zitat antworten Zitat
Rynardald

Registriert seit: 18. Sep 2014
26 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: FMX komponete & Resourcen

  Alt 30. Apr 2015, 14:03
Ok, die Frage hat sich erledigt. Ich hab die .dres-Datei in die Unit noch eingebunden mit {$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.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 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