AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Propertys zusammenfassen

Ein Thema von snow · begonnen am 10. Feb 2008 · letzter Beitrag vom 10. Feb 2008
Antwort Antwort
Seite 2 von 3     12 3      
Muetze1
(Gast)

n/a Beiträge
 
#11

Re: Propertys zusammenfassen

  Alt 10. Feb 2008, 17:27
1. Anlegen vor dem inherited braucht nicht sein, macht hier keinen Unterschied.
2. Ableiten von TPersistent (wurde hier schon erwähnt)
3. Assign() überschreiben und implementieren (Pflicht).
4. Diese Klasse über eine Property veröffentlichen und beim Setter nur Assign(Value) aufrufen.
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Propertys zusammenfassen

  Alt 10. Feb 2008, 17:29
Zitat von Muetze1:
1. Anlegen vor dem inherited braucht nicht sein, macht hier keinen Unterschied.
...
Kennst Du den Rest der Klasse?
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#13

Re: Propertys zusammenfassen

  Alt 10. Feb 2008, 17:33
Zitat von Kroko1999:
Zitat von Muetze1:
1. Anlegen vor dem inherited braucht nicht sein, macht hier keinen Unterschied.
...
Kennst Du den Rest der Klasse?
Mir fällt keine Konstellation ein, wo dies nötig wird. Ausnahme: schlechter Stil
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#14

Re: Propertys zusammenfassen

  Alt 10. Feb 2008, 17:34
Zitat:
. Assign() überschreiben und implementieren (Pflicht).
4. Diese Klasse über eine Property veröffentlichen und beim Setter nur Assign(Value) aufrufen.
ich habs mitlerweile hinbekommen aber:

Wie kann ich nun auf änderungen der farben eingehen ohne für jede farbe eine eigene Set...(value : TColor) procedure zu schreiben.

ich hab probiert auf das ändern der Property zu reagieren aber leider ändert sich die nicht, wenn sich die farbe ändert.

Dieses Assign was genau bewirkt dass?

gruß snow
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Propertys zusammenfassen

  Alt 10. Feb 2008, 17:35
ansonsten würde ich bei vielen Properties vom gleichen Typ folgendes Konstrukt bevorzugen
Delphi-Quellcode:
TMyClass = class
  private
    FData: array[0..5] of TColor;
    function GetData(const AIndex: Integer): TColor;
    procedure SetData(const AIndex: Integer; const Value: TColor);
  published
    property colColor1: TColor Index 0 read GetData write SetData;
    property colColor2: TColor Index 1 read GetData write SetData;
Man kommt mit einer Get/Set-Proc. aus, kann die Daten auf einen Schlag kopieren, per Schleife sichern und wiederherstellen,
ist nur ein Vorschlag!
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Propertys zusammenfassen

  Alt 10. Feb 2008, 17:37
Und das geht im OI? Ohne Property-Editor?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#17

Re: Propertys zusammenfassen

  Alt 10. Feb 2008, 17:38
>> Änderungen werden nicht übernommen:

Du kannst jeweils in deiner Unterklasse einen Setter schreiben und der kann dann (wenn nötig, also die geänderte Farbe sichtbar ist) das neuzeichnen der Oberkomponente auslösen.

>> Viele Setter

Du kannst für viele Properties gleichen Typs einen einzigen Setter und auch Getter nutzen. Schau dir dazu mal das Schlüsselwort Delphi-Referenz durchsuchenIndex bei den Properties in der Hilfe an. Kroko1999 hat dir schon ein Beispiel getippt. Mit einer Case-Mehrfachverzweigung im Setter kannst du es auch mit unterschiedlichen TColor Membern machen. Beim Getter kannst du dann direkt den jeweiligen Member angeben.

>> Was soll Assign()

Dort übernimmst du alle Werte von der übergebenen Unterkomponenteninstanz, wenn diese angegeben wird. Der Objektinspektor benutzt diese Methode u.a. wenn du mehrere gleiche Objekte markierst und mit Enter die Eigenschaften von einer auf viele übernehmen willst.

>> Das geht ohne Property Editor

Ja, ohne Probleme. TPersistent bringt dazu alles nötige mit und wird unterstützt. Man muss (neben TPersistent als Basis und Assign() überschreiben) nicht viel dazu implementieren.

Wir reden hier aber von den aufklappbaren Unterpunkten. Einen Propertyeditor brauchst du z.B. wenn du eine Listenklasse veröffentlichst, dann hast du schlecht eine Chance ohne Property Editor auszukommen, da du nicht abhängig von den Einträgen Properties definieren kannst.
  Mit Zitat antworten Zitat
Benutzerbild von Kroko1999
Kroko1999

Registriert seit: 21. Apr 2005
Ort: Spremberg
455 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: Propertys zusammenfassen

  Alt 10. Feb 2008, 17:38
Zitat von Muetze1:
Zitat von Kroko1999:
Zitat von Muetze1:
1. Anlegen vor dem inherited braucht nicht sein, macht hier keinen Unterschied.
...
Kennst Du den Rest der Klasse?
Mir fällt keine Konstellation ein, wo dies nötig wird. Ausnahme: schlechter Stil

Mir fallen viele Dinge ein, ohne das man von schlechten Stil sprechen kann, zBsp. eine Klasse in einer Klasse, die im Konstruktor des Parentteil bestimmte Dinge setzt, aber in der letztendlichen Klasse von einer Grundklasse abgeleitet wurde, usw. usf.
Da sprach der Stumme zum Blinden: "Du wirst sehen ..."
oder
Wer lesen kann, ist klar im Vorteil!
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#19

Re: Propertys zusammenfassen

  Alt 10. Feb 2008, 17:43
Zitat von Kroko1999:
Mir fallen viele Dinge ein, ohne das man von schlechten Stil sprechen kann, zBsp. eine Klasse in einer Klasse, die im Konstruktor des Parentteil bestimmte Dinge setzt, aber in der letztendlichen Klasse von einer Grundklasse abgeleitet wurde, usw. usf.
Dann bekommt die Unterklasse im Konstruktor die Hauptklasse mitgegeben. Auf die kann sie sich beziehen und man hat keine Probleme. Die Hauptklasse befindet sich zu dem Zeitpunkt im Constructor und somit kann sie Self mitgeben. Damit ist alles oben beschrieben möglich. Durch die Ableitung kann man sogar mit einer unspezifizierten Basisklasse als Constructor Parameter arbeiten.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#20

Re: Propertys zusammenfassen

  Alt 10. Feb 2008, 18:07
Hallo,
ich verwende für "Subproperties" folgende Standartvorlage
Delphi-Quellcode:
  TMyPersistent = class(TPersistent)
  private
    FColor : TColor;
    FOnChange : TNotifyEvent;
    procedure SetColor(Value : TColor);
  protected
    procedure DoChange; virtual;
  public
    constructor Create;
    destructor Destroy; override;
    procedure Assign(Source : TPersistent); override;
    property OnChange : TNotifyEvent read FOnChange write SetOnChange;
  published
    property Color : TColor read FColor write SetColor;
  end;


procedure TMyPersistent .SetColor(Value : TColor);
begin
  If FColor<>Value then
    begin
    FColor:=Value;
    DoChange;
    end;
end;


procedure TMyPersistent .DoChange;
begin
  If Assigned(FOnChange) then
    FOnChange(Self);
end;

procedure TMyPersistent.Assign(Source : TPersistent); override;
begin
  If Source is TMyPersistent then
    begin
    FColor:=TMyPersistent(Source).Color;
    end;
  inherited Assign(Source);
end;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:45 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