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

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 2  1 2   
Benutzerbild von Stevie
Stevie

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

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 09: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.667 Beiträge
 
Delphi 12 Athens
 
#2

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 10: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
 
#3

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 10: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.667 Beiträge
 
Delphi 12 Athens
 
#4

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 10: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
 
#5

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

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

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

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 12: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
 
#7

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 13: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 stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.359 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 17:29
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?
Hallo Bjoerk,

Dein Screenshot hat mich animiert, den Thread nochmal genauer anzuschauen...
Respekt für das erreichte. Sieht richtig cool und aufgeräumt aus.

Wenn ich Dich richtig verstehe suchst Du nach "Databinding" (wobei Dein Screenshot suggeriert, dass das schon gelöst ist).
Oder ist Dein Problem nur, wie Du mit unterschiedlichen Werten mehrerer markierter Objekte umgehen sollst?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Bjoerk

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

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 20:54
Thanx. Das Ganze ist auch (fast) schon fertig, aber m.E. ziemlich unprofessionell gelöst? Es gibt ein zweidimensionales Array[Aufzahlungstyp über alle ShapeTypen, AufzählungsTyp über alle PropertiyTypen] of boolean.

Zum Beispiel hat das Objekt Line die Properties X1, Y1, X2, Y2.Diese Klasse setzt nun im Constructor
Delphi-Quellcode:
  Prop[gtLine, X1Prop] := true;
  Prop[gtLine, X2Prop] := true;
  Prop[gtLine, Y1Prop] := true;
  Prop[gtLine, Y2Prop] := true;
Der OI bekommt eine aktuelle Liste und geht a) die ganze Liste von hinten bis vorne durch b) über alle Typen und c) über alle Props. Wenn ein Object der Liste markiert ist und es ein X1Prop hat dann erzeugt der OI (einmal) ein TEdit, setzt einen TabIndex und gibt dem Edit als Tag TProp(X1Prop) mit. Der Oi setzt auch zweites Edit und schreibt "das ist die X1 Koordinate in Metern".

Und Schließlich speichert den Wert der Property in TEdit.Text.
 if CurrentItem.Prop[X1Prop] then EditX1.Text := FloatToStr(Item.X1); Dann legt der OI eine Kopie aller Edit.Texts and an und überprüft bei jedem TEdit.OnExit ob sich ein Wert geändert hat.
Falls ja speichert den Wert zurück und zeichnet die Grafik neu.

 if CurrentItem[X1Prop] and (Edit.Tag = TProp(X1Prop)) then Item.X1 := StrToFloat(EditX1.Text);

Hinzu kommt daß es nur Object gibt daß Instanzen aller Klassentypen hat. *gmpf*
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.359 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Liste von vielen unterschiedlichen Grafikobjekten mit unterschiedlichen Propertie

  Alt 29. Jul 2014, 21:19
Wenn Du magst, dann schau mal nach DSharp oder ssFramework. Beide realisieren ein Databinding.
Am ssFramework arbeite ich aber nicht mehr weiter.
(Embarcadero unterstützt ja inzwischen auch LiveBindings, aber da will ich mal nicht weiter drauf eingehen.)

Grundsätzlich kann man die Eigenschaften der Objekte direkt untersuchen und diese nach Namen ermitteln. Vor D2010 gab es dafür IsPublishedProp.
Damit kann man ermitteln, ob ein Objekt die veröffentlichte Eigenschaft XYZ besitzt und dessen Wert verarbeiten.

Ab D2010 gibt es mit der neuen RTTI dafür noch deutlich mehr Möglichkeiten.

Wenn Deine Lösung so funktioniert würde ich es dabei belassen. Ein komplettes Databindingframework aufzubauen wird sich für ein (fast fertiges Projekt) nicht lohnen.
Wenn man aber von vorn herein eine solche Lösung verfügbar hat, dann kann man sich viel Arbeit sparen. Deshalb will ich ohne Databinding auch möglichst nicht mehr arbeiten.

Im Grunde kannst Du dann mit normalen Controls wie mit DBControls arbeiten und die an die Datenschicht binden. Die Datenschicht ist dann nur keine Datenbank sondern ein Manager, der das benötigte Objekt ermittelt und den Wert dessen benötigter Eigenschaft zurück gibt.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (29. Jul 2014 um 21:21 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:20 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