Stephen
This is what I use, based on some useful code from someone else in the
group.
There may me more elegant solutions around.
procedure TMainForm.DocEntryCBEnter(Sender: TObject);
begin
GS := '';
GCOUNT := 0;
TComboBox(Sender).ItemIndex := 0;
end;
procedure TMainForm.DocEntryCBKeyPress(Sender: TObject; var Key: Char);
begin
AutoMatch(TComboBox(Sender), Key);
end;
procedure AutoMatch(cbo: TComboBox; var keyascii: char);
var
sbuffer: pchar;
s: string;
retval: longint;
begin
getmem(sbuffer, 255);
if Keyascii = #8 then
begin
dec(GCOUNT);
s := copy(GS, 1, GCOUNT);
end
else
s := copy(GS, 1, GCOUNT) + (Keyascii);
try
strpcopy(sbuffer, s);
retval := sendmessage(cbo.Handle, CB_FINDSTRING, word(-1),
longint(sbuffer));
if retval <> CB_ERR then
begin
cbo.ItemIndex := Retval;
GS := cbo.Text;
Inc(GCOUNT);
Keyascii := chr(0);
end
else
begin
messagebeep(0);
cbo.Text := GS;
end;
finally
freemem(sbuffer, 255);
end;
end;
Mark
----- Original Message -----
From: "Stephen Barker" <[EMAIL PROTECTED]>
To: "Multiple recipients of list delphi" <[EMAIL PROTECTED]>
Sent: Tuesday, May 22, 2001 8:42 PM
Subject: [DUG]: TComboBox keys
> Hi,
>
> does anyone know how to make a TComboBox do incremental searching?
>
> by default it only seems to search on the first character.
>
> I tried concatenating key values and setting the itemindex to the correct
> item, but the default behaviour still takes over.
>
> in the keydown event I have:
>
> procedure TfrmMain.cboProjectKeyDown(Sender: TObject; var Key: Word;
> Shift: TShiftState);
> var
> i : integer;
> begin
> if (Key >= ord('0')) and (Key <= ord('9')) then begin
> ProjKey := ProjKey + chr(Key);
> i := 0;
> while (i < cboProject.Items.Count) and
> (copy(cboProject.Items[i],1,length(ProjKey)) <> ProjKey) do
> inc(i);
> // i := cboProject.Items.IndexOf(ProjKey);
> if i = cboProject.Items.Count then i := 0;
> cboProject.ItemIndex := i;
> Key := 0;
> end;
> end;
>
> thanks,
> Steve
> --------------------------------------------------------------------------
-
> New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
> Website: http://www.delphi.org.nz
> To UnSub, send email to: [EMAIL PROTECTED]
> with body of "unsubscribe delphi"
>
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"