Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
Delphi 8 Architect
|
Re: Ähnliche Datensätze in TDataSet finden
18. Dez 2003, 15:45
Wenn Du nicht Filtern möchtest, könntest Du es in etwa so machen
Delphi-Quellcode:
procedure DeinForm.DeinDbGridKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key = 83) and (ssCtrl in Shift) then begin // Ctrl+S - wie Suchen
Key := 0;
DeinEdit.SetFocus;
end;
end;
procedure DeinForm.DeinEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
LenSearch : Integer;
DerAusgangsPunkt : TBookmark;
Gefunden : Boolean;
begin
if (Key in [VK_RETURN,VK_ESCAPE]) then FlbxList.SetFocus
DeinEdit.Color := clWindows; // Farbe normalisieren
DeinEdit.Text := ''; // Suchtext löschen
DeinDbGrid.SetFocus; // Suchedit verlassen und ins Grid springen
else begin
if Key in [8,13,33..40,45..46,65..90,186,192,219,222] then begin // Gültige bzw. suchbare Buchstaben
LenSearch := length(DeinEdit.Text);
Gefunden := False;
if LenSearch > 0 then begin
DerAusgangsPunkt := DeinDataSet.GetBookmark;
DeinDataSet.DisableControls; // Es soll ja nicht Flimmern nicht wahr?
DeinEdit.Color := $00CECEFF; // SuchEdit leicht rot färben
Gefunden := False;
DeinDataSet.First;
While not DeinDataSet.Eof do begin
if (copy(DeinDataSet.FieldByName('DeinSuchFeld').AsString,1,LenSearch) = DeinEdit.Text)
then begin
Gefunden := True;
Break;
end;
DeinDataSet.Next;
end;
end;
if Gefunden then begin
DeinEdit.Color := $00CEFFCE; // Edit leicht grün (Erfolg)
end else begin
DeinEdit.Color := $00CECEFF; // Edit leicht rot (Mißerfolg)
DeinDataSet.GotoBookmark(DerAusgangsPunkt);
end;
DeinDataSet.EnableControls;
FreeAndNil(DerAusgangsPunkt);
end;
end;
end;
Mann - bin ich wieder nett heute - na ja - bald ist Weihnachten
Gruß
Tim Leuschner Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
|