![]() |
Darstellung von Listen / Auswahl einer ID
Liste der Anhänge anzeigen (Anzahl: 1)
Mal eine allgemeine Frage an alle die
![]() ![]() "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:
Im Anhang ein komplettes Projekt mit den Sourcen und EXE.
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; Die Auswahlliste wird mit TComboBox, TListBox, TListView dargestellt und die Füll-Methode und Auslese-Methode ist in allen Fällen gleich. |
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. |
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:) |
AW: Darstellung von Listen / Auswahl einer ID
Der Te des anderen Threads hat wohl D7 PE, da wird ihm diese Lösung nicht helfen.
|
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: ) |
AW: Darstellung von Listen / Auswahl einer ID
Zitat:
Zitat:
Zitat:
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) |
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. |
AW: Darstellung von Listen / Auswahl einer ID
@Sir Rufos
Meine Frage zu diesem, deinem ![]() 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 |
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: |
AW: Darstellung von Listen / Auswahl einer ID
Zitat:
Urheberrechtsfragen lassen sich endgültig leider nur vor Gericht klären :stupid: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 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