![]() |
DBGrid mit Explorer-Such-Funktion
Hallo DP'ler!
Ich habe in meinem Programm ein DBGrid. Da das DBGrid größer als eine Bildschirmseite ist, möchte ich gerne so etwas ähnliches "basteln" wie beim Windows-Explorer. Klickt man auf einen entsprechenden Buchstaben, dann springt der Cursor zur 1. Datei, die mit diesem Buchstaben beginnt. Könnt Ihr mir helfen? Ist das mit Delphi zu realisieren? :gruebel: Vielen Dank für Eure Hilfe Ines Delphi2009 und Win XP |
Re: DBGrid mit Explorer-Such-Funktion
Hallo,
habe mal etwas in der Art gebastelt: Über das DBGrid habe ich eine Zeile mit TEdits gemacht, deren Breite sich an die Breite des DBGrids anpassten (OnResize). Dadurch war die "Zugehörigkeit" der Edits zu den Spalten im Grid erkennbar. Nun konnten die Anwender in die Edits was eingeben. Alle Edits hatten ein OnChange-Ereignis (also ein Ereignis für alle Edits). In diesem Ereignis habe ich den Namen des Senders abgefragt. Die Namen hatten eine Namenskonvention: ed + Spaltenname. Dadurch konnte ich im Ereignis den "Spaltennamen" abgreifen und einen Filter auf das Dataset anwenden, der nur die Sätze entsprechend der Eingabe anzeigte. Also: Die Eingabe von z. B. "A" führte dazu, dass nur noch Sätze zu sehen waren, die mit "A" beginnen. Jeder weitere Buchstabe schränkte die angezeigte Datenmenge weiter ein. Statt eines Filters könntest Du aber auch mit Locate zum ersten, passenden Datensatz gehen, so dass nur der Datenbankcursor verschoben wird und nicht die angezeigte Datenmenge eingeschränkt wird. Sofern das DBGrid readonly ist, könntest Du auch das OnKeyPress-Ereignis für die Änderung des Datenbankcursors heranziehen. Ein Locate auf den soeben eingegeben Buchstaben. Ist das DBGrid nicht readonly, besteht die Gefahr der ungewollten Datenänderung. Eventuell sind FindFirst o. ä. Methoden für die Suche angebrachter, hier müsstest Du mal ausprobieren, welche Methode für Deine Situation die besten und schnellsten Ergebnisse liefert. Ein Filter auf große Datenmengen könnte schon zu erheblichen Laufzeiten führen. Da wäre ein FindFirst eventuell sinnvoller. Bei der Variante mit den Edits bitte einen zusätzlichen Button zum Leeren aller Edits nicht vergessen, die Anwender werden er Dir danken. Bei den Edits hast Du mehrere Möglichkeiten: Die inhaltliche Änderung eines Edits leer alle übrigen Edits oder die Eingaben in den Edits werden beim Filtern kombiniert. Für Adresssuchen kann die zweite Variante durchaus hilfreich sein. Man gebe ein bisserl vom Name ein bisserl vom Ort... ein... |
Re: DBGrid mit Explorer-Such-Funktion
Hallo Stephan,
ich habe folgende Lösung in mein Programm eingebaut: OnKeyPress und Locate. Mein DBGrid ist readonly und nur ein Feld (Familienname) ist für die Suche relevant. Vielen Dank für Deine schnelle, tolle Hilfe. :-D Mit freundlichen Grüßen Ines |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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