Einzelnen Beitrag anzeigen

Alallart

Registriert seit: 8. Dez 2015
153 Beiträge
 
#7

AW: Was mache ich falsch? Es wird die falsche Eigenschaft aufgerufen

  Alt 19. Jan 2023, 16:04
Ich habe den Tipp von Gausi umgesetzt, der Code sieht nun so aus (bzw. die Erweiterung):

Delphi-Quellcode:
type
  TTest = class
    FBmp: TBitmap;
    FIndex: Integer;
    function GetBmp: TBitmap;
    procedure SetTransparent(Value: Boolean); //<<<<<<< neu dazugekommen
  public
    constructor Create;
    destructor Destroy; override;
    property Transparent: Boolean write SetTransparent;
    property Bmp: TBitmap read GetBmp;
  end;

implementation

{$R *.dfm}

//...

procedure TTest.SetTransparent(Value: Boolean); //<<<<<<< neu dazugekommen
begin
  FBmp.Transparent := Value;
end;
Es funktioniert. GetBmp wird so nicht aufgerufen, womit das Problem gelöst scheint.

Trotzdem gefällt mir der Weg nicht. Ich empfinde das nicht als elegant. Ich verstehe auch was jaenicke sagt: "Ein Getter sollte auch nur als Getter fungieren", aber wenn da eine Eigenschaft ist, die Bitmap ausgibt, dann besteht immer die Gefahr, dass einer so zugreift wie ich. Ich dachte, dass read ausreicht, damit das nicht passiert. Ich denke ich muss noch etwas nachdenken wie ich es anders löse.
  Mit Zitat antworten Zitat