AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Properties
Thema durchsuchen
Ansicht
Themen-Optionen

Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Properties

Ein Thema von Bjoerk · begonnen am 29. Jul 2014 · letzter Beitrag vom 30. Jul 2014
 
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 14:55
Da du ja die Eigenschaften von mehreren unterschiedliche Objekte zusammenfassen möchtest, brauchst du zunächst etwas, was du vergleichen kannst um gleiche Eigenschaften zusammenzufassen.

Oder anders ausgedrückt, wir benötigen eine Klasse, die eine Eigenschaft darstellen kann (aber nur die Eigenschaft selber, ohne den Wert)
Delphi-Quellcode:
TProperty = class
public
  constructor Create( const PropName : string; PropType : integer );
  function Equals( Obj : TObject ) : Boolean; override;
  function SameValueAs( Other : TProperty ) : Boolean;
published
  property PropName : string read FPropName;
  property PropType : integer read FPropType;
end;

function TProperty.Equals( Obj : TObject ) : Boolean;
begin
  Result := (Self = Obj) or Assigned( Obj ) and ( Self.ClassType = Obj.ClassType ) and SameValueAs( Obj as TProperty );
end;

function TProperty.SameValueAs( Other : Tproperty ) : Boolean;
begin
  Result := (Self = Other) or Assigned( Other ) and SameText( Self.FPropName, Other.FPropName ) and (Self.FPropType = Other.FPropType );
end;
Die nächste Klasse, wäre dann die, wo man auf den Eigenschaftswert zugreifen kann
Delphi-Quellcode:
TPropertyValue = class
public
  constructor Create( Instance : TObject; const PropName : string );
  // True, wenn gleiche Eigenschaft und gleicher Wert
  function Equals( Obj : TObject ) : Boolean; override;
  function SameValueAs( Other : TPropertyValue ) : Boolean;
published
  property Prop : TProperty read FProp;
  property ValueStr : string read GetValueStr write SetValueStr;
end;
Um jetzt ein ganze Instanz zu verwalten benötigen wir eine Klasse, die eine Liste mit den Property-Werten anbietet:
Delphi-Quellcode:
TObjectProperties = class abstract
public
  property Count : Integer read GetCount;
  property PropValue[Index : Integer] : TPropertyValue read GetPropValue;
end;
und diese Klasse benötigen wir für eine Instanz
Delphi-Quellcode:
TSingleObjectProperties = class( TObjectProperties )
public
  constructor Create( Instance : TObject );
end;
und für mehrere
Delphi-Quellcode:
TMultiObjectProperties = class( TObjectProperties )
public
  procedure Add( Object : TSingleObjectProperties );
  procedure Remove( Object : TSingleObjectProperties );
end;
Das ist jetzt alles etwas schematisch, aber das Prinzip sollte jetzt klar geworden sein.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
 


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 16:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz