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/)
-   -   Ersatzteilliste - Selektierung über TreeView (https://www.delphipraxis.net/175802-ersatzteilliste-selektierung-ueber-treeview.html)

Metschu 20. Jul 2013 14:53

Ersatzteilliste - Selektierung über TreeView
 
Hallo zusammen,

ich möchte gerne eine Ersatzteilliste erstellen.
Die Ersatzteile werden in einem Listview angezeigt. Über den Treeview werden die Teile dann gefiltert.

Ist nichts angeklickt, sollen alle Teile in der Liste erscheinen. Je weiter man sich in die Zweige rein klickt, um so spezifischer sollen die Teile in der Liste werden
Beispiel:
-> Zweig "Elektrik" alle Elektrik Teile
-> Unterzweig "Kabel" nur noch alle Kabel
-> Unterzweig "rot" nur noch alle roten Kabel
Bis jetzt hab ich es hinbekommen, das die richtigen Teile im letzten Zweig angezeigt werden - vorher ist die Liste leer.

Dem letzten Zweig hab ich einen eindeutigen Pointer zugewiesen, der auch der Teilegruppe in der Liste zugewiesen ist - so mache ich derzeit die Selektion zur Anzeige im Listview.

Könnt ihr mich mal auf den Richtigen weg schubse, wie ich das auch in den darüber liegenden Zweigen rausfiltern kann?
Steh im Moment etwas auf dem Schlauch


Danke schonmal.

Gruß

Torsten

Christian Seehase 20. Jul 2013 15:16

AW: Ersatzteilliste - Selektierung über TreeView
 
Moin Torsten,

wie sind die Daten denn gespeichert?
In einer Datenbank?

Metschu 20. Jul 2013 16:19

AW: Ersatzteilliste - Selektierung über TreeView
 
Hallo Christian,

sie sollen in einem TRecord gespeichert werden.

Union 20. Jul 2013 17:27

AW: Ersatzteilliste - Selektierung über TreeView
 
Und der Record wird dann verworfen? Wie ist die Pesistenz? Aber zunächst mal kannst Du ein Parent in jedem Record mitführen. Und dann suchst Du zu jeder Ebene rekursiv alle Unterebenen.

jobo 20. Jul 2013 20:20

AW: Ersatzteilliste - Selektierung über TreeView
 
Du hast nicht geschrieben, was für Ersatzteile, aber ich könnte mir vorstellen, dass die Liste ziemlich lang sein kann. Darstellung von vollständigen, langen Listen ist ressourcenintensiv und relativ nutzlos.

Um Dich etwas zu schubsen:
Vergiss den Treeview als statisches Filterwerkzeug. Die Kategorien und Unterkategorien, die einen konkreten Treeview ergeben, sehen morgen vielleicht ganz anders aus. Es gibt sicher dutzende Produktmerkmale, aus denen man viele verschiedene Filterbäume aufbauen kann.

Bau dir ein System, dass Teile nach Kategorie (Unterkategorie) filtern kann.
Bau Dir eine Kategorie Visualisierung, die möglichst flexibel ist.
Ein Klick auf Deine Kategorievisualisierung wird dann immer die gewünschten IDs zur Filterung deiner Teileliste liefern. Das nutzt Du dann als Filter für die Teileliste.

sx2008 20. Jul 2013 22:46

AW: Ersatzteilliste - Selektierung über TreeView
 
Zitat:

Zitat von jobo (Beitrag 1222158)
Vergiss den Treeview als statisches Filterwerkzeug. Die Kategorien und Unterkategorien, die einen konkreten Treeview ergeben, sehen morgen vielleicht ganz anders aus

Das würde ich auch so sehen.
Man kann einen Treeview benutzen um in eine Teilehierarchie einzutauchen aber der Zweig "rot" gibt keinen Sinn.
Wie tief man den Suchbaum sinnvollerweise machen kann siehst du z.B. auf Elektronikseiten.
Beispiel:
Code:
Bauteile -> Optoelektronik -> Lasertechnik -> Lasermodule

Furtbichler 21. Jul 2013 07:24

AW: Ersatzteilliste - Selektierung über TreeView
 
Zitat:

Zitat von sx2008 (Beitrag 1222162)
Zitat:

Zitat von jobo (Beitrag 1222158)
Vergiss den Treeview als statisches Filterwerkzeug.

Das würde ich auch so sehen.

Ich nicht. Es ist ein statisches Filterwerkzeug, das -richtig verwendet- auf sehr einfache Art und Weise die Visualisierung einer hierarchische Strukturierung von Daten und deren Selektierung erlaubt. Man darf sie nur nicht sofort komplett füllen (sondern erst im OnExpand) und es ist nur dann performant, wenn im zu füllenden Teilbaum (nach dem Aufklappen) nicht hunderte von Unterknoten entstehen. Natürlich kann man auch das bekannte Virtual Treeview (VTV) nehmen, aber lazy load bietet sich eigentlich immer an.

Bei der Wahl des Selektionsparadigmas sollte man sich die Frage stellen: "Wie wird gesucht?"
Kennt man die Bezeichnung, dann reicht ein Eingabefeld, eine unscharfe Textsuche, fertig.
Geht man jedoch wirklich hierarchisch vor, benötigt also zunächst alle Kabel, dann ist so ein Treeview mit Multiselekt in der Artikelebene und Drag&Drop auf die ausgewählten Artikel schon sinnvoll.

Es spricht auch nichts dagegen, mehrere Paradigmen umzusetzen.

Eine Treeview zu filtern passt allerdings nicht zum lazy-load, weil man entweder durch das Filtern der Daten das lazy load aushebelt (weil alles angezeigt wird) oder unvollständig filtert (wegen lazy load).

Wenn Du das mit einer TV umsetzen willst, würde ich zunächst die Daten filtern, hierarchisch sortieren und aus der gefilterten Liste das TV komplett aufbauen. Wenn Du -wie schon erwähnt- zu viele Artikel hast, wird das aber grottenlangsam, weswegen dann hier ein VTV vorzuziehen ist.

Das VTV gibt es hier.

Metschu 21. Jul 2013 16:37

AW: Ersatzteilliste - Selektierung über TreeView
 
Hallo zusammen,

erstmal danke für Eure Antworten.

Zitat:

Zitat von jobo (Beitrag 1222158)
Du hast nicht geschrieben, was für Ersatzteile, aber ich könnte mir vorstellen, dass die Liste ziemlich lang sein kann. Darstellung von vollständigen, langen Listen ist ressourcenintensiv und relativ nutzlos.

Das ganze ist für eine LKW-Werkstatt. Die Teile werden im Normalfall über ein Teileprogramm rausgesucht.

Viele Kleinteile (vor allem für aufwändige Um- oder Nachrüstungen) sind nicht in dem System da von Zulieferern oder nur umständlich zu ermitteln und stehen derzeit in einer Papierliste - die Teilnummer müssen händisch in das System eingetippt werden.
So könnte man die "Einkaufsliste" durch klicken zusammenstellen und an das System übertragen.
Die Liste hat derzeit ca. 1.500 Teile. Hier steht die Teilnummer, die Benennung und noch 2 weitere Definitionen (Wert / Farbe / etc). Alles mit jeweils 25 Zeichen (also 100 Zeichen Je Teil)
Bilder, Beschreibungen und Ähnliches kommt nicht mehr dazu.

Zitat:

Zitat von sx2008 (Beitrag 1222162)
Man kann einen Treeview benutzen um in eine Teilehierarchie einzutauchen aber der Zweig "rot" gibt keinen Sinn.

War auch nur ein Beispiel, man kann auch die Kabelstärke nehmen.
Das ganze (Der Suchbaum) sollte Sinniger weise vom User bzw Admin einstellbar sein und nicht Statisch von der Software vorgegben. Das macht die Sache nicht gerade einfacher...
Der TV ist auch nur Suchbaum zur Selektierung. Die eigentlichen Teile werden in einem Listview aufgelistet.

Zitat:

Zitat von Furtbichler (Beitrag 1222175)
Wenn Du das mit einer TV umsetzen willst, würde ich zunächst die Daten filtern, hierarchisch sortieren und aus der gefilterten Liste das TV komplett aufbauen.

Auch eine Idee, das TV so rum zu erstellen.

Den VTV muss ich mir dann doch nochmal genauer anschauen.

sx2008 21. Jul 2013 17:56

AW: Ersatzteilliste - Selektierung über TreeView
 
Zitat:

Zitat von Metschu (Beitrag 1222197)
Zitat:

Zitat von sx2008 (Beitrag 1222162)
Man kann einen Treeview benutzen um in eine Teilehierarchie einzutauchen aber der Zweig "rot" gibt keinen Sinn.

War auch nur ein Beispiel, man kann auch die Kabelstärke nehmen.

Genau das ist doch der Punkt.
Du hast mehrere Kabelstärken (0.5, 1, 2, 4, 10mm^2) sowie mehrere Farben (rot, grün, blau, schwarz).
Was ist jetzt wichtiger: die Kabelstärke oder die Farbe?
Tja, es kommt drauf an.
Für den einen ist die Kabelstärke wichtiger; für den anderen die Farbe.
Würde man den Baum weiterführen, gäbe es 5 Knoten für die Kabelstärke und darunter jeweils 4 Knoten für die Farbe (5 * 4 = 20 Unterknoten).
Man könnte auch mit der Farbe beginnen (4 Knoten) und darunter die Kabelstärke (5 Knoten) und käme wiederum auf 20 Unterknoten.
Wenn man beides haben will; also sowohl über Farbe als auch Kabelstärke sich den Baum hinunterbewegen möchte braucht man 40 Unterknoten.
Problem: alle Kabel sind dann auf 2 Wegen auffindbar und damit auch doppelt im Baum enthalten.
Würde man ein weiteres Attribut hinzufügen (z.B. Hersteller) dann multipliziert sich das Ganze mit der Anzahl der Hersteller.
Daher muss der Baum dort enden, wo Attribute (Farbe, Kabelstärke, Hersteller, Länge, ...) ins Spiel kommen.

Union 21. Jul 2013 18:31

AW: Ersatzteilliste - Selektierung über TreeView
 
Vielleicht wäre eher ein filter- und gruppierbares Grid interessant, in dem man die Dtenmenge immer weiter einschränken kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:27 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