Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Darstellung von Listen / Auswahl einer ID (https://www.delphipraxis.net/171223-darstellung-von-listen-auswahl-einer-id.html)

Sir Rufo 26. Okt 2012 16:07

Darstellung von Listen / Auswahl einer ID
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mal eine allgemeine Frage an alle die hier und hier geantwortet haben:

"Macht ihr das tatsächlich so, wenn ihr so etwas umsetzen wollt?"

und wenn ja, warum?

Irgendwie ist mir das unbegreiflich, da es sich eigentlich um ein Standardproblem handelt, somit sollte eigentlich auch eine Standardlösung vorhanden sein (und so lange gibt es die Livebindings auch nicht).

Allerdings scheinen mir alle bisherigen in den Threads genannten Lösungen doch sehr holperig zu sein.

- Informationen (die für die Anzeige nicht benötigt werden) sollen in Controls gespeichert.
- Der Code kann so nicht wiederverwendet werden und muss auch für jedes Control immer wieder neu erstellt werden

Irgendwie fehlt es (mir) hier an KISS und DRY

Die nächsten Tage wird die Frage wohl noch zur ListBox kommen ...

Mein genereller Ansatz (abgeschaut bei Marco Cantu und etwas erweitert) für so ein Control, was eine Liste darstellt (ComboBox, ListBox, ListView, StringGrid)
Delphi-Quellcode:
  IGUISelectableList<T> = interface( IGUIBaseInterface )
    ['{EEFE5C52-94C3-464B-80F2-05E443B0F0F6}']
    procedure SetText( const Value : String );
    function GetText : String;
    procedure SetValue( const Value : T );
    function GetValue : T;
    function IsSelected : Boolean;
    function GetSelected : ISSKeyValue<T>;
    procedure AddPair( const AKey : T; const AValue : String ); overload;
    procedure AddPair( const AKey : T; const AValue : String; SubValues : array of string ); overload;
    procedure AddPair( const AKey : T; const AValue : String; const SubValues : TStrings ); overload;
    procedure Clear;
    procedure SetList( const AValueList : TSSKeyValues<T> );
  end;
Im Anhang ein komplettes Projekt mit den Sourcen und EXE.
Die Auswahlliste wird mit TComboBox, TListBox, TListView dargestellt und die Füll-Methode und Auslese-Methode ist in allen Fällen gleich.

Bummi 26. Okt 2012 17:13

AW: Darstellung von Listen / Auswahl einer ID
 
Damit dürfte den meisten Fragestellern zu diesem Thema wenig geholfen sein.
Erstens haben sie keine Chance haben zu verstehen wie Dein Wrapper funktioniert, wenn sie derartige Fragen noch stellen.
Gut sie könnten Ihn einfach verwenden, aber spätestens wenn es an die erste Anpassung geht sind sie raus.)

Zudem sind viele mit Delphiversionen unterwegs sind die keine Generics unterstützen.

Sir Rufo 26. Okt 2012 17:42

AW: Darstellung von Listen / Auswahl einer ID
 
Das mit den Generics ist mir schon klar, darum habe ich das auch nicht direkt in die angeführten Threads gepostet.

Aber vor den Generics haben wir doch nicht mit Stöcken auf Steine geklopft ... oder etwa doch?

Die Generics sind (wie so immer) nicht zwingend notwendig, aber bringen halt einen generellen Ansatz her.

Da sich für eine ID aber nur einige wenige Datentypen anbieten (Integer, Int64, Array[0..15] of Byte [=GUID]) ist es natürlich problemlos möglich für diese Datentypen aus der Generics Vorlage entsprechende Units zu erstellen.

(Das TDictionary müsste dann auch ersetzt werden ... ok, wir haben vor Generics mit Stöcken auf Steinen geklopft :mrgreen:)

mkinzler 26. Okt 2012 17:59

AW: Darstellung von Listen / Auswahl einer ID
 
Der Te des anderen Threads hat wohl D7 PE, da wird ihm diese Lösung nicht helfen.

Bummi 26. Okt 2012 18:05

AW: Darstellung von Listen / Auswahl einer ID
 
Ich bin ebenfalls für eine Trennung von Darstellung und Daten.
Die Daten sind aber üblicherweise schon in einem sinnvollen Container enthalten (DB,Objektlisten,Array's, was auch immer).
Ich würde mir eher mehr grafische Elemente wünschen die dem Rechnung tragen, abgesehen von Datenbankcontrols und selbstgebauten Komponenten fällt mir da auf Anhieb nur TListbox mit lbVirtual/lbVirtualOwnerDraw ein.
Warum sollte man so ein Konzept nicht auf Drawgrids, Comboboxen, das unsägliche TListview übertragen können.
Ok, inzwischen gibt es die Livebindings, aber ich denke man könnte den Reibungsverlust durch Getter/Setter die dann spezifisch angepasst sind sowohl zu zu Entwicklungszeit, vor allem aber zur Laufzeit geringer halten.

(Manchmal ist es ja auch ganz nett mal wieder mit Stöcken auf Steine zu klopfen :feuerchen: )

Sir Rufo 26. Okt 2012 18:19

AW: Darstellung von Listen / Auswahl einer ID
 
Zitat:

Zitat von mkinzler (Beitrag 1188544)
Der Te des anderen Threads hat wohl D7 PE, da wird ihm diese Lösung nicht helfen.

darum
Zitat:

Zitat von Sir Rufo (Beitrag 1188540)
Das mit den Generics ist mir schon klar, darum habe ich das auch nicht direkt in die angeführten Threads gepostet.

;)

Zitat:

Zitat von Bummi (Beitrag 1188546)
Ich bin ebenfalls für eine Trennung von Darstellung und Daten.
Die Daten sind aber üblicherweise schon in einem sinnvollen Container enthalten (DB,Objektlisten,Array's, was auch immer).
Ich würde mir eher mehr grafische Elemente wünschen die dem Rechnung tragen, abgesehen von Datenbankcontrols und selbstgebauten Komponenten fällt mir da auf Anhieb nur TListbox mit lbVirtual/lbVirtualOwnerDraw ein.
Warum sollte man so ein Konzept nicht auf Drawgrids, Comboboxen, das unsägliche TListview übertragen können.
Ok, inzwischen gibt es die Livebindings, aber ich denke man könnte den Reibungsverlust durch Getter/Setter die dann spezifisch angepasst sind sowohl zu zu Entwicklungszeit, vor allem aber zur Laufzeit geringer halten.

(Manchmal ist es ja auch ganz nett mal wieder mit Stöcken auf Steine zu klopfen :feuerchen: )

Wenn aber die Darstellung wissen muss, wie die Daten aus den (durchaus) sinnvollen Containern gezeigt werden soll, dann weiß die Darstellung schon zuviel. Denn dargestellt werden können ja nur Zeichen. Alles was kein String ist muss zwangsweise interpretiert werden (und selbst ein String könnte einer Interpretation bedürfen). Und die korrekte Interpretation bekomme ich nur über den Kontext.

Mir ist durchaus bewusst, dass hier auch ein philosophischer Aspekt reinkommt:
Wieviel darf/soll die View wissen ... auf jeden Fall je weniger, desto flexibler (z.B. VCL<->FMX)

Bummi 26. Okt 2012 18:26

AW: Darstellung von Listen / Auswahl einer ID
 
Der View kann absolut beschränkt sein, vermitteln können passende Adapter ... oder so genial wie z.B. die datengebundenen devExpresskomponenten, dann braucht es halt einen definierten Adapter (quasi ein virtuelles Dataset), an den man den eigenen wo nötig anflanschen kann.
Zwischendurch serialisiere/deserialisiere ich meine Objektlisten in Clientdatasets um die genannten Vorzüge nutzen zu können.

Alter Mann 20. Mai 2016 19:28

AW: Darstellung von Listen / Auswahl einer ID
 
@Sir Rufos

Meine Frage zu diesem, deinem Beitrag, ist der Code ohne Urheberrechte?
Hintergrund: ich nutze ihn in einem Projekt und wurde nach dem Quellcode gefragt.
Es geht um die Dateien CommonTypes, GUIControls_Intf, Vcl.GUIControls und Vcl.GUIControls.Common.

Da keine PN gewünscht sind, die Frage auf diesem Wege.

VG

Sir Rufo 20. Mai 2016 21:20

AW: Darstellung von Listen / Auswahl einer ID
 
Sagen wir mal so, in Deutschland ist das Urheberrecht nicht übertrag- und damit nicht abtretbar.

Den Code habe ich irgendwo (ist schon lange her) von Marco Cantu genommen und erweitert. Urheber sind also Marco und meine Wenigkeit.

Jeder Sourcecode von mir den ich hier veröffentliche darf jeder grundsätzlich schon mal im Rahmen der AGB dieses Forums verwenden. Mir persönlich ist es egal ob du den Code jetzt noch in gelb lackierst und Spoiler dranschraubst. :stupid:

Wenn ich das nicht möchte, dann zeige ich keinen Code (meine Meinung).

Kurz gesagt: Wegen mir musst du dir keinen Kopf machen und wenn dir der Code hilft, dann hatte dieser Thread wenigstens eine Berechtigung und verschwendet nicht nur den Speicherplatz vom Cheffe :wink:

BUG 20. Mai 2016 22:57

AW: Darstellung von Listen / Auswahl einer ID
 
Zitat:

Zitat von Sir Rufo (Beitrag 1338580)
Jeder Sourcecode von mir den ich hier veröffentliche darf jeder grundsätzlich schon mal im Rahmen der AGB dieses Forums verwenden.

Es sei denn es hat noch jemand anderes Urheberrecht daran oder exklusives Verwendungsrecht (z.B. der Arbeitgeber). Dann hättest du den Code eventuell nicht zur Verfügung stellen dürfen und ob die AGB dann noch bestand hat ... was das für den Nutzer des Codes für Konsequenzen hat: keine Ahnung.

Urheberrechtsfragen lassen sich endgültig leider nur vor Gericht klären :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 Uhr.
Seite 1 von 2  1 2      

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