PDA

View Full Version : comobox و تعریف index اختیاری



moohssenn
شنبه 16 تیر 1386, 20:42 عصر
سلام
من میخوام یک کمبو باکس رو فرمم قرار بدم . اما میخوام مقدار index مربوطه را هم خودم بدم . مثلا وقتی دارم یک مقدار به این صورت : ComboBox1.Items.Add('salam'); را به آیتمهام اضافه کنم مقدار ایندکس بازگشتی توسط این آیتمم خودم وارد کنم . مثلا برای این آیتم index برابر 4 باشه و برای آیتم بعدیم 3

Batman
یک شنبه 17 تیر 1386, 06:24 صبح
دوست عزیز وقتی خود combobox شاخص داره دیگه نیازی به تعریف کردن نیست
ثانیا برای چی چنین چیزی رو میخواین

Saeid59_m
یک شنبه 17 تیر 1386, 07:04 صبح
اگه می خواهی مقدار Index ها با یه فیلد از توی بانک ست باشه می تونی از DbComboBox‌استفاده کنی .

moohssenn
یک شنبه 17 تیر 1386, 09:55 صبح
علت این کار اینه که شاخصهام به ترتیب نیست و شایدم مثلا index 3 نداشته باشم .
میشه در مورد از DbComboBox هم بیشتر توضیح بدید ؟
مرسی از توجهتون

vcldeveloper
یک شنبه 17 تیر 1386, 19:07 عصر
ایندکس های کامبوباکس ثابت هستند. اگر می خوای با هر مقدار یک عدد دلخواه هم ذخیره کنی، می تونی از خصوصیت Object هر Item استفاده کنی. البته این خصوصیت ازت میخواد که یک TObject بهش بدی، ولی می تونی به راحتی یک مقدار Integer را بهش TypeCast کنی.

moohssenn
یک شنبه 17 تیر 1386, 20:13 عصر
جناب آقای کشاورز میشه یه مثال بزنید
ممنون

vcldeveloper
دوشنبه 18 تیر 1386, 02:29 صبح
میشه یه مثال بزنید

{Add object and text simultaneously}
ComboBox1.Items.AddObject('Test',TObject(2));
{Set object value for an existing item}
ComboBox1.Items.Objects[0] := TObject(3);
{Finding an object}
MyItem := ComboBox1.Items.IndexOfObject(TObject(2));

sensual_boy
دوشنبه 23 مهر 1386, 16:44 عصر
{Add object and text simultaneously}
ComboBox1.Items.AddObject('Test',TObject(2));
{Set object value for an existing item}
ComboBox1.Items.Objects[0] := TObject(3);
{Finding an object}
MyItem := ComboBox1.Items.IndexOfObject(TObject(2));


اگه یه وقتی Itemها از طریق یه فایل Txt که داریم Load شده باشن
اونوقت چطوری میشه Tobject رو بهش بدیم؟

vcldeveloper
سه شنبه 24 مهر 1386, 02:04 صبح
اگه یه وقتی Itemها از طریق یه فایل Txt که داریم Load شده باشن
اونوقت چطوری میشه Tobject رو بهش بدیم؟
وقتی Items را با SaveToFile در یک فایل ذخیره می کنید، Object های هر Item باهاش ذخیره نمیشه. البته دلیلی هم نداره که ذخیره بشه، چون این Object ها در واقع pointer ایی به یک Object در حافظه هستند، با بسته شدن برنامه و باز کردن مجدد آن، تضمینی وجود نداره که همان Object ها در همان محل های قبلی موجود باشند.
برای نسبت دادن Object ها به Items، یا باید بعد از لود کردن Items، مثلا با استفاده از LoadFromFile، هر یک از Object ها را یکی یکی به هر یک از Item ها نسبت بدید، یا اینکه باید مکانیزم جداگانه ایی برای ذخیره و لود کردن Items از فایل طراحی کنید که مثلا علاوه بر متن مربوط به هر Item، داده های هر یک از Object ها را هم در فایل ذخیره کند، و در هنگام لود کردن Items، هر یک از Object ها را با مشخصات موجود در فایل، ایجاد کند.

sensual_boy
سه شنبه 24 مهر 1386, 08:36 صبح
با احترام،جناب آقای کشاورز میشه یک مثال یا توضیح بیشتر در مورد این مکانیزم ارائه بدید

vcldeveloper
سه شنبه 24 مهر 1386, 09:19 صبح
میشه یک مثال یا توضیح بیشتر در مورد این مکانیزم ارائه بدید
فعلا کد آماده ایی که بخوام اینجا قرار بدم ندارم، چون تا به حال نیاز نداشتم Object های متصل به یک TStrings را در فایل ذخیره کنم.
برای شروع می تونید توابع WriteComponentResFile یا WriteComponent را مطالعه کنید. البته برای استفاده از این توابع، باید Object های شما از TComponent مشتق شده باشند. در همین مورد چند روز قبل سوالی در یکی از تاپیک های همین بخش مطرح شد.
البته اگر صرفا قصد ذخیره عدد را دارید، اینقدر گیر نداره، می تونید یا اعداد را در یک لیست جداگانه ذخیره کنید، یا از Values مربوط به هر Item استفاده کنید که به شما امکان ذخیره مقادیر بصورت Item=Value را می دهد. اگر در مورد Values سوال داشتید، قبلش راهنمای دلفی برای TStringList را مطالعه کنید و بعد سوال خود را بپرسید.