Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Suchfeld über Stringliste (oder ähnliches) mit anzeige von 5 Vorschlägen (https://www.delphipraxis.net/197322-suchfeld-ueber-stringliste-oder-aehnliches-mit-anzeige-von-5-vorschlaegen.html)

fisipjm 30. Jul 2018 14:07

Suchfeld über Stringliste (oder ähnliches) mit anzeige von 5 Vorschlägen
 
Hi,

ich habe eine, so dachte ich zumindest, einfache Anforderung.
Ich würde gerne in Delphi Seattle in der VCL ein Editfeld oder ein Dropdown oder eine Listbox.... so verwenden, dass ich dort eine Eingabe machen kann, die nach Eingabe von 3 Zeichen eine Autovervollständigung, bzw. Vorschläge macht.

Genau genommen, ich habe einen RESR dienst, der mir bei der eingabe von Orten mit Vorschlägen und den genauen Geokoordianten antwortet.

Ich suche gefühlt schon seit einer Woche nach einer brauchbaren Lösung, komme aber nicht weiter.
Hab schon alle möglichen Module und Beispiele gefunden, die aber entweder mit Seattle nicht mehr laufen wollen oder nicht das machen was ich möchte.

An der Umsetzung mit einer Combobox bin ich gerade dran, das erscheint mir aber sehr sehr umstädnlich und ist zudem noch zeimlich verbugt (Beim Dropdown verschwindet der Mauszeiger, beim Klick auf das Element werden nicht die gleichen Events gefeuert wie beim Select mit der Hoch/Runter taste uws...)

Habt ihr eine Idee oder sogar eine Lösung?
Gruß
PJM

Der schöne Günther 30. Jul 2018 14:35

AW: Suchfeld über Stringliste (oder ähnliches) mit anzeige von 5 Vorschlägen
 
Das mit der ComboBox ist eigentlich Standard wie es in Windows überall so ist... :|

himitsu 30. Jul 2018 14:39

AW: Suchfeld über Stringliste (oder ähnliches) mit anzeige von 5 Vorschlägen
 
Es gibt von Fremdanbietern entsprechende Komponenten, welche man mit großen Listen/Datenquellen füttern kann und die dann anschließend die Suche und Autovervollsändigung erledigen,
oder man baut es sich selber.

Über eine LookupCombobox geht es bestimmt auch nicht schlecht.
z.B. könntest du im OnChange ein
Delphi-Quellcode:
SELECT aaa FROM xxx WHERE ttt ILIKE :eingabe || '%' ORDER BY aaa LIMIT 100
anstoßen, mit welchem die Lockup-DataSource gefüllt wird.

fisipjm 30. Jul 2018 15:56

AW: Suchfeld über Stringliste (oder ähnliches) mit anzeige von 5 Vorschlägen
 
Ich glaube es ist noch nicht so ganz klar geworde.
Ich habe keine Riesen Datenmenge, ich habe immer 5 Einträge Maximal. Das durchsuchen übernimmt der Server.
Das einzige was ich gerne hätte, wäre eine Art Combobox die mir nicht den Mauszeiger tötet wenn dropdown auf true setze und sich dynamisch anpasst wenn ich weitere Buchstaben eintippe.
Klar kann ich die EInträge immer wieder löschen und Füllen, aber dann "Ruckelt" das Dropdown Feld und wie gesagt ich kann auch nicht unterscheiden ob mein Eintrag via Maus oder via Tastatur ausgewählt wurde.

In meinem Beispiel macht das leider einen Unteschrschied.

Folgendes Szenario

Ich gebe "Biel" in das Edit ein
bekomme als Responce:
1. Bielheim
2. Bielefeld
3. Bielhausen
4. Bieblingen
5. Biergarten

Jetzt will ich in den Einträgen "Navigieren können" sodass man eine Art vorschau bekommt wo dieser Punkt liegen würde.
Das funktioniert aktuell, weil ich die Tasten hoch runter abfragen kann und meinen aktuellen index beim onkeydown event.

Was mir an dieser Stelle fehlt ist eine Art on Hover Event, wenn ich mit der maus darüber fahre. Das funktioniert leider nicht. Außerdem habe ich es noch nicht fertig bekommen das mir der Mauszeiger nicht verschwindet.

Gruß
PJM

freejay 30. Jul 2018 16:08

AW: Suchfeld über Stringliste (oder ähnliches) mit anzeige von 5 Vorschlägen
 
Wenn Dein eingegebener Suchbegriff immer der Anfang(!) des gesuchten Begriffes ist, kannst Du einfach eine TComboBoxEx nehmen und dort die AutoCompleteOption acoAutoSuggest aktivieren.

Nachtrag: Möglicherweise habe ich Deine Anfrage auch missverstanden.

himitsu 30. Jul 2018 16:22

AW: Suchfeld über Stringliste (oder ähnliches) mit anzeige von 5 Vorschlägen
 
Zitat:

Ich habe keine Riesen Datenmenge, ich habe immer 5 Einträge Maximal.
5 Werte aus einer größeren Datenmenge. :zwinker:


Andere Komponenten?

z.B. bei Devexpress gibt es nicht nur Text und ItemIndex, sonder auch noch paar Abwandlungen wie CurText und CurItemIndex, und wenn man dann auch noch ImediatePost auf False setzt, dann kann man im DropDown navigieren, bekommt im OnChange die aktuelle Selection (Current) und erst beim Schließen des DropDown (Enter, Klick, ...) wird die Auswahl "richtig" übernommen.


Und wie gesagt, es gibt Komponenten anderer Hersteller, welche sowas besser können, ohne zu "ruckeln".

fisipjm 31. Jul 2018 06:33

AW: Suchfeld über Stringliste (oder ähnliches) mit anzeige von 5 Vorschlägen
 
Zitat:

Zitat von himitsu (Beitrag 1409130)
Zitat:

Ich habe keine Riesen Datenmenge, ich habe immer 5 Einträge Maximal.
5 Werte aus einer größeren Datenmenge. :zwinker:

Ja, ne, also Onchange nimmt den aktuellen inhalt meines Feldes und wirft diesen via REST Client an einen Dienst, dann bekomm ich 5 Werte zurück die Schmeis ich in die Combobox. Also muss ICH mich nicht um die große Datenmenge kümmern, das macht freundlicherweise schon der Externe Dienst für mich :thumb:

Zitat:

z.B. bei Devexpress gibt es nicht nur Text und ItemIndex, sonder auch noch paar Abwandlungen wie CurText und CurItemIndex, und wenn man dann auch noch ImediatePost auf False setzt, dann kann man im DropDown navigieren, bekommt im OnChange die aktuelle Selection (Current) und erst beim Schließen des DropDown (Enter, Klick, ...) wird die Auswahl "richtig" übernommen.


Und wie gesagt, es gibt Komponenten anderer Hersteller, welche sowas besser können, ohne zu "ruckeln".
Ja super cool, aber 600 Dollores? Klar ist ja mehr mit drin und den Preis bestimmt wert, aber ich benötige wirklich nur diese eine Komponente. Habt ihr noch erfahrungen mit anderen Komponenten?

KodeZwerg 31. Jul 2018 06:49

AW: Suchfeld über Stringliste (oder ähnliches) mit anzeige von 5 Vorschlägen
 
Zitat:

Zitat von fisipjm (Beitrag 1409124)
Das einzige was ich gerne hätte, wäre eine Art Combobox die mir nicht den Mauszeiger tötet wenn dropdown auf true setze und sich dynamisch anpasst wenn ich weitere Buchstaben eintippe.

Öhmmm... ? Entweder man tippt = Maus wird ausgeblendet oder man machts gleich über Maus, beides gleichzeitig kann irgendwie nicht klappen, meinst Du nicht auch?

Uwe Raabe 31. Jul 2018 08:22

AW: Suchfeld über Stringliste (oder ähnliches) mit anzeige von 5 Vorschlägen
 
Zitat:

Zitat von freejay (Beitrag 1409128)
Wenn Dein eingegebener Suchbegriff immer der Anfang(!) des gesuchten Begriffes ist, kannst Du einfach eine TComboBoxEx nehmen und dort die AutoCompleteOption acoAutoSuggest aktivieren.

Also, ich habe das auch so verstanden, daß dies genau die Anforderung erfüllt. Entweder liegen wir beide daneben oder es hat noch keiner probiert.

Raible 31. Jul 2018 15:47

AW: Suchfeld über Stringliste (oder ähnliches) mit anzeige von 5 Vorschlägen
 
Hallo,

ich bin nicht sicher ob es Deinen Anforderungen entspricht, aber
ich habe mal etwas in der Art von Hand Programmiert.

Das Ganze bestand aus einer Eingabe, und einer separaten Auswahl Komponente.
z.B.: TEdit und TList.

Die TList ist dabei zunächst ausgeblendet. Nach Eingabe von Suchtext zeige
ich die TList programmgesteuert an. Der Focus bleibt aber zunächst beim TEdit.
Bei weiterer Eingabe im TEdit passe ich die Einträge der TList an.
Mit "Pfeil Ab" wechsle ich dann den Focus zur TList, und steuere dessen Verhalten
nach eigenen Wünschen. Mit "Pfeil Auf" kann man auch wieder den Focus zum TEdit Wechseln.

Dadurch dass ich zwei separaten Komponenten verwende kann ich deren Verhalten gezielt steuern.

Allerdings hat es mich einige graue Haare gekostet, bis das wirklich robust lief.

Gruß
Martin


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