سلام و درود خدمت کاربران ایران دلفی.
یک از دوستان درخواست کدی جهت جستجوی پیشرفته در ComboBox در دلفی رو داشتند که لازم دونستم کد رو در اختیار کل کاربران قرار بدم .
اگه دوستان کد بهتری سراغ دارند در ذیل همین پست قرارش بدن.
موفق و موید باشید.

[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
اینم کد یونیت مورد نظر جهت دوستان

کد:

کد:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    procedure ComboBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ComboBox1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  fLastKey:word;
  fsearchkeys:string;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
fLastKey := Key;

end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
  SearchStr: string;
  i,retVal,FoundIndex: integer;
  ctrl:TComboBox;
begin
  if fLastKey=VK_BACK then
       exit;

  // copy search pattern
  ctrl := (Sender as TCombobox);
  SearchStr := UpperCase(ctrl.Text);
  FoundIndex := -1;
  if SearchStr<>&quot;&quot; then
  for i := 0 to ctrl.Items.Count-1 do begin
    if Pos(SearchStr, UpperCase(ctrl.Items))>0 then
    begin
       FoundIndex := i;
       fsearchkeys := ctrl.Text;
       break;
    end;
  end;

  if (FoundIndex>=0) then
  begin
    retVal := ctrl.Perform(CB_SELECTSTRING, 0, LongInt(PChar(ctrl.Items[FoundIndex]))) ;

    if retVal > CB_Err then
    begin
    

      ctrl.ItemIndex := retVal;
      ctrl.SelStart := Pos(SearchStr,UpperCase(ctrl.Text))+Length(SearchStr)-1;
      ctrl.SelLength := (Length(ctrl.Text) - Length(SearchStr));


    end; // retVal > CB_Err

  end; // lastKey <> VK_BACK


end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.AutoComplete := false;
loadkeyboardlayout(&quot;00000429&quot;,1);

end;

end.