![]() |
Autocompletion bei DBEdit ?
hallo,
wie funktioniert Autocompletion bei einen DBEDIT ? mfg vader |
Re: Autocompletion bei DBEdit ?
Selbst implementieren, oder eine DBEdit-Komponente suchen,in der das schon implementiert ist.
|
Re: Autocompletion bei DBEdit ?
wie geht das selbst implementieren ??
mfg vader |
Re: Autocompletion bei DBEdit ?
Du mußt ein Event-handler schreiben, der bei einer Eingabe in den Edit, den Inhalt mit einer Liste vergleicht.
|
Re: Autocompletion bei DBEdit ?
das klingt ziemlich schwierig oder ?
können die DBEdits bei den Jedi's das von selbst ? mfg vader |
Re: Autocompletion bei DBEdit ?
So zb: (Ohne garantie auf fehler is jez mal so hingetippt
Delphi-Quellcode:
*nachcodelibmanagernschrei* ;)
procedure TForm8.Edit1Change(Sender: TObject);
var i, OldLength: Integer; begin if Edit1.Text='' then exit; for i := 0 to Liste.Count-1 do begin if copy(Liste.Items[i], 1, Length(Edit1.Text))=Edit1.Text then begin OldLength:=Length(Edit1.Text); Edit1.Text:=Liste.Items[i]; Edit1.SelStart:=OldLength; Edit1.SelLength:=Length(Edit1.Text); exit; end; end; end; |
Re: Autocompletion bei DBEdit ?
Hai inherited,
mal zwei Anmerkungen zu deinem Code ;-) a) Man sollte in solchen fällen nie den Komponentennamen hardcoden sondern den Sender auswerten b) Du hast ein OnChange Ereigniss in dem Du den Inhalt des Edits änderst. Was passiert also? Das OnChange ruft sich wieder selber auf. |
Re: Autocompletion bei DBEdit ?
Zitat:
b: oh, ich verbesser es nomma ändern |
Re: Autocompletion bei DBEdit ?
hallo inherited
dein code interessiert mich
Delphi-Quellcode:
procedure TForm8.Edit1Change(Sender: TObject);
var i, OldLength: Integer; begin if Edit1.Text='' then exit; for i := 0 to Liste.Count-1 do begin if copy(Liste.Items[i], 1, Length(Edit1.Text))=Edit1.Text then begin OldLength:=Length(Edit1.Text); Edit1.Text:=Liste.Items[i]; Edit1.SelStart:=OldLength; Edit1.SelLength:=Length(Edit1.Text); exit; end; end; end; sharky schreibt: Zitat:
wie muß ich diesen code ändern was sharky meint, komme nicht drauf `? mfg vader |
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Datenbanken" nach "VCL / WinForms / Controls" verschoben.
In diesem Fall hat es ja eigentlich nichts mit Datenbanken zu tun. |
Re: Autocompletion bei DBEdit ?
Die enfachste möglichkeit die mir grad einfällt ist das onchange-ereignis vor dem gewollten ändern audf eine leere procedur zu sezten und anschließend wieder zurück
|
Re: Autocompletion bei DBEdit ?
Zitat:
|
Re: Autocompletion bei DBEdit ?
hallo jbg
die TJvLookupAutoComplete komponente hift mi aber nichts in delphi personal 2005 weil ich dort keine datenbankkomponenten habe so wie in delphi enterprise ! kann man den code con inherited nicht irgendwie hinbekommen das das funktioniert ? das ich in meinem dbedit changeereigniss eine liste hinterlegen kann ? mfg vader |
Re: Autocompletion bei DBEdit ?
Du hast in Delphi Personal 2005 auch kein DBEdit aus dem von Dir genannten Grund.
Jetzt erklär erst mal genau, was Du womit wofür erreichen willst. |
Re: Autocompletion bei DBEdit ?
Delphi-Quellcode:
SO par example
type
TForm8 = class(TForm) Edit1: TEdit; Liste: TListBox; procedure Edit1Change(Sender: TObject); procedure towel(Sender: TObject); [...] implementation {$R *.dfm} procedure TForm8.towel(Sender: TObject); begin ; end; procedure TForm8.Edit1Change(Sender: TObject); var i, OldLength: Integer; begin if Edit1.Text='' then exit; for i := 0 to Liste.Count-1 do begin if copy(Liste.Items[i], 1, Length(Edit1.Text))=Edit1.Text then begin Edit1.OnChange:=towel; OldLength:=Length(Edit1.Text); Edit1.Text:=Liste.Items[i]; Edit1.SelStart:=OldLength; Edit1.SelLength:=Length(Edit1.Text); Edit1.OnChange:=Edit1Change; exit; end; end; end; |
Re: Autocompletion bei DBEdit ?
hallo inherited
dein code funzt, aber nur bei einen normalen TEdit, ich brauche das aber bei einen DBEdit was ja schon der titel des treads sagt ! hab das bei DBEdit probiert, da rührt sich gar nichts, es läßt mich überhaupt nichts mehr eintragen ??? mfg vader |
Re: Autocompletion bei DBEdit ?
Im Zeifelsfall mußt du halt einen normalen edit nehmen und die Werte dann manuell in den Query schreiben.
|
Re: Autocompletion bei DBEdit ?
Ja, aber wenn Du es doch gar nicht in Delphi 2005 Personal machen willst, warum nimmst Du nicht dann die vorgeschlagene JVCL? Was bekomme ich hier nicht mit?
|
Re: Autocompletion bei DBEdit ?
hallo
rwachtel schreibt : Zitat:
ich habe aber meine datenbanken auf Delphi6 Enterprise programmiert ! mkinzler schreibt : Zitat:
mfg vader |
Re: Autocompletion bei DBEdit ?
Delphi-Quellcode:
Query.FieldByName('<Feldname>').Value := Edit.Text;
|
Re: Autocompletion bei DBEdit ?
hallo mkinzler
Delphi-Quellcode:
mein Feldname in der tabelle Lager heißt Firma, aber wenn ich den code ausführe kommt die fehlermeldung
Query.FieldByName('<Firma>').Value := Edit.Text;
" query1 das feld <Firma> wurde nicht gefunden " ? mfg vader |
Re: Autocompletion bei DBEdit ?
Die <> weglassen.
|
Re: Autocompletion bei DBEdit ?
ja, aber er schreibt mir nichts in meine tabelle in das feld Firma, mit deinen code ?
ich verstehe das sowieso nicht ich habe ja keine verbindung vom edit zur tabelle was ich sonst mit dataource und datafield habe ??? wo schreibe ich überhaupt deinen code rein, in welches ereigniss? mfg vader |
Re: Autocompletion bei DBEdit ?
Am besten in Query.BeforePost
|
Re: Autocompletion bei DBEdit ?
nein geht nicht, er schreibt nichts rein in das tabellenfeld "Firma" mit dem ereigniss Query.BeforePost ?
mfg vader |
Re: Autocompletion bei DBEdit ?
Das Ereignis schreibt auch nichts, sondern wird beim Schreiben aufgerufen und setzt dann den Feldwert.
|
Re: Autocompletion bei DBEdit ?
falsch formuliert , dein code in Query.BeforePost tut es aber nicht !
mfg vader |
Re: Autocompletion bei DBEdit ?
Dann trage es doch direkt vor dem
Delphi-Quellcode:
ein.
Query.Post;
|
Re: Autocompletion bei DBEdit ?
geht auch nicht !
mfg vader |
Re: Autocompletion bei DBEdit ?
Guten Morgen, Vader.
Unabhängig von deinen Lernübungen möchte ich auf etwas hinweisen, was dir vielleicht noch nicht sofort klar wird, aber woran du dich im richtigen Augenblick hoffentlich erinnern wirst. AutoComplete in Verbindung mit einem DBEdit ist so ziemlich das letzte was man braucht. Abstrakt löst man das eleganter mit einer DBComboBox, der man dann auch die Items mitgeben kann, gegen die geprüft werden soll. Besser ist allerdings der Einsatz von DBLookupComboBox, denn die mehrfache Eingabe eines Strings aus einer Vorratsliste sollte schon beim Datenmodellentwurf durch einen Normalisierungsschritt ausgeschlossen worden sein. Grüße vom marabu |
Re: Autocompletion bei DBEdit ?
hallo
mit DBLookupComboBox hab ich es eh gemacht und funktioniert, aber meine suchabfrage funktioniert nicht mehr darum wollte ich auf eine einfache weise so eine Autocompletion erreichen ohne meine ganze datenbank umzustricken ! mfg vader |
Re: Autocompletion bei DBEdit ?
hallo,
mir geht der code von mkinzler nicht aus dem kopf,aber funzt nicht,ist der überhaupt möglich ??
Delphi-Quellcode:
Query.FieldByName('Feldname').Value := Edit.Text;
mfg vader |
Re: Autocompletion bei DBEdit ?
Sicher funktioniert der Code, wenn du ihn an deine Verhältnisse anpasst.
Welche Fehlermeldung erhältst du denn? Grüße vom marabu |
Re: Autocompletion bei DBEdit ?
es kommt kein fehler, habe den code so rein geschrieben
Delphi-Quellcode:
aber es wird der wert in die tabelle nicht abgespeichert !
procedure TForm1.Button2Click(Sender: TObject);
begin Query1.FieldByName('Firma').Value := Edit1.Text; query1.post; end; mfg vader |
Re: Autocompletion bei DBEdit ?
Hast du die Query1 vorher irgendwann in den Edit-Modus versetzt?
Delphi-Quellcode:
marabu
procedure TForm1.Button2Click(Sender: TObject);
begin with Query1 do begin Edit; FieldByName('Firma').Value := Edit1.Text; post; end; end; |
Re: Autocompletion bei DBEdit ?
ja das war es danke , jetzt funktioniert es !!!
mfg vader |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 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