AGB  ·  Datenschutz  ·  Impressum  







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

Parameter in Event übergeben

Ein Thema von cltom · begonnen am 6. Sep 2013 · letzter Beitrag vom 6. Sep 2013
Antwort Antwort
Benutzerbild von stahli
stahli

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

AW: Parameter in Event übergeben

  Alt 6. Sep 2013, 12:34
Du meintest schon das richtige.

Die Liste wird Bestandteil Deines Objektes (also Deiner Klasseninstanz).

Es gibt auch die Möglichkeit, Klassenvariablen zu verwenden (z.B. class var GlobalList: TList; ).
Dann würden alle Klasseninstanzen auf die selbe Liste zugreifen können. Sie müsste dann ggf. in einem Klassenconstruktor erzeugt und in einem Klassendestructor aufgelöst werden.

Du willst ja aber offenbar eine Liste in jeder Klasseninstanz.


Nur mal noch zwei kleine Anmerkungen:
Üblich ist als Präfix für private Felder ein F (ich nutze inzwischen meist ein kleines f). Natürlich ist das nicht zwingend, hilft aber möglichen Dritten, Deinen Quelltext besser lesen zu können.
Die Objektliste könntest Du als Nur-Lesen-Property definieren (wenn sie direkt vom Objekt verwaltet wird) oder als Property mit Getter und Setter. Dann könntest Du im Setter erkennen, wenn eine neue Liste zugewiesen wird und gleich ein Neuzeichnen veranlassen.
Delphi-Quellcode:
type
   TDesigner = Class(TObject)
 
    private
       Graphics : IGPGraphics;
       fBrush: IGPBrush;
       fPen: IGPPen;
       fFont : IGPFont;
       fMyObjects : TObjectList<TDesignerObject>; // privat
 
    public
       Destination_PB : TPaintBox;
       procedure Initialize;
       procedure Draw;
       procedure AddObject(objecttype : TDesignerObjectType; x,y,d : integer);
       procedure Dest_PaintMe (Sender : TObject);
       property MyObjects : TObjectList<TDesignerObject> read fMyObjects {write set_MyObjects}; // öffentlich
   end;
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
230 Beiträge
 
Delphi 12 Athens
 
#2

AW: Parameter in Event übergeben

  Alt 6. Sep 2013, 12:49
ok, danke Euch!

Ja, klar gewollt ist natürlich, dass jede Instanz ihre Liste hat. Im Mainform erzeuge ich dann eine Instanz des Designers und der führt dann seine Liste an Objekten mit. Ja, mein "in der ganzen Klasse verfügbar machen" war also natürlich falsch und irreführend.

Präfix "f" lässt sich machen, klar, danke für den Hinweis. Und auch der Ansatz mti der Objektliste macht Sinn. Im aktuellen Entwurf hat nur die Instanz selbst mit der Liste zu schaffen. Von aussen wird ein neues Objekt nur durch die prozedur "AddObject" (später dann "RemoveObject", "MoveObject", etc.) verwaltet. Direkt will ich da von der mainform nicht reinpfuschen.

Das bringt mich allerdings gleich zu einer anderen Design-Frage. Wenn ich das so handhabe, wie beschrieben, dann kennt nur dieses Objekt die Objektliste (und zwar hier zum Zeichnen). Wenn ich jetzt die Objektliste für andere Zwecke haben möchte (etwa zum speichern oder für Berechnungen), dann müsste ich im Grunde neue Objekte erschaffen, die wiederum die Objekte in ihren Listen haben und mit den Daten ihre Funktionen durchführen. Die Redunanz hier wäre überschaubar, weil die Daten zur Zeichnung und die Daten zur Berechnung recht unterschiedlich sind (die Zeichnung ist ein einfaches Symbol, für die Berechnung kommt natürlich viel mehr dazu). Aber dennoch: man müsste für jedes neue Ding, das ich hinzufüge, ein Objekt in allen unterschiedlichen Objektlisten der einzelnen Objekte anlegen.

Alternativ könnte man in einer eigenen Überklasse eine Objektliste halten (die alle notwendigen Daten enthält) und diese (oder Teile davon) an diverse Objekte übergeben, je nachdem, was damit passieren soll. Gibt es dazu Empfehlungen?

Geändert von cltom ( 6. Sep 2013 um 12:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: Parameter in Event übergeben

  Alt 6. Sep 2013, 13:19
Eine Nachfrage zum Verständnis:

Du wirst also auf keinen Fall Controls (wie Panels o.ä.) irgendwo platzieren, sondern direkt auf einem Canvas selbst zeichnen?

Deine letzte Überlegung ist (wenn ich sie richtig interpretiere) auf jeden Fall sinnvoll.
Es macht auf jeden Fall Sinn, die Daten komplett an einer zentralen Stelle zu verwalten und diese bei Bedarf in der GUI darzustellen.
Ich habe jetzt noch nicht verstanden, warum Du mehrere Deiner Designer mit Objektlisten benötigst.

Du könntest z.B. Deine Daten in einer Art Manager verwalten, die dort berechnen und speichern bzw. laden und dem Manager einen Designer zuweisen auf dem er die Daten darstellen kann.

Grundsätzlich solltest Du Daten und Darstellung im Quelltext konsequent trennen und sich nur über eine Schnittstelle gegenseitig bekannt machen.
Das wird die Wartbarkeit Deines Projektes deutlich erhöhen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort


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