Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Resourcen in Komponente... (https://www.delphipraxis.net/15061-resourcen-komponente.html)

FriFra 21. Jan 2004 13:20


Resourcen in Komponente...
 
Ich habe eine Resource in eine Komponente eingebunden, bekomme aber beim erzeugen eines Objektes immer eine Fehlermeldung, dass die bettr. Resource nicht vorhanden sei.

Wo könnte der Fehler sein? Die Resource ist jedenfalls definitiv vorhanen!
Delphi-Quellcode:
unit Fr_LocalMailListView;

interface

uses
  SysUtils, Classes, Controls, ComCtrls, Graphics, Windows, Fr_LocalMail;

type
  TFr_LocalMailListView = class(TListView)
  private
    { Private-Deklarationen }

    ...

  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published-Deklarationen }

    ...

  end;

procedure Register;

implementation

  {$R res/ImageList.res}

procedure Register;
begin
  RegisterComponents('FriFra', [TFr_LocalMailListView]);
end;

constructor TFr_LocalMailListView.Create(AOwner: TComponent);
var
  RS: TResourceStream;
  bmp: Graphics.TBitmap;
  n: integer;
begin
  inherited;
  RS := nil;
  LocalMail := TFr_LocalMail.Create(nil);
  SmallIcons := TImageList.CreateSize(16, 16);
  LargeIcons := TImageList.CreateSize(32, 32);
  bmp := Graphics.TBitmap.Create;
  try
    for n := 0 to 6 do
    begin
      try
        RS := TResourceStream.Create(0, 'Large' + IntToStr(n), RT_RCDATA);
        RS.Position := 0;
        bmp.LoadFromStream(RS);
        LargeIcons.AddMasked(bmp, clFuchsia);
      finally
        RS.Free;
      end;
      try
        RS := TResourceStream.Create(0, 'Small' + IntToStr(n), RT_RCDATA);
        RS.Position := 0;
        bmp.LoadFromStream(RS);
        SmallIcons.AddMasked(bmp, clFuchsia);
      finally
        RS.Free;
      end;
    end;
  finally
    bmp.Free;
  end;
  LargeImages:=LargeIcons;
  SmallImages:=LargeIcons;
  SetDefaults;
end;

destructor TFr_LocalMailListView.Destroy;
begin
  LocalMail.Free;
  SmallIcons.Free;
  LargeIcons.Free;
  inherited;
end;

...

end.
Imagelist.rc
Code:
Large0 RCDATA EU_L.bmp
Large1 RCDATA LN_L.bmp
Large2 RCDATA NS_L.bmp
Large3 RCDATA OP_L.bmp
Large4 RCDATA OL_L.bmp
Large5 RCDATA PG_L.bmp
Large6 RCDATA TB_L.bmp
Small0 RCDATA EU_S.bmp
Small1 RCDATA LN_S.bmp
Small2 RCDATA NS_S.bmp
Small3 RCDATA OP_S.bmp
Small4 RCDATA OL_S.bmp
Small5 RCDATA PG_S.bmp
Small6 RCDATA TB_S.bmp

Robert Marquardt 21. Jan 2004 14:41

Re: Resourcen in Komponente...
 
Den Fehler find ich nicht, aber warum RCDATA? BITMAP sollte es doch tun.

negaH 22. Jan 2004 00:17

Re: Resourcen in Komponente...
 
Eventuell mal folgendes probieren:

Delphi-Quellcode:
  TResourceStream.Create(HInstance, 'Large' + IntToStr(n), RT_RCDATA);
Ich traue der Angabe von NULL als hModule nicht so ganz.
Statt HInstance kannste auch mal MainInstance probieren. Abhänig davon ob die Komponente in einem Package installiert wurde oder ob die Resource in die EXE eingelinkt wurde, muß man sich für HInstance oder MainInstance entscheiden.

Gruß Hagen

FriFra 22. Jan 2004 11:40

Re: Resourcen in Komponente...
 
Danke ;)

HInstance hat geholfen :bouncing4: :dancer2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 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