PDA

View Full Version : سوال: ايجاد combo box سفارشي



T A H O R A
جمعه 25 دی 1388, 15:09 عصر
سلام دوستان
من یه مشکل ساده یا سخت دارم!!
یه برنامه میخوام بنویسم ودرطراحی فرم اولیه اش به یه مشکل برخورد کردم مشکلم اینه که
نمیتونم چند تا combo box برای تاریخ تولد و تاریخ استخدام و... طراحی کنم به طوری که برای 6 ماه اول 31روز رونشون بده وبرای 5ماه دوم فقط و فقط 30روز وبرای اسفند ماه 29 روز رو
ولی نمی دونم چطوری؟
خود این سایت برنامه نویس روهم نگاه کردم درقسمت تاریخ تولد ، من که متولد دی ماه هستم میتونم تاریخ تولد 31 دی ماه روبه سیستم اعلام کنم!!!!!!!!!!واین غیر واقعیه!
من نمیخوام توبرنامه ام این مشکل وجود داشته باشه
امیدوارم بتونید من رو راهنمایی کنید

seven7777777
جمعه 25 دی 1388, 19:25 عصر
سلام
البته این مشکل بزرگی نیست و شاید اسمش مشکل هم نباشه ولی با این حال شما چند راه داری ( که به ذهن من می رسه ) :
1. یه آرایه دوبعدی درست کنی و توی اون برای هر ماه تعداد روزها رو نگه داری . بعد تو رویداد تغییر ایندکس کمبوی ماهت تعداد رزهارو رو بر طبق اون آرایه ویرایش کنی .
2. توی دیتابیست یا تو خود برنامت یه جدول درست کنی که برای هر ماه تمام روزهاشو نگه داره . بعد شبیه کمبوهای مرتبط( مثل اونایی که یکی استانه و اون یکی شهرستان و با تغییر استان شهرای مربوط به اون تو کمبوی دوم میاد ) با تغییر ماه روزهای مربوط به اون ماه از توی اون جدولی که سختی بیاد تو کمبوی دوم . این کارهم به راحتی با bind کردن کمبوها به جدول انجام میشه .
3. بزاری که کاربر هر جور می خواد انتخاب کنه ، بعد هنگام ثبت اطلاعات با یه if ساده اگه غلط انتخاب کرده بود ، دعواش کن .
4. احتمالا ساخت یک کمبوی سفارشی اگه بلدی .
5. استفاده از datatimepicker فارسی که کبیسه رو هم پشتیبانی می کنه .
6. راه های دیگری که دوستان ارائه میدن .

موفق باشی .

T A H O R A
جمعه 25 دی 1388, 19:35 عصر
واسه من خیلی مشکله که توعمرم یه برنامه حرفه ای ننوشتم الان باید یه برنامه اداری عالی بنویسم
همه راه هایی که فرمودید احتمال 99درصد درسته ولی من بلدنیستم وبین اونا گزینه 5رو ترجیح میدم ولی میشه درموردش بیشتر توضیح بدید(زیردیپلم) من سی شارپ ویژوال استودیوی 2008 رو دارم
منظورم نوشتن برنامه نيست منظورم راهنمايي بيشتره!
تشکر

hamidreza20
جمعه 25 دی 1388, 19:42 عصر
سلام دوست عزیز

راه حلی که دوستومن گفته درسته
ولی بهتر اینه که شما توی رویداد Select indexchange کامبو باکس ماه بیای قطعه کد زیر رو بزاری :


if (cmobox1.item.selecdtedindex>6)
for (int i=1;i<31;i++)
cmobobax2.items.add(i)

برای ماه آخر هم همین شرط رو اضافه کن مثلا اگر برابر 12 بود از 1 تا 29 را داخل کمبو باکس اضافه کن.


التماس دعا

T A H O R A
جمعه 25 دی 1388, 20:02 عصر
سلام دوست عزیز

راه حلی که دوستومن گفته درسته
ولی بهتر اینه که شما توی رویداد Select indexchange کامبو باکس ماه بیای قطعه کد زیر رو بزاری :


if (cmobox1.item.selecdtedindex>6)
for (int i=1;i<31;i++)
cmobobax2.items.add(i)

برای ماه آخر هم همین شرط رو اضافه کن مثلا اگر برابر 12 بود از 1 تا 29 را داخل کمبو باکس اضافه کن.


التماس دعا
تشکردوست عزیز
من این کد رو اضافه کردم و کومبوباکس روز روخالی ازعدد کردم (همنین با اعداد 1تا 31 هم امتحان کردم نتیجه یکسان بود)
وقتی که برنامه روبا f5 اجراکردم وهرماهی روکه انتخاب کردم کومبوباکس روز خالی از عدد باقی ماند!
سه حالت داره!
یا جایی رومن خطارفتم
یا جایی روشما کامل توضیح ندادید!
یا چون هنوز من پایگاه داده براي برنامه ام تعریف نکردم به این مشکل برخوردم!
نظرشما چیه؟

ahrimaneahurai
جمعه 25 دی 1388, 20:35 عصر
سلام
دوست عزیز این کد رو یه نیگا بندار ببین به دردت میخوره ؟

slashslash2009
جمعه 25 دی 1388, 20:51 عصر
اگه اشتباه نکنم شما فقط میخواید تاریخ یه جا درج کنید خوب چرا از کامپوننتهای آماده استفاده نمیکنید که هر تاریخی رو دوست دارید انتخای کنید مثل farsi library
شبیه به کامبو باکس میمونه و راحت میتونید در یکجا تاریخ دلخواهتون رو انتخاب کنید وقتی فلش روشو میزنید مثل این تصویر میشه

hamidreza20
جمعه 25 دی 1388, 23:21 عصر
دوست گرامی

شما کمبو باکست روز را مقدار بده و بعد از فراخوانی رویداد seleced tindex chang آن را پاک می کنی و دوباره آیتم ها را به اون اضافه می کنی.

hamidreza20
شنبه 26 دی 1388, 00:12 صبح
دوست عزیز نشستم برات نوشتم

دو تا کمبو باکس روی فرمت بزار کامبو باکس 1 برای ماه و 2 برای روز و بعد برای کامبو باکس 1 رویداد selected index change کد زیر رو اضافه من.


private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if ((comboBox1.SelectedIndex > 5) && (comboBox1.SelectedIndex < 11))
{
comboBox2.Items.Clear();
for (int i = 1; i < 31; i++)
comboBox2.Items.Add(i);
}
else if (comboBox1.SelectedIndex == 11)
{
comboBox2.Items.Clear();
for (int i = 1; i < 30; i++)
comboBox2.Items.Add(i);
}
else
{
comboBox2.Items.Clear();
for (int i = 1; i < 32; i++)
comboBox2.Items.Add(i);
}


}

من تست کردم درست بود.

التماس دعا

T A H O R A
شنبه 26 دی 1388, 06:27 صبح
من تست کردم درست بود.


ممنون
ديشب اشتراك اينترنتم تموم شد الانم با خط ايرانسل بازكردم سر كار امتحان ميكنم واگراشتباهي داشتم دوباره مي پرسم
تشكر

Arash_janusV3
شنبه 26 دی 1388, 09:25 صبح
سلام

هر 4 سال یک بار اسفند 30 روزه می شه
یه فکری بکن؟

T A H O R A
شنبه 26 دی 1388, 15:52 عصر
هر 4 سال یک بار اسفند 30 روزه می شه
یه فکری بکن؟

تایید میشود و امروز درستش کردم کافی بود یه شرط بزارم که اولین سال کبیسه ی مورد نیاز من رو بعلاوه 4 بشه و برج 12 رو مانند برجهای 7و8و... درنظر بگیره




سلام
دوست عزیز این کد رو یه نیگا بندار ببین به دردت میخوره ؟
ممنون
دستت درد نکنه


من تست کردم درست بود.


تشکر درست بود منم تست کردم



اگه اشتباه نکنم شما فقط میخواید تاریخ یه جا درج کنید خوب چرا از کامپوننتهای آماده استفاده نمیکنید که هر تاریخی رو دوست دارید انتخای کنید مثل farsi library
شبیه به کامبو باکس میمونه و راحت میتونید در یکجا تاریخ دلخواهتون رو انتخاب کنید وقتی فلش روشو میزنید مثل این تصویر میشه

درمورد جواب شما :
اولا نمی دونم farsi library کجاست ! میشه راهنماییم کنید از کجا باید فراخوانیش کنم شاید یه روز یه مشکل دیگه مو بر طرف کرد
دوما تاریخهای متفاوت وزیادی دارم مثل تاریخ تولد تاریخ بیمه تاریخ استخدام تاریخ دروه های اموزشی تاریخ تولد 3فرزند اول و....وانتخاب دراین نوع تقویم خیلی سخته چون مدام باید یه چند ده سالی جابجا بشی و کلی وقت میخواد ولی کومبو باکسی که به کمک دوستان درست کردم بهتر نیاز منو برطرف میکنه بازهم ازراهنماییت تشکر

ahrimaneahurai
شنبه 26 دی 1388, 21:09 عصر
از این میتونی استفاده کنی
اگه این dll نبود بگو

ahrimaneahurai
شنبه 26 دی 1388, 21:11 عصر
شرمنده هر کار کردم آپلود نشد اگه خواستی بگو واست میل کنم

slashslash2009
شنبه 26 دی 1388, 21:20 عصر
کامپوننت تاریخ شمسی farsi libraryاز اینجا دانلودش کن :
http://www.persiangig.com/pages/download/?dl=http://slashslash.persiangig.com/other/farsilibrary%20ver%202.0.rar

برای نصب روی toolbox قسمت common controls راست کلیک کنید choose items را انتخاب کنید و در همون تب اولی Browse کنید و فایل FarsiLibrary.Win.dll را open کنید. بعدش میبینید که چندتا ابزار به همون قسمت یعنی common controls اضافه شده در قسمت refrences که در solution explorer هست هر 3تا فایلو اضافه کنید بعدش کنترل fadatepicker را به فرمتون اضافه کنید . solution explorer روی فایل program.cs دوبار کلیک کنید و

using System.Threading; این uses رو هم اضافه کنید بعدش واسه اینکه تاریخ فارسی رو نشون بده شما باید زبان فارسی رو به برنامتون اضافه کنید که میتونید در همین فایل این کدو تایپ کنید :

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fa-IR");
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
System.Globalization.CultureInfo language = new System.Globalization.CultureInfo("fa-ir");
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(language);یا
System.Threading.Thread.CurrentThread.CurrentUICul ture =
new System.Globalization.CultureInfo("fa-IR");حالا این فایلو ببندید و save کنید
هر کدومش که شد.
اینجوری میتونید تاریخ امروزو بهش بدین در فرم لودتون یا هر متد دیگه :

faDatePicker1.SelectedDateTime = DateTime.Now;

m.saleh
دوشنبه 19 بهمن 1388, 00:22 صبح
من این کارهایی که گفتید رو کردم اما زمانی که میخوام از ابزار ها استفاده کنم error میده
باید چیکار کنم؟؟

slashslash2009
دوشنبه 19 بهمن 1388, 07:32 صبح
به toolbox اضافه شدن ؟
چه خطایی میده؟

m.saleh
دوشنبه 19 بهمن 1388, 23:08 عصر
این پیغام رو میده

m.saleh
دوشنبه 19 بهمن 1388, 23:09 عصر
آره اضافه شدن ولی وقتی میخوام اونا رو بندازم تو فرم error میده

slashslash2009
سه شنبه 20 بهمن 1388, 00:06 صبح
فایلای dll رو در پوشه bin برنامت همونجایی که فایل exe برنامت هست کپی کن

msadgd
سه شنبه 31 فروردین 1389, 15:07 عصر
با سلام خدمت دوستان
من از این کنترل FaDatePicker استفاده کردم و موقع نمایش هم فارسی هست. اما متاسفانه وقتی combo مربوط به اون رو باز می کنم سال میلادی جاری رو نشون میده و ماه شمسی که معادل میلادیش هست. مثلا سال 2010 و ماه اوریل که ماه 4 میلادی هست رو تیر انتخاب کرده که ماه چهارم شمسیه. هرکاریش کردم نشد.اگه راهنماییم کنید ممنون می شم.

پیروز باشید

msadgd
جمعه 03 اردیبهشت 1389, 18:51 عصر
دوستان من در قسمت loud فرم کد زیر رو قرار میدم



Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("fa-IR")
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture
Dim language As New System.Globalization.CultureInfo("fa-ir")
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(language)


برای اینکه هم زبان فرمم فارسی باشه هم برای استفاده از fadatpicker (شمسی DatePicker) موقع لود فرم تاریخ اون فارسی باشه اما اشکال پست بالا پیش میاد. اما وقتی از همین فرم یک فرم دیگه - که توی لودش همین کد رو نوشتم - باز می کنم دیگه این اشکال وجود نداره.
کسی می تونه علتش رو بگه؟ همینطور راه حلش؟
ممنون
پیروز باشید