DBGrid ala Explorer

Rund um die LCL und andere Komponenten
Antworten
starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

DBGrid ala Explorer

Beitrag von starkard »

Hallo,

Achtet doch mal bitte kurz auf die Darstellung innerhalb des Windows-Explorers ab Windows Vista. Die Ausgabe der Verzeichnisse und Dateien lassen sich per Klick aufsteigend und absteigend nach den Spaltennamen in der Titelzeile sortieren. Die Spaltennamen widerum lassen sich der Übersicht halber über ein Popup ab- und hinzuschalten. Denkbar wäre noch ein zusätzlicher Filter der für jede Spalte unterschiedlichst definiert zu- und abschaltbar sein könnte etc.

Ich benutze häufig ein DBgrid ausschliesslich zur Anzeige und würde mich solche zusätzlichen Funktionalitäten wünschen. Wahrscheinlich ists nicht viel arbeit aber bevor ich mich daran versuche: Gibt es nicht schon sowas für laz (freeware)?

Thx

P.s. Benutze Windows, Lazarus und Mysql

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Re: DBGrid ala Explorer

Beitrag von slai »

für die einfache column sortierung (mit ZeosLib), ansonsten musst du einfach auf den Query oder DS die Sortierreihenfolge ändern:

Code: Alles auswählen

procedure TDynDBPanel.DBGGridTitleClick(Column: TColumn);
var
   temp : ZAbstractRODataset.TSortType;
begin
     temp := ZTable.SortType;
     ZTable.SortedFields := Column.FieldName;
     if temp = stAscending then begin
        ZTable.SortType := stDescending;
     end else begin
        ZTable.SortType := stAscending;
     end;
end;
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: DBGrid ala Explorer

Beitrag von monta »

Ich hab irgendwo auch ein Codestück rumliegen, was mit der SQL-DB Query arbeitet und nach jedem klick die entsprechende Spalte sortiert (mit neuem Select an die DB). Das kann ich auch raussuchen. Womit greifst du den auf MySQL zu?

Ansonsten kannst du dir auch mal KGrid anschauen. Ich meine, der hat eine interne Sortierfunktion. Davon gibt es auch eine DB-Anbindung. Du kannst KGrid direkt als Ersatz für den DBGrid einsetzen.

Schau es dir mal an:
http://www.tkweb.eu/en/delphicomp/kgrid.html" onclick="window.open(this.href);return false;
Johannes

starkard
Beiträge: 87
Registriert: Mi 31. Okt 2007, 10:44

Re: DBGrid ala Explorer

Beitrag von starkard »

Hallo und entschuldigung wenn ich den alten Beitrag nochmal rauskrame. Danke für eure Tips.

Leider reichen mir mittlerweile die Sortiermöglichkeiten nicht mehr aus und wünsche mir eine zusätzliche Möglichkeit nach Werten aus den jeweiligen Spalten filtern zu können. Ich stelle mir das so vor, dass nach Klick auf ein Title des DBgrids eine Checkboxlist erscheint die einem alle aufgeführten Werte (DISTINCT SELECT) dieser zum Filtern anbietet. (s.Anhang/Zeichnung)

Bsp.
TITEL
|---------- |
|ASC |
|DESC |
|-----------|
|Wert1 |
|Wert2 |
| ... |
|-----------|

So bleibt mir nichts anderes übrig als diese Komponente selber zu entwickeln und würde gerne meine Überlegungen kund tun. Vielleicht habt ihr ja ein paar Ratschlage,Warnungen etc. damit ich nicht in einer Sackgasse lande, da ich damit noch kaum Erfahrung habe.

Erste Überlegung(Pseudocode):
Komponente von DBgrid ableiten
Nach Titleklick eine Checkboxlist zeichnen
Werte aus dieser Spalte darin jeweils nur einmal aufführen
Dabei zuerst Clientseitig das Dataset durchsuchen
pro Spalte ein Objekt erzeugen:
{
Spaltenindex
SortTyp [ASC,DESC]
Limit
WerteFieldTyp
array/Stringlist Werte
array IsWertChecked
...
}
Alle Objecte in eine Objectlist speichern
Methode filtert Dataset über Dataset.Filter
Fertig!? :oops:
Dateianhänge
TitleSort.jpg
TitleSort.jpg (11.28 KiB) 1431 mal betrachtet

mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Re: DBGrid ala Explorer

Beitrag von mtbf40 »

Hallo,

...gibt es mittlerweile für dieses Problem eine Lösung??
Ich suche jetzt schon 14 Tage nach einer Lösung - habe aber bisher nicht viel gefunden. Gibt es in den bekannten (DB)Grid-Controls (DBGrid,K(DB)Grid,VirtualDBGrid) einen Ansatz für eine Kombination aus Combo-/Checkbox?
Was ich bisher gefunden habe ist das Rx-Package (RxLib) - das wird aber, glaube ich, nicht mehr weiterentwickelt wird - hat aber auch keine Combo/Checkbox.

Antworten