![]() |
TImage Ableitung: Picture property
Ich muss ein TImage abwandeln und dabei auf Änderung des Properties "Picture" reagieren können.
Sprich falls das Picture geändert wird, soll zusätzlich noch eine Prozedur aufgerufen werden, in der weiterer Code ausgeführt wird. Weiß wer wie das zu bewerkstelligen ist? |
Re: TImage Ableitung: Picture property
Überlade den Setter
|
Re: TImage Ableitung: Picture property
ok, das ist klar, aber wie ist die korrekte Deklaration dafür?
(Eigentlich reicht es mir auch Picture.Bitmap abzufangen) |
Re: TImage Ableitung: Picture property
Zitat:
![]() Zitat:
|
Re: TImage Ableitung: Picture property
Werde daraus noch immer nicht schlau...
Timage.Picture ist folgendermaßen deklariert:
Delphi-Quellcode:
Muss ich "FPicture" auch anlegen, wenn ich eigentlich nur die "write" Methode ändern möchte?
published property Picture: TPicture read FPicture write SetPicture;
|
Re: TImage Ableitung: Picture property
Zitat:
Delphi-Quellcode:
Edit: Über inherited kannst du auf Eigenschaften und Methoden der Vorfahrenklasse zugreifen
type
TMyImage = class(TImage) protected function GetPicture:TPicture; procedure SetPicture(Value: TPicture); published property Picture: TPicture read GetPicture write SetPicture; end; ... ... function TMyImage.GetPicture:TPicture; begin Result := inherited Picture; //u. U. mit .Assign() end; procedure TMyImage.SetPicture(Value: TPicture); begin //mach irgendwas besonderes inherited Picture := Value; end; |
Re: TImage Ableitung: Picture property
perfekt, danke!!
|
Re: TImage Ableitung: Picture property
Noch eine Frage:
Kann man das selbe auch irgendwie direkt für Timage.Picture.Bitmap machen? |
Re: TImage Ableitung: Picture property
Zitat:
Zitat:
|
Re: TImage Ableitung: Picture property
Man sollte eigentlich keine VCL Controls nur deshalb ableiten, um "Businesslogik" der eigenen Anwendung dort unterzubringen.
Jede Ableitung von VCL Controls bringt nur später Probleme mit sich. (z.B. wenn man den Sourcecode weitergeben möchte) Wenn man völlige neue Funktionalitäten bereitstellen möchte, die man im Prinzip in jeder Anwendung gebrauchen könnte, dann ist das Ableiten und erstellen neuer Controls bzw. Komponenten natürlich erlaubt. Der richtige Weg wäre eine eigene Klasse, die das alleinige Recht hat auf dem Image etwas zu zeichen. Jeder, der etwas auf dem Image zeichnen möchte, macht das nicht direkt, sondern "sagt" das dieser neuen Klasse. Diese Klasse könnte z.B. folgende Methoden haben:
Delphi-Quellcode:
Wenn man jetzt auf dem Image etwas zeichnen möchte, ruft man BeginPaint() auf, zeichnet was man möchte und ruft zum Schluss EndPaint auf.
TMyImageProxy = class(TObject)
private FImage : TImage; ... protected procedure ZusaetzlicheArbeitAmBild; public function BeginPaint:TCanvas; procedure EndPaint; procedure SetPicture(APicture:TPicture); property Image:TImage read FImage write SetImage; end; Die Methode EndPaint() ruft dann noch ZusaetzlicheArbeitAmBild() auf. Du wirst sehen, dass diese zusätzliche Klasse deine Programmlogik viel besser abbilden und kanalisieren kann, als das durch Ableiten von TImage möglich wäre. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 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-2025 by Thomas Breitkreuz