René R.Fo. hat folgendes geschrieben : |
| Für jedes Thema eine Frage... |
Deswegen abgetrennt. Bitte in Zukunft beachten!
Karl1997 hat folgendes geschrieben : |
| Ich glaube der Groschen ist gefallen... bei AddObject wird nur etwas übergeben und dazu reicht eine Prozedur. Obwohl das auch eine Eigenschaft ist, aber kein property, das wiederum Eigenschaft bedeutet. Ist noch alles etwas verwirrend. |
Nicht ganz: eine Prozedur eines Objekts ist eine Methode. Eine Eigenschaft ist ein Property ist eine Eigenschaft, das stimmt
Grundsätzlich also: wenn etwas passieren soll, brauchst du eine Methode (
procedure oder
function je nachdem, ob du einen Rückgabewert brauchst). Geht es um Eigenschaften, ist ein Property gefragt.
Wenn du z.B. deine TestKlasse von weiter oben um etwas erweitern möchtest, mit dem sie sich selbst ausgeben kann, dann ist das eine Methode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| type TTestKlasse = class private public procedure InfoPopup; end;
procedure TTestKlasse.InfoPopup; begin ShowMessageFmt('Inhalte: %s, Geschrieben %d mal',[FText, FZugriffe]); end;
var TestKlasse: TTestKlasse;
procedure TForm1.Button1Click(Sender: TObject); begin TestKlasse := TTestKlasse.Create; try TestKlasse.Text := 'Hallo!'; TestKlasse.InfoPopup; TestKlasse.Text := 'Und auf Wiedersehen!'; TestKlasse.InfoPopup; finally TestKlasse.Free; end; end; |
Delphi hat zwar tatsächlich Möglichkeiten, wie man an einen Getter/Setter eines Properties noch zusätzliche Parameter übergeben kann. Aber die sind ganz und gar nicht dafür gedacht, Methoden zu ersetzten, sondern machen z.B. Sachen wie zeilenweisen Zugriff auf eine TStringList über die Eigenschaft Items oder TCanvas.Pixels möglich.
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."