PDA

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



oYaMaa
چهارشنبه 14 تیر 1391, 21:54 عصر
سلام دوستان!
سوالی که من دارم خیلی آسونه و من دو به شک بودم که آیا واسه این سوال تایپیک ایجاد کنم یا نه!ولی فکر کنم تایپیک دارم هدر میدم!
در کل معذرت میخوام چون دیگه مجبورم!

لیست باکس من بهش رکورد اضافه میشه.میخوام این لیست باکس محدودیت رکورد داشته باشه.طوری که مثلا وقتی رکورد ها بیشتر از 7 تا شد.آخرین رکورد(یعنی اولین رکوردی که اضافه شده) حذف بشه و امکانش باشه که رکورد جدید اضافه بشه ولی کلا محدود به 7 رکورد باشه.
ممنون

Veteran
چهارشنبه 14 تیر 1391, 22:17 عصر
Dim a
Private Sub Command1_Click()
If List1.ListCount = 7 Then
If a = 7 Then
a = 0
End If
List1.RemoveItem (a)
List1.AddItem InputBox(""), a
a = a + 1
Else
List1.AddItem InputBox("")
End If
End Sub

just4froum
چهارشنبه 14 تیر 1391, 22:28 عصر
با اجازه جناب veteran :

از این روش هم می توانید استفاده کنید،

If List1.ListCount = 8 Then List1.RemoveItem (0)

oYaMaa
چهارشنبه 14 تیر 1391, 22:29 عصر
ممنون دوست عزیز!
اما اضافه شدن رکورد به لیست من از جای دیگه و با یک سری خصوصیت های دیگه انجام میشه.
من کدی میخوام که هر وقت به لیست باکس رکوردی اضافه شد، اتوماتیک اگر بیشتر از 7 رکورد شد اولین رکورد حذف بشه.
ممنون

arenaw
چهارشنبه 14 تیر 1391, 22:53 عصر
منم همین مشکلو داشتم
لیست باکس رویداد change نداره که توش این کدو بنویسی، به جاش این رو بالای فرم بنویس

Function ItemCheck()
If List1.ListCount > 7 Then List1.RemoveItem (0)
End Function


بعد هر جایی که ایتم اضافه کردی
خط بعدش بنویس ItemCheck

just4froum
چهارشنبه 14 تیر 1391, 22:56 عصر
البته اگر هم در جایی مجبور هستید چند آیتم به طور هم زمان به برنامه اضافه کنید برای چک کردنش از کد یر استفاده کنید.

Do While List1.ListCount > 7
List1.RemoveItem (0)
Loop

به عنوان مثال اگر 100 آیتم هم زمان به list1 اضافه کنید فقط 7 تای آخر باقی می ماند.

oYaMaa
پنج شنبه 15 تیر 1391, 13:09 عصر
با تشکر از همه عزیزانی که جواب دادن!
این کد ها عمل کردند، البته روی فرم!
ولی توابع من که به لیست باکس رکورد اضافه می کنن داخل ماژول هستن و این کد ها تو ماژول جواب ندادن!
من فکر کنم احتیاج به حلقه باشه، درسته؟
ممنون میشم جواب بدید.:لبخندساده:

arenaw
پنج شنبه 15 تیر 1391, 13:27 عصر
شما همین کد آخریه جناب just4froum رو تو ماژول بنویس ، منتها اونجا به جای List1.RemoveItem بنویس Form1.List1.RemoveItem

محسن واژدی
پنج شنبه 15 تیر 1391, 13:38 عصر
سلام علیکم
با اجازه دوستان
کد زیر را داخل ماژول کد کپی کنین:

Sub AddListItem(lListBox As ListBox, sItemsList$, Optional sDelimiter$ = "|", Optional iMaxAllowed% = 7)
On Error Resume Next
Dim cIt
With lListBox
For Each cIt In Split(sItemsList$, sDelimiter$)
.AddItem cIt
If .ListCount > iMaxAllowed% Then .RemoveItem (0)
Next

Do Until (.ListCount - 1) <= iMaxAllowed%
.RemoveItem (0)
Loop

End With
End Sub

برای مثال
Private Sub Command1_Click()
Dim sTI$, i
For i = 0 To 500
sTI$ = sTI$ & "Item" & i & "|"
Next
AddListItem List1, sTI$
End Sub

موفق باشید