AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Bild aus Ressource laden - DesignTime geht, Laufzeit nicht
Thema durchsuchen
Ansicht
Themen-Optionen

Bild aus Ressource laden - DesignTime geht, Laufzeit nicht

Ein Thema von DGS · begonnen am 2. Dez 2007 · letzter Beitrag vom 2. Dez 2007
Antwort Antwort
DGS

Registriert seit: 10. Jul 2004
65 Beiträge
 
Delphi 6 Enterprise
 
#1

Bild aus Ressource laden - DesignTime geht, Laufzeit nicht

  Alt 2. Dez 2007, 12:13
Problem vergleichbar mit dem hier:
http://www.delphipraxis.net/internal...t.php?t=111569

Jedenfalls kurze Fehlerbeschreibung:
Ich hab ne eigene Kompo erstellt, die von tImage erbt und ein defaultbild laden sollte. Zur Designtime klappt es auch wunderbar. Aber beim start tritt ne Exception auf. Bin da echt überfragt.


Meine Kompo:
Ich erbe von timage.

Im OnCreate der Kompo hab ich:
picture.Bitmap.LoadFromResourceName(HInstance, 'HINTERGRUND'); In der DPK der Kompo ist diese Ressource auch eingebunden mit
{$R 'KompoName.dcr'}

Nun hab ich halt zu Testzwecken sauberes Projekt erstellt und platziere Kompo auf der Form.
Passt alles wunderbar. promt wird die Hintergrundgrafik geladen, wie erwünscht.
Sobald ich starte, kriege ich folgende Meldung:

Zitat:
Im Projekt Project1.exe ist eine Exception der Klasse EResNotFound aufgetreten. Meldung: 'Ressource HINTERGRUND wurde nicht gefunden'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
Danach verabschiedet sich das Programm.


Was ich haben wollte:
in meine Kompo ( Erbe von tImage ) eine default bitmap zu haben. Die darf dann zur DesignTime oder Laufzeit natürlich geändert werden.

Über denkanstösse jeglicher Art bin ich dankbar.
Vorschläge für sinnvolle Signatur bitter per PN
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#2

Re: Bild aus Ressource laden - DesignTime geht, Laufzeit nic

  Alt 2. Dez 2007, 13:07
Also ich habe das jetzt ma eben schnell zusammen geklatscht und getestet. bei mir klappt es problemlos (design+runtime)

MyImage.pas:
Delphi-Quellcode:
unit MyImage;

interface

uses
  SysUtils, Classes, Controls, ExtCtrls;

type
  TMyImage = class(TImage)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner: TComponent); override;
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

{$R MyImage.res}

procedure Register;
begin
  RegisterComponents('Samples', [TMyImage]);
end;

constructor TMyImage.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  self.Picture.Bitmap.LoadFromResourceName(hInstance, 'DEFAULT_IMAGE');
end;

end.
MyImage.rc:
DEFAULT_IMAGE BITMAP "MyImage.bmp"
MyImage.pas erstellt, MyImage.rc erstellt, brcc32 MyImage.rc und danach dann die komponente über die ide installiert.
kann sie problemlos verwenden.
  Mit Zitat antworten Zitat
DGS

Registriert seit: 10. Jul 2004
65 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Bild aus Ressource laden - DesignTime geht, Laufzeit nic

  Alt 2. Dez 2007, 13:27
Hab jetzt genauso gemacht wie du gesagt hattest.

Und... es KLAPPT!
Vielen Dank!

Nur frag ich mich, wieso es ned gleich geklappt hat :/
Vorschläge für sinnvolle Signatur bitter per PN
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#4

Re: Bild aus Ressource laden - DesignTime geht, Laufzeit nic

  Alt 2. Dez 2007, 14:41
poste doch ma deinen source. dann können wir uns das ja ma angucken
  Mit Zitat antworten Zitat
DGS

Registriert seit: 10. Jul 2004
65 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Bild aus Ressource laden - DesignTime geht, Laufzeit nic

  Alt 2. Dez 2007, 14:51
Ich poste mal den konstructor. Hab da noch "paar" properties und Events, die aber keinen Einfluss haben dürften:

Delphi-Quellcode:
constructor tDGSpainter.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  // TODO: Create
  Height := 43;
  Width := 160;

  picture.Bitmap.LoadFromResourceName(HInstance, 'HINTERGRUND');

  if not ( csDesigning In ComponentState ) then
    if fAutoCon then
      start;

end;
Die ressource hab ich mit dem Bild Editor von Delphi in die Datei "DGSpainter.dcr" gepackt, wo auch das Icon für die Kompo drin war.
Ressource eingebunden im Package (dpk).

Wie gesagt, zur DesignTime hat alles bestens funktioniert.

Der Code ist derselbe wie deiner. Nur hab ich jetzt diese Bitmap in einer .res Datei, die ich in der DGSpainter.pas direkt einbinde.
Vorschläge für sinnvolle Signatur bitter per PN
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Bild aus Ressource laden - DesignTime geht, Laufzeit nic

  Alt 2. Dez 2007, 14:54
wo hast du folgendes plaziert?
{$R DeineDatei.dcr} bzw.
{$R DeineDatei.res}
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
DGS

Registriert seit: 10. Jul 2004
65 Beiträge
 
Delphi 6 Enterprise
 
#7

Re: Bild aus Ressource laden - DesignTime geht, Laufzeit nic

  Alt 2. Dez 2007, 15:00
In der alten Version nirgens.

Das einbinden der ressource geschah über das Package.
Also in der Delphi Package ( .dpk ) stand halt:
{$R 'DGSpainter.dcr'} Jetzt hab ichs so gemacht wie vorgeschlagen, direkt unter implementation eine .res eingebunden und damit funktionierts wunderbar.

...sollte ich zur Sicherheit im dritten post etwas fetter dazuschreiben, dass problem gelöst ist?
Vorschläge für sinnvolle Signatur bitter per PN
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Bild aus Ressource laden - DesignTime geht, Laufzeit nic

  Alt 2. Dez 2007, 15:03
das dein Problem gelöst ist weiß ich, es ging um die Ergründung warum es bei dir ursprünglich nicht ging damit andere die es genauso machen gelöst bekommen und die Ursache finden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  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 03:09 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