![]() |
property Tbitmap
Hallo!
Also... Ich hab eine Klasse (keine Komponente, habs trotzdem mal hier reingestellt weils denk ich das gleiche Problem bei einer Komponente gibt), die eine Eigenschaft Image vom Typ TBitmap hat. Also etwa so:
Delphi-Quellcode:
Wie zu sehen ist, hab ich zu Testzwecken in der SetImage-Methode ein ShowMessage eingebaut. Weise ich nun ein Bild mit
type TTest = class(TObject)
private FImage: TBitmap; procedure SetImage(const ABitmap: TBitmap); public constructor Create; destructor Destroy; override; property Image: TBitmap read FImage write SetImage; end; implementation constructor TTest.Create; begin inherited Create; FImage := TBitmap.Create; end; destructor TTest.Destroy; begin FreeAndNil(FImage); inherited Destroy; end; procedure TTest.SetImage(const ABitmap: TBitmap); begin FImage.Assign(ABitmap); ShowMessage('ausgelöst'); end;
Delphi-Quellcode:
zu, so wird mir die auch brav angezeigt.
Test.Image := Bitmap;
Wenn ich aber folgendes mache
Delphi-Quellcode:
dann wird Image verändert, ohne dass ich Kontrolle darüber habe, SetImage wird nicht aufgerufen. Wichtig wird das, wenn ich später auf bestimmte Sachen beim Zuweisen des Bildes achten muss.
Test.Image.LoadFromFile('C:\test.bmp');
Jemand ne Idee wie ich in solchen Fällen die Kontrolle behalten/ das Problem umgehen kann? Gruß, Sebastian |
Re: property Tbitmap
Meine Idee zu dem Thema:
Delphi-Quellcode:
Damit bekommt man dann mit, ob sich was an FImage geändert hat. Ne andere Idee hätte ich sonst auch erstmal nicht.
type TTest = class(TObject)
private FImage: TBitmap; protected procedure BitmapChanged(Sender: TObject); procedure SetImage(const ABitmap: TBitmap); public constructor Create; destructor Destroy; override; property Image: TBitmap read FImage write SetImage; end; var Form1: TForm1; Test: TTest; implementation {$R *.dfm} constructor TTest.Create; begin inherited Create; FImage := TBitmap.Create; FImage.OnChange := BitmapChanged; end; destructor TTest.Destroy; begin FreeAndNil(FImage); inherited Destroy; end; procedure TTest.BitmapChanged(Sender: TObject); begin ShowMessage('ausgelöst'); end; procedure TTest.SetImage(const ABitmap: TBitmap); begin FImage.Assign(ABitmap); ShowMessage('ausgelöst'); end; Gruß Wormid |
Re: property Tbitmap
Hallo Wormid!
Danke für die Idee, ich habs jetzt erstmal so gemacht! Ich dachte nur, die write Methode wäre dazu da, Kontrolle über den zu setzenden Wert zu haben. Aber was solls, so gehts ja auch :mrgreen: Gruß, Sebastian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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