PDA

View Full Version : سوال: پاک کردن متن تمامی تکس باکسها در گروپ باکس



oliya24
شنبه 14 آبان 1390, 22:47 عصر
سلام دوستان خسته نباشد
من برای پاک کردن تکسباکسایی که در گروپ باکس وجود داره از این کد استفاده میکنم ولی به یه مشکل برخوردم اگر مثلا ما 3 یا بیشتر گروپباکس داشته باشیم باید چه کنم؟؟؟از روش سابروتین رفتم و به جواب نرسیدم ممنون میشم کمکم کنید
اینم کد البته برای 1 گروپ باکس
for each ctl as control in groupbox1.controls
if typeof ctl is textbox then
end if
directcast(ctl,textbox).cleare()
next

asif1358
شنبه 14 آبان 1390, 23:16 عصر
سلام
به جای GroupBox1 کلمه Me بگذارید

Mr'Jamshidy
شنبه 14 آبان 1390, 23:51 عصر
سلام
به جای GroupBox1 کلمه Me بگذارید

اینم روشیه اما اگر غیر از گروپ باکس هاتون جای دیگه ای TextBox نداشته باشید

میتونید از تگ ها استفاده کنید

oliya24
شنبه 14 آبان 1390, 23:58 عصر
منظورتون رو از تگ متوجه نمیشم میشه توضیح دهید ممنونم

oliya24
یک شنبه 15 آبان 1390, 00:02 صبح
سلام
به جای GroupBox1 کلمه Me بگذارید
اگر کلمه me رو بنویسم خاصیت تکست گروپ باکس رو بر میداره نه خاصیت تکست تکس باکس ها رو

Hossis
یک شنبه 15 آبان 1390, 09:40 صبح
for each grp as control in me.controls
if typeof grp is groupbox then
for each ctl as control in grp.controls
if typeof ctl is textbox then
ctl.text=""
end if
next
end if
next

oliya24
یک شنبه 15 آبان 1390, 14:19 عصر
for each grp as control in me.controls
if typeof grp is groupbox then
for each ctl as control in grp.controls
if typeof ctl is textbox then
ctl.text=""
end if
next
end if
next


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

Mr'Jamshidy
یک شنبه 15 آبان 1390, 15:04 عصر
این کد اشکال داره میشه خواهش کنم برای بهتر روشن تر شدن مطلب یه برنامه تست بزارید؟؟؟
ممنون میشم

کجاش مشکل داره؟

oliya24
یک شنبه 15 آبان 1390, 16:07 عصر
کجاش مشکل داره؟

به ctl وgrp ایراد میده حتی من از نوع ابجکت براشون متغییر تعریف کردم اما کار نداد

Mani_rf
یک شنبه 15 آبان 1390, 16:19 عصر
برای اینکه بتونین N گروپ باکس (یا هر کانتینر دیگه ای ) را که به صورت تو در تو قرار گرفته اند پیمایش کنی باید از یک تابع بازگشتی (Recersive) بنویسی که اگر با گروپ باکس دیگری برخورد کرد خودش را فراخوانی کند و کانتینر زیری را بررسی کند.
اطلاعات بیشتر = تحقیق در باره توابع بازگشتی.

iman_Delphi7
یک شنبه 15 آبان 1390, 18:19 عصر
با سلام.
این روش برای وقتی جواب می ده که شما یک یا چند گروپ باکس رو فرمتون داشته باشید و تکست باکس هاتون توی گروپ باکسها باشن. اشکالات این روش :
1- اگر بجای GroupBox ، یک نوع کانتینر دیگه مثل Panel یا ... بذارین جواب نمی ده. که البته این مشکل زیاد مهمی نیست.
2- مشکل اصلی اینه که اگه توی این GroupBox ها یک کانتینر دیگه باشه جواب نمیده. در واقع این روش برای کانتینرهای تو در تو جواب نمی ده.
برای حل این مشکل باید یه زیربرنامه بازگشتی بنویسید که این کارو انجام بده. در واقع یه زیربرنامه که دو تا ورودی داره. یکی یه C از نوع Control و دیگری یه S از نوع String. برای فراخوانی این تابع هم باید با ورودی های Me و "" صدا زده بشه.
این هم کد Sub مورد نظر:


Sub SetAllTextBox(ByVal ParentControl As Control, ByVal Text As String)
For Each C As Control In ParentControl.Controls
If C.HasChildren Then
SetAllTextBox(C, Text)
ElseIf TypeOf (C) Is TextBox Then
DirectCast(C, TextBox).Text = Text
End If
Next
End Sub


برای صدا زدنش هم توی کلیک یه Button اینو می نویسیم:


SetAllTextBox(Me, "")


والسلام.

oliya24
سه شنبه 17 آبان 1390, 14:14 عصر
دوسات عزیز ممنونم ولی کد شما هم ایراد داره و من هم هر کاری کردم نتونستم اون رو رفع کنم میشه خواهش کنم یه برنامه تست بزارید
ممنون میشم

iman_Delphi7
چهارشنبه 16 آذر 1390, 17:55 عصر
با سلام.
من این کد رو تو برنامه تست کردم و بعد همونو براتون کپی کردم اینجا.
با این وجود یه برنامه پیوست کردم که تو فرمش چندین GroupBox ، Panel ، Split Container گذاشتم و تو سطوح مختلفش TextBox قرار دادم. دو تا کلید هم گذاشتم که با همون متدی که قبلا فرستاده بودم یکیش کل TextBox ها رو خالی می کنه و یکی همشونو پر می کنه. امیدوارم مشکلتون حل بشه.

Majid842
پنج شنبه 28 اردیبهشت 1391, 11:23 صبح
من دقیقا این کد رو داخل پروژم کپی کردم ولی با این خطا رو به رو شدم
87151