PDA

View Full Version : مشکل با کامبوباکس در دلفی 7



Rahyar
دوشنبه 16 شهریور 1388, 23:38 عصر
با سلام به اساتید.
من در دلفی 7 میخوام در یک ComboBoxEX در حالت اجرا فقط یکی از آیتم های دلخواه اون رو حذف کنم. برای اینکار از دیلیت استفاده کردم. ولی مشکلی که پیش میاد وقتی بجای ایندکس دستور دیلیت عدد صفر و یا یک رو میذارم یه جورایی قاطی میکنه و بیشتر از یک آیتم رو حذف میکنه و بدتر اینکه دیگه نمیشه در ادامه کارهیچ آیتمی رو به کامبوباکس اضافه کرد. نمیدونم مشکل چیه؟
برای اینکه بهتر متوجه بشین یک نمونه از اون چیزی که مورد نظرم هست رو گذاشتم.
خواهشاً یک نگاه بهش بندازید و بگین مشکل از کجاست.
با تشکر

Felony
سه شنبه 17 شهریور 1388, 09:06 صبح
ComboBoxEx1.Items.Delete(StrToInt(Edit1.Text));

Saeed_m_Farid
سه شنبه 17 شهریور 1388, 09:57 صبح
همین ComboBoxEx1.ItemsEx.Delete هم موردی نداشت، من که متوجه نشدم چی قاطی میکنه؟ در ادامه هم هر آیتمی میشه اضافه کرد!

Rahyar
سه شنبه 17 شهریور 1388, 11:34 صبح
ممنون از راهنمای های دوستان.
قاطی کردنی که گفتم اینه که مثلاً من توی لیست کامبوباکس 4تا اسم دارم
محسن
رضا
علی
حسام
حالا دستور
ComboBoxEx1.Items.Delete(StrToInt(Edit1.Text));
رو که توی ادیت باکسش نوشته 1 اجرا میکنم،قاعدتا باید ایندکس شماره یک کامبوباکس یعنی رضا حذف بشه درسته؟
خوب وقتی اجرا میکنم فقط اسامی
محسن
حسام
توی لیست باقی میمونه! یعنی ایندکسهای 1و2 با هم حذف میشن.
وبدتر اینکه اگر بعدش باتن add رو بزنم هیچ آیتمی دیگه به لیست اضافه نمیشه!

اگر ممکنه این رو توضیح بدین که چرا اینطوری میشه؟!
ضمناً توی دلفی 7 دارم کارم رو میسازم و یکی دو روز پیش هم دوباره نصبش کردم گفتم شاید از دلفی باشه که ظاهراً فرقی نکرد.

جواد ملاولی
سه شنبه 17 شهریور 1388, 11:49 صبح
سلام. من این کد رو امتحان کردم-البته با دلفی 2009- و کاملا درست کار میکرد. احتمالا یه جای دیگه از کدت یه چیزی نوشتی که اذیتت می کنه. اگه خواستی این تیکه از برنامه ات رو بذار اینجا تا بررسی کنیم.

Saeed_m_Farid
سه شنبه 17 شهریور 1388, 11:53 صبح
... دستور
ComboBoxEx1.Items.Delete(StrToInt(Edit1.Text));
رو که توی ادیت باکسش نوشته 1 اجرا میکنم،قاعدتا باید ایندکس شماره یک کامبوباکس یعنی رضا حذف بشه درسته؟
خوب وقتی اجرا میکنم فقط اسامی
محسن
حسام
توی لیست باقی میمونه! یعنی ایندکسهای 1و2 با هم حذف میشن.
وبدتر اینکه اگر بعدش باتن add رو بزنم هیچ آیتمی دیگه به لیست اضافه نمیشه!

دقیقاً "ایندکس شماره یک کامبوباکس یعنی رضا حذف" میشه، و
محسن
علی
حسام
باقی میمونه و اگر بعدش باتن add رو بزنم آیتم به لیست اضافه میشه!

برای من که اینطوریه و دقیقاً هم با همون دلفی 7 تست کردم...
موفق باشید.

Rahyar
سه شنبه 17 شهریور 1388, 13:00 عصر
جالبه پس از چی میتونه باشه؟
من سرویس پک 3 ایکس پی رو دارم استفاده میکنم.میشه بگین شما روی چی تست کردین؟

جواد ملاولی
سه شنبه 17 شهریور 1388, 13:53 عصر
جالبه پس از چی میتونه باشه؟
من سرویس پک 3 ایکس پی رو دارم استفاده میکنم.میشه بگین شما روی چی تست کردین؟
من روی سرویس پک 2 امتحان کردم ولی مشکل شما ربطی به این موضوع نداره.

Saeed_m_Farid
سه شنبه 17 شهریور 1388, 15:30 عصر
جالبه پس از چی میتونه باشه؟
...
آره جالبه، فایل exe کامپایل شده برنامه تست شما رو attach کردم، ببینین بازم اونطوریه؟ شاید ما منظور شما رو متوجه نمی شیم!

Rahyar
سه شنبه 17 شهریور 1388, 19:12 عصر
من روی سرویس پک 2 امتحان کردم ولی مشکل شما ربطی به این موضوع نداره.

فکر کنم همینطوره که میگین چون فایل اگزه همین مثالی که گذاشتم رو توی ویندوز 7 هم امتحان کردم درست کار نمیکرد.



آره جالبه، فایل exe کامپایل شده برنامه تست شما رو attach کردم، ببینین بازم اونطوریه؟ شاید ما منظور شما رو متوجه نمی شیم!


ممنون از شما سعید عزیز! فایلی که گذاشتی درست کار میکرد.فقط فونتهای اون همه بشکل علامت سئوال بود. ضمناً این رو با دلفی 7 کامپایل کردین دیگه؟؟؟

منم برای اینکه معلوم بشه مشکل از کجاست همین کامپایل شده همین مثال رو میذارم و شما لطفاً تست کنید ببینید اون مشکل رو داره یا نه؟

خواهشاً دوستان و اساتید انجمن کمک کنند که یکی دو روزه گیر همین مورد هستم.و امروز دوبار دلفی رو کلاً پاک کردم و دوباره نصب کردمولی هنوز برطرف نشده.

Rahyar
پنج شنبه 19 شهریور 1388, 16:50 عصر
با عرض معذرت.
مدیران گرامی انجمن لطفاً راهنمایی کنند تا مشکل من حل بشه!

جواد ملاولی
پنج شنبه 19 شهریور 1388, 17:11 عصر
منم برای اینکه معلوم بشه مشکل از کجاست همین کامپایل شده همین مثال رو میذارم و شما لطفاً تست کنید ببینید اون مشکل رو داره یا نه؟
پسر خوب! شما که فقط فایل اجرایی رو گذاشتی؟ سورس رو هم بذار

Rahyar
جمعه 20 شهریور 1388, 00:15 صبح
سورس توی همون پست اولی بود دیگه آقا جواد!

جواد ملاولی
جمعه 20 شهریور 1388, 04:14 صبح
سورس توی همون پست اولی بود دیگه آقا جواد!
شرمنده اخلاق برنامه نویسی...
سورس شما هم کاملا درست کار می کنه. البته با دلفی 2009 و ویندوز xp امتحان کردم.
هنوز باهاش مشکل داری؟ منظورم اینه که در سیستم شما هنوز قاطی داره؟

Dark_Knight
جمعه 20 شهریور 1388, 05:42 صبح
مشکل شما استفاده از کامپوننت ComboBoxEx هست. عمل حذف و اضافه درست انجام میشه اما همونطور که در راهنمای دلفی نوشته شده ComboBoxEx بر خلاف ComboBox ویژگی Owner drawn items رو نداره و در نتیجه تغییرات رو نشون نمیده.

Rahyar
جمعه 20 شهریور 1388, 12:03 عصر
هنوز باهاش مشکل داری؟ منظورم اینه که در سیستم شما هنوز قاطی داره؟

بله. هر چی مثال با دلفی 7 میسازم همینطوری از آب درمیاد و کامپایل شده اش خراب کار میکنه! اما سورسش رو که توی دلفی 2009 باز میکنم و کامپایل میکنم درست و بی عیب کار میکنه!
توی این کامپایل شدنش یه اتفاقی میافته که دو تا دو تا آیتمها دیلیت میشن و تمام کاسه کوزه ها بهم میریزه.


مشکل شما استفاده از کامپوننت ComboBoxEx هست. عمل حذف و اضافه درست انجام میشه اما همونطور که در راهنمای دلفی نوشته شده ComboBoxEx بر خلاف ComboBox ویژگی Owner drawn items رو نداره و در نتیجه تغییرات رو نشون نمیده.

یعنی میگین مشکل از خود دلفی 7 هست؟
ولی با همه این حرفها بعضی دوستان همین سورس من رو با دلفی 7 امتحان کردند و درست جواب میداد.نمونه کامپایل شده اش رو هم توی صفحه قبل هست.
به همین خاطر من فکر کردم دلفی من خرابه و چند بار اونو پاک کردم و نصب مجدد کردم ولی فایده نداره!

Dark_Knight
جمعه 20 شهریور 1388, 13:17 عصر
من کد شما رو با دلفی 7 تست کردم و همین مشکل رو داشت. شما اگر بعد از هر حذف یا اضافه توی یک لیست باکس Caption آیتمها رو نشون بدید یا Count رو در یک لیبل ، خواهید دید آیتمها درست حذف و اضافه میشوند. اگر عمل حذف از آخر لیست انجام بشه هم مشکلی پیش نمیاد. به این قسمت از راهنمای دلفی راجع به TComboBoxEx توجه کنید:


TComboBoxEx provides greater support of items than the TComboBox control, but omits certain features as well (owner-drawn items, sorting of list items, and so on

از یک کامبوباکس معمولی استفاده کنید خب!

Rahyar
جمعه 20 شهریور 1388, 23:21 عصر
از یک کامبوباکس معمولی استفاده کنید خب!

دلیل اصلی استفاده ام امکان استفاده از آیکون و عکس در کنار آیتم ها بود.
وگرنه خودم با کامبوباکس معمولی امتحان کرده بودم و دیدم که درست کار میکنه.


شما اگر بعد از هر حذف یا اضافه توی یک لیست باکس Caption آیتمها رو نشون بدید یا Count رو در یک لیبل ، خواهید دید آیتمها درست حذف و اضافه میشوند

میشه لطف کنید و همین نمونه را با این روشی که میگین تصحیحش کنید . تشکر میکنم

Dark_Knight
یک شنبه 22 شهریور 1388, 02:51 صبح
اشتباه متوجه شدید، این چیزی که من گفتم مشکل شما رو حل نمیکنه فقط تست اینه که ببینید آیتمها درست از لیست حذف و اضافه میشوند ولی ComboBoxEx اینو نشون نمیده یک لیبل و یک لیست باکس بذارید رو فرم و رویه زیر رو بعد از حذف یا اضافه صدا بزنید:


procedure test;
var
i:integer;
begin
listbox1.Items.clear;
label1.caption := IntToStr(ComboBoxEx1.ItemsEx.Count);
for i:=0 to ComboBoxEx1.ItemsEx.Count -1 do
listbox1.Items.Add(ComboBoxEx1.ItemsEx.ComboItems[i].Caption);

دنبال کامپوننت دیگری باشید که این مشکل رو نداشته باشه.