PDA

View Full Version : اضافه کردن آیتم به DbcomboBox



sardar_ahmadi
یک شنبه 27 فروردین 1385, 15:04 عصر
چگونه هنگام اجرای برنامه میتوان آیتم به آیتمهای یک DbcomboBox اضافه کرد و برای همیشه برای انتخابهای بعدی ماندگار باشد . با تشکر

shobair
یک شنبه 27 فروردین 1385, 17:05 عصر
سلام
مانند یک ComboBox معمولی از متد (ComboBox.Items.add(TEXT استفاده کنید ولی به یاد داشته باشید که فیلدی از یک دیتابیس باید به این کنترل متصل باشد و در صورت تغییر مقدار، مقدار آن فیلد از رکورد جاری دیتابیس هم تغییر می کند .
شبیـر

sardar_ahmadi
یک شنبه 27 فروردین 1385, 20:05 عصر
آقا شبیر منظور من این است که در کدام event آن (DbComboBox)این دستور را بنویسم که به انتهای آیتمهای موجود (آیتمهائی که هنگام طراحی برنامه به آن اختصاص داده ایم) اضافه شود. یعنی باید شرط داشته باشد که این کلمه یا جمله اگر در لیست آیتمها نبود اضافه شود.

hr110
دوشنبه 28 فروردین 1385, 06:02 صبح
procedure TForm1.FormCreate(Sender: TObject);

sardar_ahmadi
دوشنبه 28 فروردین 1385, 06:36 صبح
جناب مدیر بخش(hr110) کد مورد نظر ظاهرا ناقص میباشد اگر لطف کنید کامل آن را بنویسید ممنون میشم . با تشکر احمدی

hr110
دوشنبه 28 فروردین 1385, 08:50 صبح
.. در کدام event آن (DbComboBox)این دستور را بنویسم ...

جواب این بخش از سوال بود، چک کردن وجود یا عدم وجود یک آتیم در TStringList هم بسیار ساده بوده و نیازی به جواب ندارد .

sardar_ahmadi
سه شنبه 29 فروردین 1385, 09:03 صبح
همچنانکه قبلا هم اشاره شده بود : در کدام Event (دی بی کمبو باکس) کد بنویسم که چک کند اگر آیتمی در لیست آیتمهای DbcomboBox موجود نیست - متنی را که در DbcomboBox نوشته میشود (متن جدید) به انتهای آیتمهای موجود اضافه شود و در مراجعه بعدی به این DbcomboBox متن جدید اضافه شده باشد .
لطفا اگر کسی کد مورد نظر را هم ارائه دهد ممنون میشم . با سپاس فراوان

sardar_ahmadi
جمعه 01 اردیبهشت 1385, 06:30 صبح
همچنانکه قبلا هم اشاره شده بود : در کدام Event (دی بی کمبو باکس) کد بنویسم که چک کند اگر آیتمی در لیست آیتمهای DbcomboBox موجود نیست - متنی را که در DbcomboBox نوشته میشود (متن جدید) به انتهای آیتمهای موجود اضافه شود و در مراجعه بعدی به این DbcomboBox متن جدید اضافه شده باشد .
لطفا اگر کسی کد مورد نظر را هم ارائه دهد ممنون میشم . با سپاس فراوان


لطفا راهنمائی کنید چون پاسخ آن برایم ضروری است . جستجو هم کردم ولی پیدا نکردم .

mzjahromi
یک شنبه 03 اردیبهشت 1385, 14:22 عصر
شما می توانید تمامی آیتم ها را درون DB یا Registry یا Ini یا هر جای دیگه ذخیره کنید و موقع ایجاد شدن فرم(همونطوری که جناب HR گفتن) آنها را بخوانید و دررون DBComboBox بریزید

shobair
یک شنبه 03 اردیبهشت 1385, 14:41 عصر
سلام
رویداد OnShow فرم بهتر هستش چون یکبار بیشتر تکرار نمیشه.
شبیـر

mzjahromi
یک شنبه 03 اردیبهشت 1385, 15:08 عصر
سلام
رویداد OnShow فرم بهتر هستش چون یکبار بیشتر تکرار نمیشه.
شبیـر
رویداد OnFormShow با هر بار نمایش فرم یک بار اجرا میشه و اگه بخوان توی این رویداد این کار رو انجام بدن باید قبل از اضافه کردن اطلاعات اطلاعات قبلی رو پاک کنند. ولی رویداد OnCreate تنها هنگام ایجاد فرم اجرا میشه و اگر هم فرم مجددا آزاد بشه و دوباره ایجاد بشه مقادیر موجود در کامپوننتها به حالت اولیه باز میگردند.
در هر حال من فکر میکنم همون طور که جناب HR هم گفتند OnCreate مناسب تر باشه.

aLiReZa hOsSeInI
یک شنبه 21 خرداد 1385, 13:55 عصر
شما می توانید تمامی آیتم ها را درون DB یا Registry یا Ini یا هر جای دیگه ذخیره کنید و موقع ایجاد شدن فرم(همونطوری که جناب HR گفتن) آنها را بخوانید و دررون DBComboBox بریزید
دوست عزیز من یه دیتابیس دارم
می خوام مثلا لیست سرویسهایی که مشخصه آنها 1 است داخل لیست نمایان باشه
اما نمیدونم چرا تنها سرویس اول را نشون میده و مثلا اون 5 سرویس دیگه را لیست نمیکنه:متفکر:

babak869
یک شنبه 21 خرداد 1385, 14:15 عصر
رویداد OnFormShow با هر بار نمایش فرم یک بار اجرا میشه و اگه بخوان توی این رویداد این کار رو انجام بدن باید قبل از اضافه کردن اطلاعات اطلاعات قبلی رو پاک کنند. ولی رویداد OnCreate تنها هنگام ایجاد فرم اجرا میشه و اگر هم فرم مجددا آزاد بشه و دوباره ایجاد بشه مقادیر موجود در کامپوننتها به حالت اولیه باز میگردند.
در هر حال من فکر میکنم همون طور که جناب HR هم گفتند OnCreate مناسب تر باشه.
به نظر من برای برنامه هایی که با هر بار فراخوانی یک صفحه امکان تغییر در محتوای آنها وجود دارد استفاده از رویداد OnShow فرم مناسب تر است.مثل برنامه هایی که در هر صفحه کاربر با یه جدول جداگانه کار میکنه و زمانی که فرم دیگری باز میشه و جدول اون مرتبط با جدول صفحه قبله در رویداد OnShow اون صفحه بهترین مکان برای Refresh کردن Table هاست!!

mzjahromi
یک شنبه 21 خرداد 1385, 15:01 عصر
به نظر من برای برنامه هایی که با هر بار فراخوانی یک صفحه امکان تغییر در محتوای آنها وجود دارد استفاده از رویداد OnShow فرم مناسب تر است.مثل برنامه هایی که در هر صفحه کاربر با یه جدول جداگانه کار میکنه و زمانی که فرم دیگری باز میشه و جدول اون مرتبط با جدول صفحه قبله در رویداد OnShow اون صفحه بهترین مکان برای Refresh کردن Table هاست!!
تو برنامه هائی که شخص یا فرم دیگه ای ممکنه اطلاعات رو تغییر بده آره
ولی اگه تنها همون فرم اطلاعات رو تغییر میده لزومی به تکرار یک عملیات با نتایج ثابت نیست


دوست عزیز من یه دیتابیس دارم
می خوام مثلا لیست سرویسهایی که مشخصه آنها 1 است داخل لیست نمایان باشه
اما نمیدونم چرا تنها سرویس اول را نشون میده و مثلا اون 5 سرویس دیگه را لیست نمیکنه:متفکر:
کدی رو که استفاده کردید اینجا بنویسید

shobair
یک شنبه 21 خرداد 1385, 18:53 عصر
رویداد OnFormShow با هر بار نمایش فرم یک بار اجرا میشه و اگه بخوان توی این رویداد این کار رو انجام بدن باید قبل از اضافه کردن اطلاعات اطلاعات قبلی رو پاک کنند. ولی رویداد OnCreate تنها هنگام ایجاد فرم اجرا میشه و اگر هم فرم مجددا آزاد بشه و دوباره ایجاد بشه مقادیر موجود در کامپوننتها به حالت اولیه باز میگردند.
در هر حال من فکر میکنم همون طور که جناب HR هم گفتند OnCreate مناسب تر باشه.

سلام
میدونم تاپیک جدید نیست ولی...

تجربه بهم ثابت کرده که از در رویداد OnCreate چنین کدی باشه ،ممکنه زمانی اجرا بشه که هنوز بقیه فرم ها create نشدن یا مثلا ماجول دیتا ساخته نشده. مخصوصا اگه تعداد فرم ها زیاد باشه و همچنین وقتی که مقادیر ComboBox رو میخواین از یک دیتابیس بخونین. من ترجیه میدم در رویداد Onshow بنویسم و هربار قبلش کل کومبو رو پاک کنم. ولی مطمئن باشم برنامه موقع اجرای فایلEXE ارور Access Violation نده!

شبیر

mzjahromi
دوشنبه 22 خرداد 1385, 06:24 صبح
سلام
رویداد OnShow فرم بهتر هستش چون یکبار بیشتر تکرار نمیشه.
شبیـر
اون مساله در جواب این بحث مطرح شده


سلام
میدونم تاپیک جدید نیست ولی...

تجربه بهم ثابت کرده که از در رویداد OnCreate چنین کدی باشه ،ممکنه زمانی اجرا بشه که هنوز بقیه فرم ها create نشدن یا مثلا ماجول دیتا ساخته نشده. مخصوصا اگه تعداد فرم ها زیاد باشه و همچنین وقتی که مقادیر ComboBox رو میخواین از یک دیتابیس بخونین. من ترجیه میدم در رویداد Onshow بنویسم و هربار قبلش کل کومبو رو پاک کنم. ولی مطمئن باشم برنامه موقع اجرای فایلEXE ارور Access Violation نده!

شبیر
حرف شما درسته ولی هر چیزی یه راهی داره.
شاید هم OnShow بهتر باشه(با این مساله جدیدی که شما گفتید--استفاده از سایر فرمها-- ضمن اینکه اونهم بستگی داره و چاره داره ) ولی باز هم لازم نیست هر دفعه این کار رو بکنید%

shobair
دوشنبه 22 خرداد 1385, 07:36 صبح
شاید هم OnShow بهتر باشه(با این مساله جدیدی که شما گفتید--استفاده از سایر فرمها-- ضمن اینکه اونهم بستگی داره و چاره داره ) ولی باز هم لازم نیست هر دفعه این کار رو بکنید

سلام
متاسفانه چاره نداره. وقتی برنامه 50 تا فرم داشته باشه، این مشکل در سطح کاربر پیش نمیاد که بشه براش کاری کرد، در سطح سیستم پیش میاد. ضمناً کامپایلرهای بورلند واقعا برنامه رو کامپایل نمیکنند. بلکه بصورت RESOURCE به یک قالب فایل اجرائی الصاق میکنند که باعث میشه دقیقا همون چیزی که ما فکر میکنیم موقع اجرای برنامه اتفاق میوفته، اتفاق نیوفته. مثلا برنامه ممکنه در حالی اجرا بشه که تمام فرم ها ساخته نشدن. میشه با نشون دادن Splash Screen کاربر رو مشغول کرد ولی این راه چاره نیست، فقط یک جور جلوگیری از نمایش خطا هستش.
ضمنا من میدونم که OnShow هربار که فرم نمایش داده میشه، اجرا میشه. منظورم از اینکه یکبار اجرا میشه، موقع نمایش فرم بود. چون بعضی رویداد ها ممکنه حتی وقتی فرم شما نمایش داده شده چند بار اجرا بشن. مثل OnPaint و OnActivate و تمام رویدادهای ماوس.
ولی باز هم میگم: OnCreate اصلاً امن نیست! تجربه 7 ساله دلفی کار بودن این رو بهم ثابت کرده.

شبیر

mzjahromi
دوشنبه 22 خرداد 1385, 09:15 صبح
متاسفانه چاره نداره. وقتی برنامه 50 تا فرم داشته باشه، این مشکل در سطح کاربر پیش نمیاد که بشه براش کاری کرد، در سطح سیستم پیش میاد. ضمناً کامپایلرهای بورلند واقعا برنامه رو کامپایل نمیکنند. بلکه بصورت RESOURCE به یک قالب فایل اجرائی الصاق میکنند که باعث میشه دقیقا همون چیزی که ما فکر میکنیم موقع اجرای برنامه اتفاق میوفته، اتفاق نیوفته

مثل OnPaint و OnActivate و تمام رویدادهای ماوس.
ولی باز هم میگم: OnCreate اصلاً امن نیست!

تجربه 7 ساله دلفی کار بودن این رو بهم ثابت کرده.

من از دیروز تا حالا دلفی کار میکنم
---------------------------------------------
این بحث به کل کل شبیه شده تا بحث علمی
چون همیشه برای هر مورد کاری میشه که حالتی رو پیدا کرد که خطا بده
پس بیایم اصلا برنامه ننویسیم.