![]() |
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:
Was muss ich tun, damit das Bild direkt angezeigt wird, ohne diesen Aufruf?
ImagePanel1.Picture := ImagePanel1.Picture;
|
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 |
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: . |
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:
oder
ImagePanel1.Picture := ImagePanel1.Picture;
Delphi-Quellcode:
ImagePanel1.Picture := Image1.Picture;
|
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 |
Re: Bild wird bei eigener Komponente im Image nicht angezeig
Also hier ist mal der Code:
Delphi-Quellcode:
Was muss ich ändern, damit das Problem verschwindet?
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. |
Re: Bild wird bei eigener Komponente im Image nicht angezeig
Kann mir hier wirklich niemand helfen? :cry:
|
Re: Bild wird bei eigener Komponente im Image nicht angezeig
Ich denke, Du solltest die Loaded-Methode überschreiben und dort das Image neu zeichnen.
|
Re: Bild wird bei eigener Komponente im Image nicht angezeig
Moin TheMaster,
such' hier mal nach ![]() In dieser Methode müsstest Du den Parent des Images zuweisen. Dann sollte es funktionieren. |
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