PDA

View Full Version : مشکل با listbox



aleas2
سه شنبه 10 خرداد 1390, 13:21 عصر
سلام خسته نباشید چرا تو لیست باکس فقط میشه 32766 تا داده داخلش بریزی مثلا کد زیر ببینین


For i = 0 To 32767
List1.AddItem i
Next i

این کد اجرا کنین خطا میده

و اگراین کد اجرا کنین


For i = 0 To 32768
List1.AddItem i
Next i

اجرا کنین وبعدش هم کد


MsgBox List1.ListCount


اجرا کنین جواب بصورت منفی یعنی میگه تعداد داده های موجود در لیست باکس 32767-
هسته یعنی هر چی تعداد داده های داخل لیست باکس بریزی هر چی بیشتر از 32768یا تعداد خود 32768باشه تعداد داده های موجود در لیست باکس بصورت منفی یه چیز دگه میگه ولی اگر 32767باشه خطا میده و اگر کمتر از 32766یا خود 32766 باشه برنامه خطا نمیده ومیتونی به رکورد مورد نظر یا همون داده مورد نظر دسترسی پیدا کنی میخواستم بدونم مشکل چی چکار کنم چنین محدودیتی وجود نداشته باشه واگر تعداد داده زیادی رختم بتونم به داده مورد نظر دسترسی پیدا کنم

Mr'Jamshidy
سه شنبه 10 خرداد 1390, 15:20 عصر
شما هر چیزی که بخوای به صورت آرایه تعریف کنی حکایت همینه

چون آرایه ها از نوع Integer هستن و دیگه خودتون رنج این نوع داده رو میدونید

aleas2
سه شنبه 10 خرداد 1390, 15:43 عصر
شما هر چیزی که بخوای به صورت آرایه تعریف کنی حکایت همینه

چون آرایه ها از نوع Integer هستن و دیگه خودتون رنج این نوع داده رو میدونید
خب الان راه حل چی؟کامپونت listbox دارین که چنین مشکلی نداشته باشه؟

vbhamed
سه شنبه 10 خرداد 1390, 20:05 عصر
سلام

بهتره به جاش از گرايد استفاده كنيد، امكاناتش هم خيلي بيشتره
مثلا همين vsFlexGrid خودمون از مجموعه ComponentOne

aleas2
سه شنبه 10 خرداد 1390, 22:34 عصر
سلام

بهتره به جاش از گرايد استفاده كنيد، امكاناتش هم خيلي بيشتره
مثلا همين vsFlexGrid خودمون از مجموعه ComponentOne

والا من با این کار نکردم میشه روش کار باهش بگی چجوری یه رکورد بهش میشه اضافه کرد چجوری میشه یه رکورد دلخوا ازش حذف کرد چجوری میشه رکورد دلخوا رو بریزی تو textbox چجوری میشه تعداد رکورد هارو بدست اورد؟چجوری میشه تمام رکورد هارو حذف کرد؟

vbhamed
چهارشنبه 11 خرداد 1390, 03:20 صبح
سلام

اول از همه بگم اين يك كنترل اكتيوايكس خيلي معروف هست كه بايد نصب بشه
دوم اينكه اين گرايد هست يعني مي تونه چند ستون داشته باشه اما براي كار شما 1 ستون كافيه پس اگر اسمش رو بزاريم grd تو Form_Load دستورات زير رو بنويسيد
grd.Rows = 0
grd.Cols = 1
grd.SelectionMode = flexSelectionListBox

چجوری یه رکورد بهش میشه اضافه کرد (براي 1 ركورد فقط اين دستور)
grd.AddItem "test"

اما براي مثلا 40000 تا ركورد :
grd.Redraw = flexRDNone

Dim i&

For i = 1 To 40000
grd.AddItem i
Next

'اين دستور سطر جاري رو برابر سطر اول قرار مي ده (مشابه ListIndex در ليست باكس)
grd.Row = 0

grd.Redraw = flexRDBuffered


چجوری میشه یه رکورد دلخواه ازش حذف کرد
grd.RemoveItem 1

چجوری میشه رکورد دلخواه رو بریزی تو textbox
Text1 = grd.TextMatrix(3, 0) 'متن سطر چهارم ستون اول

چجوری میشه تعداد رکورد هارو بدست اورد؟
MsgBox grd.Rows

چجوری میشه تمام رکورد هارو حذف کرد؟
grd.Rows = 0

aleas2
چهارشنبه 11 خرداد 1390, 09:22 صبح
واقعا ممنون ولی من فکر کردم شما اینو میگین Microsoft FlexGrid Control 6.0 شرمنده اگر امکان داره اکتوایکس vsFlexGrid بدین که نصبش کنم واقعا ممنون

vbhamed
پنج شنبه 12 خرداد 1390, 06:48 صبح
سلام

البته اين ورژن 3 هست، ورژنهاي جديد رو مي‌تونيد جستجو كنيد و نصبش كنيد
http://www.4shared.com/file/r86WJP-p/vsf336.html