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 Bild wird bei eigener Komponente im Image nicht angezeigt (https://www.delphipraxis.net/13567-bild-wird-bei-eigener-komponente-im-image-nicht-angezeigt.html)

Dagon 21. Dez 2003 15:03


Bild wird bei eigener Komponente im Image nicht angezeigt
 
Hallo ihr Leute

Ich habe eine Komponente von TPanel abgeleitet (TImagePanel). Die neue Komponente hat ein Image oben drauf. Ich habe es so programmiert, das man das Bild des Images über eine Eigenschaft Picture im OI wählen kann. Das wird dann zur Entwurdfzeit auch angezeigt. Aber sobald ich das Programm ausführe, wird nur das Panel angezeigt, ohne Bild. Erst wenn ich, während dem Laufen des Programms, dem Image ein Bild zu weise, wird eins angezeigt.

Das merkwürdige daran ist, das folgender Aufruf auch ein Anzeigen des Bildes bewirkt:
Delphi-Quellcode:
ImagePanel1.Picture := ImagePanel1.Picture;
Was muss ich tun, damit das Bild direkt angezeigt wird, ohne diesen Aufruf?

Nightshade 21. Dez 2003 15:44

Re: Bild wird bei eigener Komponente im Image nicht angezeig
 
Wahrscheinlich hast du nach dem Zuweisen in deiner komponente vergessen sie neu zeichnen zu lassen ?

Delphi-Quellcode:

procedure TImagePane.SetPic(const Value: TPicture);
begin
  FPic.Assign(Value);
  Paint;
end;
---------------------

Nightshade

Dagon 21. Dez 2003 15:55

Re: Bild wird bei eigener Komponente im Image nicht angezeig
 
Nein, das hat leider nichts damit zu tun :( .

Irgend etwas muss ich falsch gemacht, oder vergessen haben :gruebel: .

Dagon 21. Dez 2003 17:21

Re: Bild wird bei eigener Komponente im Image nicht angezeig
 
Hier gibt es doch bestimmt jemand, der weiss an was das liegt, oder?

Warum wird das Bild nicht auch zur Laufzeit direkt angezwigt, sondern erst wenn ich schreibe
Delphi-Quellcode:
ImagePanel1.Picture := ImagePanel1.Picture;
oder
Delphi-Quellcode:
ImagePanel1.Picture := Image1.Picture;

Nightshade 22. Dez 2003 15:12

Re: Bild wird bei eigener Komponente im Image nicht angezeig
 
Vielleicht zeigst du dann mal ein wenig mehr Code, dann kann man dir vielleicht auch weiterhelfen.....



-------------

Nightshade

Dagon 24. Dez 2003 14:30

Re: Bild wird bei eigener Komponente im Image nicht angezeig
 
Also hier ist mal der Code:

Delphi-Quellcode:
unit ImagePanel;

interface

uses
  SysUtils, Classes, Controls, ExtCtrls, Graphics, Dialogs,
  StdCtrls;

type
  TImagePanel = class(TPanel)
  private
    { Private-Deklarationen }
    FImage: TImage;
    FPicture: TPicture;
    procedure SetPicture(const Value: TPicture);
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(aOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published-Deklarationen }
    property Picture: TPicture read FPicture write SetPicture;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Test', [TImagepanel]);
end;

{ TImagepanel }

constructor TImagepanel.Create(aOwner: TComponent);
begin
  inherited Create (aOwner);
  FPicture := TPicture.Create;
  FImage := TImage.Create(self);
  with FImage do
  begin
    Parent := self;
    Align := alClient;
    Stretch := True;
  end;
end;

destructor TImagePanel.Destroy;
begin
  FreeAndNil(FPicture);
  FreeAndNil(FImage);
  inherited Destroy;
end;

procedure TImagePanel.SetPicture(const Value: TPicture);
begin
  FPicture.Assign(Value);
  FImage.Picture := Value; // ? Ist diese Zeile nötig ?
  Paint;
end;

end.
Was muss ich ändern, damit das Problem verschwindet?

Dagon 26. Dez 2003 11:59

Re: Bild wird bei eigener Komponente im Image nicht angezeig
 
Kann mir hier wirklich niemand helfen? :cry:

Leuselator 26. Dez 2003 12:49

Re: Bild wird bei eigener Komponente im Image nicht angezeig
 
Ich denke, Du solltest die Loaded-Methode überschreiben und dort das Image neu zeichnen.

Christian Seehase 26. Dez 2003 12:50

Re: Bild wird bei eigener Komponente im Image nicht angezeig
 
Moin TheMaster,

such' hier mal nach Hier im Forum suchenCreateWnd.
In dieser Methode müsstest Du den Parent des Images zuweisen. Dann sollte es funktionieren.

Dagon 26. Dez 2003 12:57

Re: Bild wird bei eigener Komponente im Image nicht angezeig
 
Vielen Dank, jetzt funktionierts! :dancer:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:13 Uhr.

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