PDA

View Full Version : ساخت listbox در هنگام اجرا



arenaw
یک شنبه 08 آبان 1390, 22:29 عصر
سلام دوستان
دارم یه برنامه بانک اطلاعاتی مینویسم که از فایل متنی استفاده میکنه و و کلا از بانک ویبی جداست
برای لود کردن فیلد های هر ردیف از لیست باکس استفاده کردم یعنی مثلا 3 تا لیست کنار همن و وقتی مثلا 3ومی یکیشون سلکت میشه هم زمان اون 2 تا لیست دیگه هم میرن روی 3ومیشون...
بگذریم...
چون هر بانکی که ساخته میشه معلوم نیست چنتا فیلد تو هر ردیفش داره پس تعداد لیست باکس ها و اسم هرکدوم معلوم نیست از قبل. میخوام بدونم راهی هست که در هنگام اجرا مقدار های left & top & height & width و نوع و اسم رو مشخص کنیم و ویبی خودش اون رو بسازه؟

مثلا یه چنین کدی:



Make (ListBox,"salam",top&,left&,height&,width&)

با تشکر

just4froum
یک شنبه 08 آبان 1390, 23:21 عصر
با سلام

من اين كه بشه يك ليست باكس جديد با نام جديد ساخته بشه يا نه رو نميدونم امكان داره يا نه !!!

ولي شما مي تونيد يك ليست باكس روي فرمتون بگذاريد بعد index ليست باكس را برابر صفر قرار دهيد و visible را برابر false بعد هربار كه خواستيد ليست باكس جديدي درست كنيد بدين شكل عمل كنيد :



Load List1(1)
List1(1).Visible = True
List1(1).Left = 0
List1(1).Top = 0
List1(1).Width = 1500
List1(1).Height = 1500




براي ليست باكس بيشتر هم كافيه در قسمت list1(x) جاي X شماره ليست باكستون رو قرار بدين فقط يادتون نره كه visible ليست باكس جديد رو true كنيد.

موفق باشيد

arenaw
یک شنبه 08 آبان 1390, 23:41 عصر
ممنون که جواب دادین ولی :
اولا که نمیشه اسمشون رو عوض کرد
بعدشم مثل این میمونه که به جای استفاده از do while 1 = 1 از for = 1 to 100000 استفاده کنی
درسته عملا مثل همن ولی بلاخره for یه روزی تموم میشه... اینم همونجوریه، چند تا لیست باید بسازم؟! اومدیم طرف خواست یه دونه بیشتر از تعداد لیست ها فیلد بسازه

vbhamed
دوشنبه 09 آبان 1390, 11:07 صبح
سلام

يك ليست باكس بزاريد روي فرم و انديس دارش كنيد يعني List1(0)
بعد هر جا ليست باكس جديد خواستيد اينطوري بارگذاري كنيد
Load List(1)
Load Lust(2)
.
.
.
بعد مي‌تونيد Left, Top, Width, Height رو براي ليستهاي جديد تغيير بديد

M.T.P
دوشنبه 09 آبان 1390, 11:24 صبح
ممنون که جواب دادین ولی :
اولا که نمیشه اسمشون رو عوض کرد
بعدشم مثل این میمونه که به جای استفاده از do while 1 = 1 از for = 1 to 100000 استفاده کنی
درسته عملا مثل همن ولی بلاخره for یه روزی تموم میشه... اینم همونجوریه، چند تا لیست باید بسازم؟! اومدیم طرف خواست یه دونه بیشتر از تعداد لیست ها فیلد بسازه

جواب دوستان همه درست و کامله اما من هم نظر خودم رو عنوان می کنم...
بهتر نیست برای زیبایی برنامه و هم اینکه یک لیست واحد با چندین ستون دلخواه داشته باشید(به تعداد فیلدهاتون) و هم اینکه نیاز به کدنویسی کمتری باشه و از همه مهمتر اینکه بتونید عرض فرم در صورت فیلدهای زیاد اسکرول کنید از Listview استفاده کنید.

با دو خط کد همه ستون ها یا همون فیلدهاتون پاک میشه.



Lv.ListItems.Clear
Lv.ColumnHeaders.Clear


و به همین راحتی می تونید به تعداد فیلدهاتون ستون به لیست اضافه کنید.



With Lv.ColumnHeaders
.Add , , "Field1"
.Add , , "Field2"
.Add , , "Field3"
.Add , , "Field4"
End With

از همه مهمتر اینکه با انتخاب یک آیتم از لیست کل ردیف مورد نظرتون انتخاب میشه.

just4froum
دوشنبه 09 آبان 1390, 13:58 عصر
ممنون که جواب دادین ولی :
اولا که نمیشه اسمشون رو عوض کرد
بعدشم مثل این میمونه که به جای استفاده از do while 1 = 1 از for = 1 to 100000 استفاده کنی
درسته عملا مثل همن ولی بلاخره for یه روزی تموم میشه... اینم همونجوریه، چند تا لیست باید بسازم؟! اومدیم طرف خواست یه دونه بیشتر از تعداد لیست ها فیلد بسازه

نيازي نيست كه شما بدونيد چنتا بايد بسازيد كافيه يه متغير public از نوع long بسازيد و هر بار كه خواستيد ليست باكس جديد رو لود كنيد و به متغير يك واحد اضافه كنيد حالا هر تعداد كه كاربر بخواد مي تونه ليست باكس بسازه