سلام به همگی . اکر دوست داشتید این رو هم آزمایش کنید
فقط کافیست که جزپی از کلمه مورد نظر را چه از ابتدا و چه از میانه کلمه رادرEdit Box تایپ کنیدودر ListBoxنتیجه را مشاهده کنید . منتظر پیشنهادهای بهتر شما عزیزان هستم ..... :)

Function ZipStr(Str:String):String;
var Str1:String;
TolStr:Integer;
begin
Str1:='';
For tolStr:=1 To Length(Str) Do
begin
If Str[tolStr]<>' ' Then
Str1:=Str1+Str[tolStr];
end;
ZipStr:=Str1;

End;

function SearchStrZip(Xstr,Zstr:String):Boolean ;
var int1,int2,i,t:Integer;
Xs,Zs,Str:String;
begin
Xs:=ZipStr(Xstr);
Zs:=ZipStr(Zstr);
i:=1;
If Length(Xs)<=Length(Zs) Then
begin
SearchStrZip:=False;
For int1:=1 To Length(Zs) Do
begin
Str:='';
If Xs[i]=Zs[Int1] then
Begin
i:=int1;
For Int2:=1 To Length(Xs) Do
begin
If Zs[i]=Xs[Int2] Then
Str:=Str+Xs[Int2] Else i:=0;
i:=i+1;
If Xs=Str Then SearchStrZip:=True ;
end;
end;
end;

end;

end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var MasStr:String;
i:Integer;
begin
If Edit1.Text<>'' Then
begin
i:=0;

With Table1 Do
begin
ProgressBar1.Max:=RecordCount;
DisableControls;
ListBox1.Clear;
First;
While Not Eof Do
begin
If SearchStrZip(ZipStr(Edit1.Text),ZipStr(FieldValues['Family']))=True
Then
ListBox1.Items.Add(FieldValues['Name']+'----'+FieldValues['Family']);
ProgressBar1.Position:=ProgressBar1.Position+1;
Next;
end;
EnableControls;
ProgressBar1.Position:=0;
end;
end;
end;