سلام و درود خدمت کاربران ایران دلفی.
یک از دوستان درخواست کدی جهت جستجوی پیشرفته در 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<>"" 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("00000429",1); end; end.
علاقه مندي ها (Bookmarks)