DBGrid im editor einer zelle selstart und sellength

Rund um die LCL und andere Komponenten
Antworten
slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

DBGrid im editor einer zelle selstart und sellength

Beitrag von slai »

Hallo zusammen

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;
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

DiBo33
Beiträge: 334
Registriert: Do 11. Okt 2007, 18:01

Re: DBGrid im editor einer zelle selstart und sellength

Beitrag von DiBo33 »

Has du mal versucht statt nach TWinControl nach TDBEdit oder TEdit zu casten, dann hättest du die benötigten Eigenschaften.

Benutzeravatar
theo
Beiträge: 10904
Registriert: Mo 11. Sep 2006, 19:01

Re: DBGrid im editor einer zelle selstart und sellength

Beitrag von theo »

Bei StringGrid müsste es so gehen, ich weiss aber nicht ob das bei DBGrid auch klappt:

TStringCellEditor(TStringGrid(Sender).Editor).SelStart:=1;
TStringCellEditor(TStringGrid(Sender).Editor).SelLength:=0;

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

Re: DBGrid im editor einer zelle selstart und sellength

Beitrag von slai »

Danke für die Tipps,

Mit dem casting zu TEdit funktionierts hervorragend. Manchmal versucht man die einfachsten dinge nicht :-)
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Antworten