View Full Version : بررسی خالی بودن تمامی textbox ها
mahdivita
پنج شنبه 08 فروردین 1392, 23:28 عصر
سلام
من بیش از 30 تا textboxتو برنامم دارم و میخوام یه کد کلی بنویسم که اگه هر کدوم از textbox ها مقداری توش نبود پیغام بده
راستی اینجوری هم منظورم نیست چون اینجوری باید تا 30 تا بنویسم :لبخند:
If (Text1.Text = "") Or (Text2.Text = "") Or (Text3.Text = "") Or (Text4.Text = "") Or (Text5.Text = "") Then
a = MsgBox("áØÝÇ ÇØáÇÚÇÊ ÑÇ ˜Çãá æÇÑÏ ˜äíÏ", vbCritical, "ÇÎØÇÑ")
لطفا راهنمایی کنید
amin32
پنج شنبه 08 فروردین 1392, 23:38 عصر
سلام . از این روش استفاده کنید:
For Each ctl In Me.Controls
If TypeOf ctl Is TextBox Then
If ctl.Text = "" Then
MsgBox "کادر متن خالی است!"
End If
End If
Next
mahdivita
پنج شنبه 08 فروردین 1392, 23:55 عصر
ممنون
میشه کدش رو توضیح بدین
ho3ein.3ven
جمعه 09 فروردین 1392, 01:08 صبح
سلام. بهتره که از آرایه کنترلی استفاده کنید.
amin32
جمعه 09 فروردین 1392, 01:15 صبح
ممنون
میشه کدش رو توضیح بدین
از یک حلقه خاص ( بدون شمارنده) استفاده شده که به تعداد کنترلهای موجود در فرم تکرار میشه. با هر بار اجرای حلقه یکی از کنترلها در نظر گرفته میشه و خصوصیاتش به متغیر ctl تخصیص داده میشه. در خط بعد چک میکنیم که نوع کنترل textbox هست یا نه. اگر Textbox بود , چک میکنیم که اگر مقدارش خالی بود پیغام بده. البته راههای دیگه ای هم برای چک کردن چندین کنترل وجود داره.
من کد رو طوری نوشتم که به ازای هر کادر متن خالی یک ارور بده که شاید این زیاد جالب نباشه. پیشنهاد میکنم به جای msgbox یک متغیر boolean رو true کنید و بعد از اتمام حلقه , چک کنید که اگه اون متغیر True بود , یک پیغام خطای کلی بده .
mahdivita
جمعه 09 فروردین 1392, 05:15 صبح
ممنون
بخوایم بگیم اگه همه ی فیلد ها مقدار داشتن چی باید بکنیم(منظورمelse هست)
amin32
جمعه 09 فروردین 1392, 09:09 صبح
ممنون
بخوایم بگیم اگه همه ی فیلد ها مقدار داشتن چی باید بکنیم(منظورمelse هست)
از همون روشی که توضیح دادم استفاده کنید. یعنی اگر کادر خالی وجود داشت به جای msgbox یک متغیر boolean (که قبل از ورود به حلقه بهش مقدار false دادید ) رو true کنید . بعد از پایان حلقه اگر متغیر هنوز false باشه , یعنی هیچ کادر متنی خالی نیست. برای راحتیتون کد رو هم میگذارم:
Dim EmptyExist As Boolean
For Each ctl In Me.Controls
If TypeOf ctl Is TextBox Then
If ctl.Text = "" Then
EmptyExist = True
End If
End If
Next
If EmptyExist = True Then
MsgBox "کادر متن پر نشده"
Else
MsgBox "تمام کادرهاي متن پر شده"
End If
البته همونطور که دوستمون اشاره کردند میتونید از آرایه ای از کنترها هم استفاده کنید که یک مقداری حلقه رو ساده تر میکنه ولی در اون صورت باید تمام textbox ها , هم نام باشند.
mahdivita
جمعه 09 فروردین 1392, 09:41 صبح
خیلی ممنون امید وارم در تمامی مراحل زندگی موفق و پیروز باشید
:لبخند:
soheila2012
جمعه 09 فروردین 1392, 10:20 صبح
با آرایه هم تکست باکس ها هم مشخصات تکست ها رو یکسان در نظر میگیری و باعث میشه تغییرات و تنظیمات بهتر بشه و هم یه خط کد داره.
البته کدی که amin32 نوشتن حرفه ای تره!
mahdivita
جمعه 09 فروردین 1392, 10:24 صبح
:لبخند: :متفکر:
محسن واژدی
جمعه 09 فروردین 1392, 12:16 عصر
از همون روشی که توضیح دادم استفاده کنید. یعنی اگر کادر خالی وجود داشت به جای msgbox یک متغیر boolean (که قبل از ورود به حلقه بهش مقدار false دادید ) رو true کنید . بعد از پایان حلقه اگر متغیر هنوز false باشه , یعنی هیچ کادر متنی خالی نیست. برای راحتیتون کد رو هم میگذارم:
Dim EmptyExist As Boolean
For Each ctl In Me.Controls
If TypeOf ctl Is TextBox Then
If ctl.Text = "" Then
EmptyExist = True
End If
End If
Next
If EmptyExist = True Then
MsgBox "کادر متن پر نشده"
Else
MsgBox "تمام کادرهاي متن پر شده"
End If
البته همونطور که دوستمون اشاره کردند میتونید از آرایه ای از کنترها هم استفاده کنید که یک مقداری حلقه رو ساده تر میکنه ولی در اون صورت باید تمام textbox ها , هم نام باشند.
سلام علیکم
با اجازه برادر بزرگوارم آقا امین، چون هدف ما صرفا یافتن حداقل یک باکس خالی است، که در صورت روئیت آن میتوانیم از ادامه حلقه برای سریعتر شدن برنامه جلوگیری کنیم، کد را کمکمکی ویرایش کردم:
Dim EmptyExist As Boolean
For Each ctl In Me.Controls
If TypeOf ctl Is TextBox Then
If ctl.Text = "" Then
EmptyExist = True
Exit For
End If
End If
Next
If EmptyExist = True Then
MsgBox "کادر متن پر نشده"
Else
MsgBox "تمام کادرهاي متن پر شده"
End If
موفق باشید
mehran901
شنبه 10 فروردین 1392, 00:08 صبح
سلام
من بیش از 30 تا textboxتو برنامم دارم و میخوام یه کد کلی بنویسم که اگه هر کدوم از textbox ها مقداری توش نبود پیغام بده
راستی اینجوری هم منظورم نیست چون اینجوری باید تا 30 تا بنویسم :لبخند:
If (Text1.Text = "") Or (Text2.Text = "") Or (Text3.Text = "") Or (Text4.Text = "") Or (Text5.Text = "") Then
a = MsgBox("áØÝÇ ÇØáÇÚÇÊ ÑÇ ˜Çãá æÇÑÏ ˜äíÏ", vbCritical, "ÇÎØÇÑ")
لطفا راهنمایی کنید
همون طوری که دوست عزیز amin32 فرموند .... جا داره از ی روش مشابه هم من استفاده کنم تا دوستمون با روش های مختلف آشنا بشن
Dim a As TextBox
For Each a In Me.Controls
If a.Text = Empty Then MsgBox "the textbox has been found empty such as : " & a.Name
Next
کد کوتاه بالا ، هنگامی که ب ی تکست باکس خالی برخورد کنه اسمش رو گزارش میکنه!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.