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
Antwort Antwort
Seite 1 von 3  1 23      
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Properties

  Alt 29. Jul 2014, 10:49
Ich hab eine Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Properties. Die published Werte markierter Objekte sollen nun editiert werden können. Die Frage wäre, wie macht man das denn am besten?

Beispielklasse:
Delphi-Quellcode:
  TCadRect = class(TPersistent)
  private
    FP1: TCadFloatPoint;
    FP2: TCadFloatPoint;
    FTyp: TGraphicObjectTyp;
    FPenMMWidth: double;
    FPenColor: TColor;
    FPenStyle: TColor;
    FBrushColor: TColor;
    FBrushStyle: TColor;
    FDesigning: boolean;
    FEnabled: boolean;
    FComment: string;
    FCrossRect: boolean;
    FSnapPoints: TFloatPoints;
    FRegion: TPolygon;
    FProp: TPropBooleanArray;
    FAction: TActionBooleanArray;
    FSelected: boolean;
    FPropertySelected: boolean;
    function GetScale: TScale;
    function GetScalemX1: double;
    function GetScalemY1: double;
    function GetScalemX2: double;
    function GetScalemY2: double;
    function GetAngle: double;
    function GetScalemWidth: double;
    function GetScalemHeight: double;
    function GetProp(Index: TProp): boolean;
    function GetAction(Index: TAction): boolean;
    procedure SetScale(const Value: TScale);
    procedure SetNewScale(const Value: TScale);
    procedure SetScalemX1(const Value: double);
    procedure SetScalemY1(const Value: double);
    procedure SetScalemX2(const Value: double);
    procedure SetScalemY2(const Value: double);
    procedure SetAngle(const Value: double);
    procedure SetScalemWidth(const Value: double);
    procedure SetScalemHeight(const Value: double);
    function ClipRect: TFloatRectEx;
    procedure Flip(const A, B: TFloatPoint);
  public
    function MovePtInRegion(const MovePt: TFloatPoint): boolean;
    function CenterRegionPtInSelectRect(const SelectRect: TFloatRectEx): boolean;
    function Compare(Value: TCadRect): boolean;
    procedure Assign(Value: TCadRect);
    procedure LoadFromFile(Ini: TIniDatei; const Section: string);
    procedure SaveToFile(Ini: TIniDatei; const Section: string);
    procedure Draw(Canvas: TCanvas; const Plot: TPlotDevice);
    procedure DrawRegion(Canvas: TCanvas; const Plot: TPlotDevice);
    procedure SetRegion(const Plot: TPlotDevice);
    procedure SetSnapPoints(SnapPoints: TFloatPoints);
    procedure Rotate(const R: TFloatPoint; const Alpha: double);
    procedure Shift(const ValueX, ValueY, Alpha: double);
    procedure FlipHorz(const Y: double);
    procedure FlipVert(const X: double);
    procedure Duplicate(Value: TCadRect; const Order: TModifyOrder);
    procedure Modify(const Order: TModifyOrder);
    procedure Clear;
    property SnapPoints: TFloatPoints read FSnapPoints;
    property P1: TCadFloatPoint read FP1;
    property P2: TCadFloatPoint read FP2;
    property Typ: TGraphicObjectTyp read FTyp write FTyp;
    property Prop[Index: TProp]: boolean read GetProp;
    property Action[Index: TAction]: boolean read GetAction;
    property Selected: boolean read FSelected;
    property PropertySelected: boolean read FPropertySelected write FPropertySelected;
    constructor Create;
    destructor Destroy; override;
  published
    property PenMMWidth: double read FPenMMWidth write FPenMMWidth;
    property PenColor: TColor read FPenColor write FPenColor;
    property PenStyle: TColor read FPenStyle write FPenStyle;
    property BrushColor: TColor read FBrushColor write FBrushColor;
    property BrushStyle: TColor read FBrushStyle write FBrushStyle;
    property Scale: TScale read GetScale write SetScale;
    property NewScale: TScale write SetNewScale;
    property Designing: boolean read FDesigning write FDesigning;
    property Enabled: boolean read FEnabled write FEnabled;
    property Comment: string read FComment write FComment;
    property CrossRect: boolean read FCrossRect write FCrossRect;
    property ScalemX1: double read GetScalemX1 write SetScalemX1;
    property ScalemY1: double read GetScalemY1 write SetScalemY1;
    property ScalemX2: double read GetScalemX2 write SetScalemX2;
    property ScalemY2: double read GetScalemY2 write SetScalemY2;
    property ScalemWidth: double read GetScalemWidth write SetScalemWidth;
    property ScalemHeight: double read GetScalemHeight write SetScalemHeight;
    property Angle: double read GetAngle write SetAngle;
  end;
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 10:56
Einfachste Möglichkeit wäre, einer der zahllosen ObjektInspector Komponenten, die es so gibt, zu benutzen.
Zum Beispiel TJvInspector aus der JVCL.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 11:05
Und da dürfen dann aber nur die Properties angezeigt werden, die allen aktuell markierten Objekten gemein sind. Es muss also irgendwie eine Schnittmenge gebildet werden.
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
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 11:26
DeddyH, wir hatten schon mal kurz vor ca. einem Jahr darüber im DT gesprochen. Einen OI der alle möglichen Props meiner Objekte anzeigt gibt es schon. Die Frage ist wie krieg ich die aktuellen Werte meiner Liste in die Edits, Comboxen ect. und wie schreib ich die zurück?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 11:50
Du kannst doch nach meinem Dafürhalten nur die Werte tatsächlich anzeigen, die bei allen Objekten gleich sind. Sind sie das nicht, muss das Feld in Deinem OI eben leer bleiben. Trägt der Benutzer nun einen Wert ein, wirst Du wohl mit einer Schleife über die Objekte gehen und diesen Wert zuweisen müssen.
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
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 12:27
Das krieg ich nicht hin? Ernsthaft.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 13:25
Aus der Hüfte geschossen: (ich weiß gerade nicht aus dem Kopf, ob es eine solche Struktur oder Klasse schon gibt, notfalls erstellt man sie eben selbst) wir brauchen den Property-Namen, dessen Typ und dessen Wert in einem Record/einer Klasse. Davon erstellen wir eine Liste und gehen nun die markierten Objekte durch. Das erste Objekt befüllt nun diese Liste, bei jedem weiteren wird geprüft:
- Property aus Liste (mit identischem Typ) vorhanden? Nein -> aus Liste löschen
- Wert der Property entspricht dem aus der Liste? Nein -> Wert löschen

Es wird also ggf. lediglich die Liste ausgedünnt, neue Elemente kommen nicht hinzu. Zum Schluss werden im "OI" nur noch die verbliebenen Properties angezeigt und auch nur die Werte, die "überlebt" haben. Nach Änderung durch den Benutzer wird der Wert wieder in einer Schleife der entsprechenden Property der Objekte zugewiesen.
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
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 14:59
Weiß nicht recht? Wer soll diese Klasse in einem Jahr nochmal verstehen, erweitern, ergänzen, ändern? Kann man vielleicht mit einer IniFile als Schnittstelle was machen? Ich hab echt keine Idee mehr..
Delphi-Quellcode:
[Prop1]
Master = Object1
Slave1 = Object2
Slave2 = Object100
[Prop2]
..
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 15:11
Mir ist ehrlich gesagt nicht klar, wie da nun eine IniFile weiterhelfen soll. Oder aber ich habe das Problem gründlich missverstanden.
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
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#10

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 15:53
Hi,
etwas ähnliches, aber einfacher, habe ich mal mit einer Holzliste gemacht. Da werden Höhe, Breite, Länge usw in jeweiligen Edits angezeigt. Wenn alle Werte der markierten Hölzer -zB die Breite- gleich ist, dann wird der Wert im Edit angezeigt, wenn die Werte unterschiedlich sind, dann ist das Edit-Feld leer. Wenn ins Edit etwas eingetragen wird, dann werden alle markierten Hölzer auf den Wert geändert.
Meinst Du sowas? Ich müßte mal gucken, wie ichs gemacht habe. War aber irgendwas mit Schleifen.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 01: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