ورود

View Full Version : سوال: انتخاب یکی از آیتم های کومبوباکس در زمان اجرا از طریق متن آیتم و تحریک رویدادChang



u.2u.4u
سه شنبه 25 آبان 1389, 20:06 عصر
با سلام و وقت بخیر خدمت همه دوستان و اساتید.
زمانی که شماره آیتم یک کومبوباکس را داریم و بخواهیم یکی از آیتم های آن را در هنگام اجرا انتخاب کنیم مشکلی نیست:

combobox.ItemIndex := nitem;
اما اگر بخواهیم با دانستن متن یکی از آیتم ها، آن آیتم را انتخاب کنیم، باید چه کار کنیم؟ برای مثال می دانیم متن آیتممان 'محمد' هست. اگر خصوصیت text کومبو را به 'محمد' تغییر دهیم، 'محمد' در کومبوباکس نمایش داده می شود اما آیتم 'محمد' انتخاب نمی شود.
در ضمن یک سوال مربوط دیگه هم دارم که چکار کنیم که زمانی هم که از طریق کد یک آیتم را انتخاب می کنیم، رویداد onchange تحریک شود؟ زمانی که از طریق کد بالا اینکار را می کنم این رویداد تحریک نمی شود.
خیلی از شما متشکرم:لبخندساده:

Felony
سه شنبه 25 آبان 1389, 21:52 عصر
برای انتخاب آیتم :
ComboBox1.ItemIndex:= ComboBox1.Items.IndexOf('Test');

در مورد سوال دومتون هم رویداد onChange زمانی عمل میکنه که آیتم به صورت فیزیکی توسط کاربر تغییر کنه ، میتونید رویداد onChange رو خودتون دستی فراخوانی کنید یا اینکه یه کلاس از TComboBox مشتق کنید و خودتون براش همچین چیزی بنویسید و از اون کلاس استفاده کنید یا اینکه تو یه تایمر بررسی کنید و وقتی متن عوض شد تشخیص بدید یا اینکه بررسی کنید ببینید زمان عوض شدن متن چه پیغامی ارسال میشه و Message Handler فرم برنامتون رو بازنویسی کنید .

u.2u.4u
سه شنبه 25 آبان 1389, 21:56 عصر
ممنون. چه جوری میشه رویداد Onchange را دستی فراخوانی کرد با توجه به اینکه پارامتر (Sender: TObject) را داره؟

Felony
سه شنبه 25 آبان 1389, 22:04 عصر
مثلا برای Combobox1 به صورت زیر :

ComboBox1Change(Sender);

u.2u.4u
چهارشنبه 26 آبان 1389, 19:09 عصر
مثلا برای Combobox1 به صورت زیر : ........
با سلام دوباره و تشکر از راهنماییهاتون. ببخشید با این روش چه جوری می تونیم به کامپوننتی که رویداد را تحریک کرده دسترسی داشته باشیم(اگر این تابع برای چندتا کامپوننت استفاده بشه) برای مثال Combobox2 , combobox3 هم برای رویداد Onchenge شون از همین روال استفاده می شه. زمانی که روال اجرا می شه چه جوری می تونیم بفهمیم توسط کدوم یکی از اینها تحریک شده؟

gogolo
چهارشنبه 26 آبان 1389, 19:39 عصر
......TComboBox(Sender).Name