PDA

View Full Version : سوال: مشکل در combobox



ahmad_v_66
پنج شنبه 06 اردیبهشت 1397, 11:24 صبح
با سلام و احترام
خاصیت ابتدایی combobox اینه که اول کلمات رو سرچ می کنه
اما اگه بخواهیم از وسط چیزی رو جستجو کنیم باید چه کاری انجام بدیم ؟
مثلا در combobox چند تا ایتم داریم مثل مرتضی بهادری اصل - احمد خلیلی مراد -مهندس رضا جلیلی و ....
اگه بخواهیم دنبال کلمات وسط جستجو کنیم باید چه کاری انجام بدهیم ؟؟؟
با تشکر

ahmad_v_66
پنج شنبه 06 اردیبهشت 1397, 18:06 عصر
دوستان یکی نیست جواب منو بده
ممنون میشم کمکم کنید
واقعا گیرم

persia_hrn
شنبه 08 اردیبهشت 1397, 13:14 عصر
سلام ، شما اگر فقط بخواید جستجو کنید که یه متنی توی لیست ComboBox هست یا نه میتونید با دستور POS این کار رو انجام بدین .

یه توضیحی بدید که وقتی یک کلمه ای رو جستجو میکنید ( از هر قسمت از متن توی لیست ComboBox ) بعد میخواین چه اتفاقی بیافته تا بشه بیشتر راهنمایی کرد !

ahmad_v_66
یک شنبه 09 اردیبهشت 1397, 21:36 عصر
دستور pos ؟؟؟؟
این چه زوری کار میکنه ؟؟؟؟؟
و منظورم اینه که مثلا اگه چند تا item جند کلمه ای باشه و دنبال کلمه وسطی و یا آخری باشیم بتونه
پیدا کنه .
حالت یش فرض combocox اینه که از کلمه اولب شروع ب جیتجو می کنه ؟؟؟؟
مثلا اگه در item ها اینطوری باشه
محمد امین وحیدی
کمال الدین کریمی
محمد رضا خالدی و ...
و ما دنبال کلمه کریمی و یا وحیدی و یا رضا باشیم در combobox جستجو نمیشه و همیشه کلمه اول رو جستجو میکنه
ممنون

persia_hrn
دوشنبه 10 اردیبهشت 1397, 07:37 صبح
سلام ، کد زیر رو ببین :

procedure TForm1.ComboBox1Change(Sender: TObject);
var
Loop: Cardinal;
begin
ListBox1.Clear;
For Loop:=0 to ComboBox1.Items.Count-1 do
if Pos(ComboBox1.Text,ComboBox1.Items.Strings[Loop])<>0 then
ListBox1.Items.Append(ComboBox1.Items.Strings[Loop]);
end;

یه ComboBox و یه ListBox توی فرم بذار و توی رویداد OnChange کومبوباکست کد بالا رو بنویس

ahmad_v_66
چهارشنبه 12 اردیبهشت 1397, 01:57 صبح
ممنون دوست عزیز و گرامی
کد شما کار رو راه میندازه اما من جایی برای listbox ندارم
من می خوام تو خود combobox این اتفاق بیفته . من به جای listbox از edit هم استفاده کردم و کد شما جواب داد اما برای خود combobx جواب نمیده
با این حال بازم از شما ممنون و سپاس گذارم

persia_hrn
یک شنبه 16 اردیبهشت 1397, 12:27 عصر
سلام دوست عزیز , ببخشید دیر جواب دادم


var
Form1: TForm1;
FCheck: Boolean;
TempList: TStringList;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
FCheck:=True;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
Loop: Cardinal;
TempText: String;
begin
if FCheck=True then
begin
TempList := TStringList.Create;
For Loop:=0 to ComboBox1.Items.Count-1 do
TempList.Append(ComboBox1.Items.Strings[Loop]);
end;
ComboBox1.Items.Clear;
ComboBox1.DroppedDown:=False;
For Loop:=0 to TempList.Count-1 do
if Pos(ComboBox1.Text,TempList.Strings[Loop])<>0 then
ComboBox1.Items.Append(TempList.Strings[Loop]);
FCheck:=False;
TempText:=ComboBox1.Text;
if TempText<>'' then
begin
ComboBox1.DroppedDown:=True;
ComboBox1.Text:=TempText;
ComboBox1.SelStart:=Length(ComboBox1.Text);
end;
end;

خدمت شما

فقط یه ComboBox بذار روی فرم