Containing text comparison.

I have this line of code:

if CompareText(sSearch, tvDatabase.Items[i].Text) = 0 then

What I want though is, any letters I type to find the closest match.
Is that possible?

Thank you.
sigalosAsked:
Who is Participating?
 
JaymolConnect With a Mentor Commented:
Have a look at the TEditSearch component on my small components site....

    http://www.geocities.com/jaymol/

You can put stuff in a TStringList property of the component and it attempts to auto complete for you.

(Source is included in the zip.)

John.
0
 
VSFCommented:
Please explain your question better and Let me know better what u want if the answer is not above.

If u want a effect just like Internet Explorer has on its Address combobox u can use this to fill your combo with the closest match as u type:
This is really cool!

procedure Tform1.Combobox1Enter(Sender: TObject);
begin
 autopreencher := true;
end;

procedure Tform1.Combobox1Change(Sender: TObject);
var
 tam,cont : integer;
begin

 if autopreencher then with (sender as Tcombobox) do
 begin
  tam := length(text);
  for cont := 0 to items.Count - 1 do
   if 0=ansicomparetext(text,copy(items.Strings[cont],1,tam)) then
   begin
    text := items.strings[cont];
    selstart := tam;
    sellength := length(text);
    break;
   end;
 end;

end;

procedure Tform1.Combobox1KeyPress(Sender: TObject; var Key: Char);
var
 prox : boolean;
begin
 with (sender as tcombobox) do
 begin
  Autopreencher := true;
  prox := false;
  case ord(key) of
   vk_return : begin
                selstart := length(text);
                sellength := 0;
                key := #0;
                DroppedDown := false;
                Prox := true;
               end;
   vk_back : Autopreencher := false;
  end;
  if (not Autopreencher) and (SelText <> '') then
  begin
    text := copy(text,1,selstart);
    selstart := length(text);
    sellength := 0;
    key := #0;
  end;
 end;
 if prox then findnextcontrol(sender as tcombobox,true,true,false).SetFocus;

end;



If U want to type in a edit and find the closest match inside a database, Sure it's possible!
U can use SQL to do the task and a Grid to show the results

With Query1 do
 begin
  close;
  sql.clear;
  sql.add('Select * from MYTABLENAME where UPPER(MYFIELDNAME) LIKE UPPER(''%'' + MYPARAMETERNAME +''%'')')
  params.parambyname('MYPARAMETERNAME'):= edit1.text;
 end;


in this SQL code the ''%'' works as a wildcard and finds any string containing the string u typed


VSF
www.enge.cjb.net
www.victory.hpg.com.br

0
 
sigalosAuthor Commented:
Sorry,
I am scanning through the nodes of a Treeview to find the best possible match with the string I will type in a EditBox.
0
Cloud Class® Course: MCSA MCSE Windows Server 2012

This course teaches how to install and configure Windows Server 2012 R2.  It is the first step on your path to becoming a Microsoft Certified Solutions Expert (MCSE).

 
TOndrejCommented:
Can you define "best possible match"?
Are there any rules as to which string matches "better" than others?
0
 
sigalosAuthor Commented:
Very Good.
By the way, I like your site.
Thank you.
0
 
JaymolCommented:
Cheers mate.

John.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.