PDA

View Full Version : سوال در مورد ListBox



odyseh
جمعه 22 مهر 1390, 01:56 صبح
سلام خدمت اساتید انجمن
خسته نباشید
من یک تیکه برنامه میخوام برام بنویسید که خیلی ساده هست اما خودم هرچقدر فکر کردم برای ساختش به نتیجه نرسیدم
یک فرم با 3 لیست باکس
این 3 لیست باکس در زمانهای متفاوت اطلاعات جدید به اونها اضافه میشه
لیست باکس شماره 1 = اگر خالی بود تایمرش صفر باشه. در غیر اینصورت هر 15 دقیقه یکی از آیتمهای اون (آیتم اولی) از لیست باکس Remove بشه
لیست باکس شماره 2 و 3 هم به همین شکل
مرسی
ممنونتون میشم
اینم بگم بد نیست! این برنامه رو برای اضافه کردن به روبات یاهو میخوام ( آیدی روبات: Robo.Jazab )

butterfly8528
جمعه 22 مهر 1390, 02:44 صبح
سلام دوست عزیز .

4 عدد تایمر با نام های tmrChekLists ، tmrList1 ، tmrList2 ، tmrList3 و 3 عدد ListBox با نام های List1 ، List2 ، List3 بر روی فرمتون قرار بدید و از کد های زیر استفاده کنید .

Option Explicit

Private Sub Form_Load()

tmrChekLists.Interval = 10

tmrList1.Interval = 60000
tmrList1.Enabled = False

tmrList2.Interval = 60000
tmrList2.Enabled = False

tmrList3.Interval = 60000
tmrList3.Enabled = False

End Sub

Private Sub tmrChekLists_Timer()
tmrList1.Enabled = List1.ListCount
tmrList2.Enabled = List2.ListCount
tmrList3.Enabled = List3.ListCount
End Sub


Private Sub tmrList1_Timer()

If List1.ListCount = 0 Then
tmrList1.Enabled = False
Else
List1.RemoveItem 0
End If

End Sub


Private Sub tmrList2_Timer()

If List2.ListCount = 0 Then
tmrList2.Enabled = False
Else
List2.RemoveItem 0
End If

End Sub



Private Sub tmrList3_Timer()

If List3.ListCount = 0 Then
tmrList3.Enabled = False
Else
List3.RemoveItem 0
End If

End Sub



موفق و پیروز باشید :لبخندساده:

odyseh
جمعه 22 مهر 1390, 03:51 صبح
مرسی برادر عزیز
کاملا درسته
فقط لیستها رو هر 1 دقیقه ریموو میکنه! میشه بگید چطوری بکنم 10 دقیقه؟

محسن واژدی
جمعه 22 مهر 1390, 08:26 صبح
سلام
با اجازه butterfly8528 عزیز، کد پست شماره 2 بصورت زیر ویرایش کردم، interval تایمر بیشتر از 65535ms (تقریبا 1.10s) خطای سریزبافر میدهد، که در اینصورت نمیتوانیم مستقیما 10 دقیقه را که 600000ms است را در interval جایگزین کنیم


Option Explicit
Const mtl_min@ = 10 '10 = 10 min

Private Sub Form_Load()

Dim i
For i = 0 To 20
List1.AddItem "Item" & i
List2.AddItem "Item" & i
List3.AddItem "Item" & i
Next i

tmrChekLists.Interval = 10

tmrList1.Interval = 1000
tmrList1.Enabled = False

tmrList2.Interval = 1000
tmrList2.Enabled = False

tmrList3.Interval = 1000
tmrList3.Enabled = False

End Sub



Private Sub tmrChekLists_Timer()

tmrList1.Enabled = List1.ListCount
tmrList2.Enabled = List2.ListCount
tmrList3.Enabled = List3.ListCount
End Sub


Private Sub tmrList1_Timer()
tmrList1.Tag = Val(tmrList1.Tag) + 1
If tmrList1.Tag >= mtl_min@ * 60 Then
tmrList1.Tag = 0
If List1.ListCount = 0 Then
tmrList1.Enabled = False
Else
List1.RemoveItem 0
End If
End If
End Sub


Private Sub tmrList2_Timer()
tmrList2.Tag = Val(tmrList2.Tag) + 1
If tmrList2.Tag >= mtl_min@ * 60 Then
tmrList2.Tag = 0
If List2.ListCount = 0 Then
tmrList2.Enabled = False
Else
List2.RemoveItem 0
End If
End If
End Sub



Private Sub tmrList3_Timer()
tmrList3.Tag = Val(tmrList3.Tag) + 1
If tmrList3.Tag >= mtl_min@ * 60 Then
tmrList3.Tag = 0
If List3.ListCount = 0 Then
tmrList3.Enabled = False
Else
List3.RemoveItem 0
End If
End If
End Sub


در کدبالا بعد از هر ده دقیقه یکی از آیتم های موجود در لیست ها حذف میشود که برای تغییر این فاصله، دقیقه جدید را در ثابت "Const mtl_min@ = 10" که در ابتدای کد قرار دارد تنظیم کنید، مقدار وارد شده در این ثابت برحسب دقیقه محاسبه میشود

موفق باشید