Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Was passiert beim Ändern einer Eigenschaft eines Objekts? (https://www.delphipraxis.net/103994-passiert-beim-aendern-einer-eigenschaft-eines-objekts.html)

MisterNiceGuy 25. Nov 2007 20:52


Was passiert beim Ändern einer Eigenschaft eines Objekts?
 
Hi, ich habe eine Klasse erstellt die wie folgt aussieht:
Delphi-Quellcode:
type TPanelButton = class
  public
    MyBackground:String;
    ...
  private
    MyPanel:PPanel;
    ...
  procedure setBackground(MyBackground:String);
  ...
  procedure
  constructor Create(Background,Caption,TextFont:String; x,y,Textx,Texty,Layer:integer; visible,overlay,refresh,d3d:boolean; event:PByte);
end;
Änder ich jetzt eine Eigenschaft z.B. MyBackground, wird dann erneut der constructor aufgerufen? Oder tritt ein
anderes Ereignis auf? In Java passiert das ganze ja über Methoden wie z.B. setBackground.

Neutral General 25. Nov 2007 20:55

Re: Was passiert beim Ändern einer Eigenschaft eines Objekts
 
Hi,

Hast du dir schonmal ein OOP/Klassen-Tutorial durchgelesen? Was ist denn das für ein Monster-Konstruktor?
Kennst du Properties? Wenn nicht dann such mal im Forum und im Internet danach ;)

mkinzler 25. Nov 2007 20:56

Re: Was passiert beim Ändern einer Eigenschaft eines Objekts
 
Kommat daruf an, wie es in der klasse deklariert ist. Man kann das private Feld entweder direkt in der Property ansprechen oder wie es hier aussieht über Getter/Setter.

Jelly 25. Nov 2007 20:58

Re: Was passiert beim Ändern einer Eigenschaft eines Objekts
 
Um mal die Bergiffe richtig zu verstehen:
MyBackground ist bei der Definition keine Eigenschaft sondern lediglich ein Feld. Da es im public Teil deklariert ist, kannst du das Feld von aussen ändern.

Eine Eigenschaft hingegen wird über Property, normalerweise auch im public Teil, definiert. Greifst du lesend oder schreibend auf diese Property zu, so werden, wie bei Java, die entsprechenden Getter und Settter Methoden aufgerufen. Da wäre dann z.B. ein SetBackGround möglich.

Jedenfalls wird beim Schreiben einer Eigenschaft oder eines Feldes von aussen KEIN contructor nochmals aufgerufen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr.

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