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/)
-   -   Filter für StringGrid richtig realisieren? (https://www.delphipraxis.net/152185-filter-fuer-stringgrid-richtig-realisieren.html)

AlexII 14. Jun 2010 14:06

Filter für StringGrid richtig realisieren?
 
Hallo,

also ich möchte für ein StringGrid einen Filter anwenden. Weiß aber nicht wie man das am besten macht, habe aber zwei Idee, sagt mir bitte welche von diesen die beste ist, oder ob es eine noch bessere gibt, danke!

1. Idee:
Ich lade die Daten erstmals in eine globale Stringlist und übergebe sie dem Filter entsprechen an das StringGrid. Wenn ich dann die Daten im StringGrid bearbeite oder lösche muss ich diese auch an die Stringlist senden, um die Liste aktuell zu halten.

2. Idee:
Ich lade alle Daten gleich in das StringGrid und falls der Filter an ist, kopiere ich die Daten in eine Stringlist und filtere das StringGrid. Wenn ich im StringGrid was bearbeite oder lösche, muss ich zuvor den Filter ausschalten, das StringGrid komplett aus der Stringlist wiederherstellen, die Daten bearbeiten und wieder das ganze StringGrig in die Stringliste kopieren und den Filter einschalten.


Wow, hoffe hab mich verständig ausgedruckt.

David Martens 14. Jun 2010 15:10

AW: Filter für StringGrid richtig realisieren?
 
??? ne nicht so richtig verständlich ???

Willst du eine Filterung ähnlich wie bei MS-Excel erzielen? Gib doch mal ein Beispiel.

Gruß David

AlexII 14. Jun 2010 16:02

AW: Filter für StringGrid richtig realisieren?
 
Ja man gibt z.B. im Filter das Wort "männlich" und es werden nur Daten von Männern angezeigt.

hoika 14. Jun 2010 16:04

AW: Filter für StringGrid richtig realisieren?
 
Hallo,

ganz schön kompliziert ;)

Merke dir per Grid.Objects, zu welchem Eintrag eine Zeile gehört (z.B. DBId).

Das Filtern übernimmt deine (schon vorhandene) FillGrid beim Eintragen.


Heiko

mkinzler 14. Jun 2010 16:05

AW: Filter für StringGrid richtig realisieren?
 
Man könnte mit einem Memory-Dataset und einen DBGrid arbeiten

RaSoWa1 14. Jun 2010 16:28

AW: Filter für StringGrid richtig realisieren?
 
Ich habe mir ein TFilterGrid-Komponente erstellt. Da gehe ich wie folgt vor:

Filter an:
Datensätze, die nicht der Filterbedingung entsprechen, werden in ein temporäres StringGrid verschoben.

Filter aus:
Datensätze aus dem temporären StringGrid werden wieder angehangen und die Tabelle neu sortiert. Das temporäre Grid wird freigegegben.

Gruß Klaus

David Martens 14. Jun 2010 16:36

AW: Filter für StringGrid richtig realisieren?
 
Also falls du das AdvStringGrid kannst du ganz einfach mit AdvStringGrid1.HideRow(integer), AdvStringGrid1.UnHideRow(integer) arbeiten und deinen "Filter" kannst du mit AdvStringGrid1.Cols[integer] füllen.

Wenn du allerdings nur das delphieigene StringGrid hast kannst du als nicht so elegante Lösung RowHeights[integer] := 0 setzten, aber da "sieht man" die versteckten Zeilen leider noch. Sonst kommst du um eine Struktur die alle Daten hält nicht herum, eine DB oder ein zweites Grid, oder auch eine Stringliste mit angehängten Objekten.

AlexII 14. Jun 2010 17:10

AW: Filter für StringGrid richtig realisieren?
 
Zitat:

Zitat von hoika (Beitrag 1028792)
Das Filtern übernimmt deine (schon vorhandene) FillGrid beim Eintragen.

Was ist denn FillGrid? :?

AlexII 14. Jun 2010 17:14

AW: Filter für StringGrid richtig realisieren?
 
Zitat:

Zitat von David Martens (Beitrag 1028810)
Wenn du allerdings nur das delphieigene StringGrid hast kannst du als nicht so elegante Lösung RowHeights[integer] := 0 setzten, aber da "sieht man" die versteckten Zeilen leider noch.

Und wenn ich RowHeights[integer] auf -1 setze? Darf man das? Also

Code:
RowHeights[integer] := -1

David Martens 14. Jun 2010 17:16

AW: Filter für StringGrid richtig realisieren?
 
Da verschwinden die Gitterlinien leider ganz, sieht noch bescheidener aus, es sei denn du hast erst garkeine.


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