Bin wieder einmal mit dem DBGrid am rumspielen, jetzt möchte ich wenn ein neuer Eintrag in einer column gemacht wird, eine
art autovervollständigung implementieren, das heist alle vorherigen Einträge werden per sql abgefragt und der oberste match
angezeigt.
Das funktioniert auch bisher, das problem ist, das ich bei einem TWinControl kein selStart und selLength habe, sodass man auch normal weiterschreiben kann.
Kann mir da jemand helfen wie man das lösen könnte?
Onkeyup methode des editors der zelle
Code: Alles auswählen
procedure TFrmFibu.DBGEditorKeyUP(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
tempquery : TZQuery;
stempString : String;
begin
if TWinControl(Sender).Caption <> '' then begin
stempString:= TWinControl(Sender).Caption;
tempquery := TZQuery.Create(nil);
tempquery.Connection := DBDataMod.ZCDB;
tempquery.SQL.Clear;
tempquery.SQL.Add('Select FIRST 1 SBUCHUNGSTEXT From BU_FIBU_BUTRANSAKTIONEN where LOWER(SBUCHUNGSTEXT) like '''+LowerCase(stempString)+'%''');
tempquery.Open;
TWinControl(Sender).Caption:=tempquery.FieldByName('SBUCHUNGSTEXT').AsString;
//Hier müsste sel start und sel length des textes stehen.
tempquery.Close;
tempquery.Free;
end;
end;