Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objekt.Methode(Parameter).Methode... <- wie baut man sowas (https://www.delphipraxis.net/25744-objekt-methode-parameter-methode-wie-baut-man-sowas.html)

Morfio 11. Jul 2004 19:37


Objekt.Methode(Parameter).Methode... <- wie baut man sowa
 
Hi,

man sieht ja häufig solche Konstruktionen:

Delphi-Quellcode:
Label1.Font.Color := clRed
oder

Delphi-Quellcode:
Objekt.Methode(Ein_Parameter_oder_mehr).NochEineMethode.usw
Wie wird sowas programmiert? Sind das Objekte, die direkt in den Klassen deklariert werden? Aber wo werden dann Parameter gespeichert?

Vielen Dank,

Morfio ...

mirage228 11. Jul 2004 19:39

Re: Objekt.Methode(Parameter).Methode... <- wie baut man
 
Zitat:

Zitat von Morfio
Hi,

man sieht ja häufig solche Konstruktionen:

Delphi-Quellcode:
Label1.Font.Color := clRed
oder

Delphi-Quellcode:
Objekt.Methode(Ein_Parameter_oder_mehr).NochEineMethode.usw
Wie wird sowas programmiert? Sind das Objekte, die direkt in den Klassen deklariert werden? Aber wo werden dann Parameter gespeichert?

Vielen Dank,

Morfio ...

Bei ersterem handelt es sich um eine sog. property (Eigenschaft), das Setzen des Wertes (der Zuweis an Color) wird von einem Setter übernommen, der Lesezugriff von einem sog. Getter. Mehr Informationen darüber findest du in der Delphi-Hilfe.

Zu "Objekt.Methode(Ein_Parameter_oder_mehr).":
"Methode" gibt hier anscheinend ein Objekt zurück, dass dann über die Methode "NochEineMethode" angesprochen wird.

mfG
mirage228

Morfio 11. Jul 2004 19:47

Re: Objekt.Methode(Parameter).Methode... <- wie baut man
 
Hi,

ne, das wir mir auch klar. Die Frage, die ich mir stelle ist, wie man solche Konstrukte selber bauen kann in eigenen Klassen, da sie von der Bedienung her relativ praktisch sind.

Morfio ...

mirage228 11. Jul 2004 19:53

Re: Objekt.Methode(Parameter).Methode... <- wie baut man
 
Zitat:

Zitat von Morfio
Hi,

ne, das wir mir auch klar. Die Frage, die ich mir stelle ist, wie man solche Konstrukte selber bauen kann in eigenen Klassen, da sie von der Bedienung her relativ praktisch sind.

Morfio ...

Hi,

das sehe jeweils so aus

Delphi-Quellcode:
type
  TTest = class(TObject)
  private
    function GetVal: Integer;
    procedure SetVal(Val: Integer)
  public
    property Val: Integer read GetVal write SetVal;
Nun, das ist in etwas selbe, wie mit Label.Font.Color. Damit kannst du ganz einfach den Lese/Schreibzugriff kontrollieren. Ist eigentlich ganz praktisch.

Das Zweite ginge in etwa so.
Delphi-Quellcode:
type
  TAClass = class(TObject)
  public
    procedure EineMethode;
  end;

type
  TBClass = class(TObject)
  private
    FClass: TAClass;
    FClass2: TAClass;
    // Eins von den beiden wird je nach "Parameter" übergeben
    // Du könntest in "Methode" auch eine neue Instanz erzeugen,
    // aber das kann eventuell zu Speicherlöchern führen, wenn diese Objekte nicht mehr freigegeben werden...
  public
    function Methode(Parameter: Integer): TAClass;
end;
mfG
mirage228

Morfio 11. Jul 2004 19:55

Re: Objekt.Methode(Parameter).Methode... <- wie baut man
 
Ah,

das zweite Beispiel bringt mich schon weiter. Ich werde damit mal was herumexperimentieren. Vielen Dank.

Morfio ...

Chewie 11. Jul 2004 19:55

Re: Objekt.Methode(Parameter).Methode... <- wie baut man
 
Du definierst und deklarierst die Klassen wie gehabt, aber als Objektfeld bzw. -property nimmst du ein Objekt einer anderen Klasse.

Also so z.B.:

Delphi-Quellcode:
type
  TMyClass = class
  public
    procedure DoSomething;
  end;

  TYourClass = class
  private
    FMyClass: TMyClass;
  public
    constructor Create;
    destructor Destroy; override;
    property MyClass: TMyClass read FMyClass;
  end;

//[...]
constructor TYourClass.Create;
begin
  FMyClass := TMyClass.Create;
end;

destructor TYourClass.Destroy;
begin
  FMyClass.Free;
end;

//[...]

var
  yc: TYourClass;
begin
  yc := TYourClass.Create;
  yc.MyClass.DoSomethin;
  yc.Free;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 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