View Full Version : مشکل در کامبو باکس برای ایجاد فاصله برابر
sohrab o
سه شنبه 02 مهر 1387, 22:17 عصر
من یه برنامه فروش کالا نوشتم که در قسمت ثبت اسناد باید لیست کالا ها آورده شود که در یک کامبو باکس نام کالا و کد کالا نمایش داده می شود. مشکلی که من دارم این است که بین نام کالا و کد باید تعداد فاصله بزارم.مثلا
آدامس 110
پفک 120
چیپس چی توز 150
در مثال بالا فاصله ها برابر است ولی با توجه به اینکه طول نام با هم متفاوت است کد ها هم عقب جلو میروند.
یک روش این است که تعداد کاراکترها رو بگیرم و با توجه به اون کار کنم که بازم خیلی دقیق نیست آخه طول کراکتر ها با هم برابر نیست؟می شه یه راه حلی پیشنهاد بدین؟
نمونشو گذاشتم
sohrab o
چهارشنبه 03 مهر 1387, 10:50 صبح
یعنی راهی نداره؟؟؟؟؟؟؟؟؟؟؟؟؟
__siavash__
چهارشنبه 03 مهر 1387, 10:52 صبح
اگر به جای ComboBox از ListBox استفاده کنی با ثابت SETTABSTOPS میتونی این کارو بکنی !
sohrab o
چهارشنبه 03 مهر 1387, 11:29 صبح
اگر به جای ComboBox از ListBox استفاده کنی با ثابت SETTABSTOPS میتونی این کارو بکنی !
آره اگه لیست باشه از VBTab هم میشه استفاده کرد
حلا این SETTABSTOPS چطوری میشه کار کرد؟
__siavash__
چهارشنبه 03 مهر 1387, 11:47 صبح
آره اگه لیست باشه از VBTab هم میشه استفاده کرد
حلا این SETTABSTOPS چطوری میشه کار کرد؟
Dim Retval As Long
Retval = SendMessage(List1.hwnd, LB_SETTABSTOPS, 1, 80&)
http://barnamenevis.org/forum/attachment.php?attachmentid=23724&stc=1&d=1222245967
sohrab o
چهارشنبه 03 مهر 1387, 14:16 عصر
بسیار جالب بود اما برای کامبو چی ؟
Alisalari
چهارشنبه 03 مهر 1387, 22:42 عصر
من یه برنامه فروش کالا نوشتم که در قسمت ثبت اسناد باید لیست کالا ها آورده شود که در یک کامبو باکس نام کالا و کد کالا نمایش داده می شود. مشکلی که من دارم این است که بین نام کالا و کد باید تعداد فاصله بزارم.مثلا
آدامس 110
پفک 120
چیپس چی توز 150
در مثال بالا فاصله ها برابر است ولی با توجه به اینکه طول نام با هم متفاوت است کد ها هم عقب جلو میروند.
یک روش این است که تعداد کاراکترها رو بگیرم و با توجه به اون کار کنم که بازم خیلی دقیق نیست آخه طول کراکتر ها با هم برابر نیست؟می شه یه راه حلی پیشنهاد بدین؟
نمونشو گذاشتم
سلام : منم دقيقا" همين مشكل رو دارم ، منتهي با Listbox ، از VBTab هم استفاده كردم اما بازم كدها دقيقا روي هم مرتب نميشن ، يه نفر به ما كمك كنه
sohrab o
چهارشنبه 03 مهر 1387, 23:21 عصر
سلام : منم دقيقا" همين مشكل رو دارم ، منتهي با Listbox ، از VBTab هم استفاده كردم اما بازم كدها دقيقا روي هم مرتب نميشن ، يه نفر به ما كمك كنه
کدی که آقا __siavash__ گذاشتنم درسته واسه تو
__siavash__
پنج شنبه 04 مهر 1387, 08:53 صبح
بسیار جالب بود اما برای کامبو چی ؟
روش بالا برای کامبو جواب نمیده چون کامبو با VbTab مشکل داره و همچین ثابتی براش ندیدم !!!
سلام : منم دقيقا" همين مشكل رو دارم ، منتهي با Listbox ، از VBTab هم استفاده كردم اما بازم كدها دقيقا روي هم مرتب نميشن ، يه نفر به ما كمك كنه
از ثابت TabStops برای لیست باکست استفاده کردی بازم مشکل داره ؟
sohrab o
پنج شنبه 04 مهر 1387, 10:12 صبح
روش بالا برای کامبو جواب نمیده چون کامبو با VbTab مشکل داره و همچین ثابتی براش ندیدم !!!
از ثابت TabStops برای لیست باکست استفاده کردی بازم مشکل داره ؟
TabStops یا VBTab
noorsoft
پنج شنبه 04 مهر 1387, 10:45 صبح
file:///C:/DOCUME%7E1/Sara/LOCALS%7E1/Temp/moz-screenshot.jpgfile:///C:/DOCUME%7E1/Sara/LOCALS%7E1/Temp/moz-screenshot-1.jpg Combo1.AddItem Data1.Recordset("CodeC") + Space(20 - Len(Data1.Recordset("CodeC"))) + Data1.Recordset("NameC")
__siavash__
پنج شنبه 04 مهر 1387, 11:35 صبح
TabStops یا VBTab
توی کامبو وقتی VbTab میذاریم اون فاصله رو نمیندازه ؟! البته توی منوی پایین رو نشون نمیده بعد از Select شدن یه آیتم Tab هست
و اینکه من توی MSDN ثابت TabStops برای ComboBox ندیدم !
sohrab o
پنج شنبه 04 مهر 1387, 12:25 عصر
file:///C:/DOCUME%7E1/Sara/LOCALS%7E1/Temp/moz-screenshot.jpgfile:///C:/DOCUME%7E1/Sara/LOCALS%7E1/Temp/moz-screenshot-1.jpg Combo1.AddItem Data1.Recordset("CodeC") + Space(20 - Len(Data1.Recordset("CodeC"))) + Data1.Recordset("NameC")
مرسی اما خودم این روشو گفتم خیلی دقیق نیست،آخه اندازه همه کراکتر ها برابر نیست
اما به نظر می رسه روش دیگه ای نباشه
noorsoft
پنج شنبه 04 مهر 1387, 15:13 عصر
مگر اینکه خودتون یک اکتیوایکس درست کنید که اون کار رو براتون انجام بده
vbhamed
پنج شنبه 04 مهر 1387, 16:52 عصر
سلام
كمبو باكسهايي وجود دارن كه مي تونن مثل گرايد ستون بندي بشن، مثل Sheridan Datawidgets، اما اگر مي خواين از كمبو معمولي استفاده كنيد، طبق روش زير عمل كنيد
2 تا متغير رشته اي با طول ثابت تعريف كنيد به طوري كه طول تعريف شده برابر حداكثر اندازه فيلدها باشه
مثلا دستور زير
Dim x As String * 20, y As String * 10
تو اين دستور فرض كرديم طول فيلد اول نهايتا 20 حرف و طول فيلد دوم نهايتا 10 حرف است
سپس ابتدا فيلد اول رو در X و سپس فيلد دوم رو در Y قرار بدين
X = "Column 1"
Y = "Column 2"
حالا X , Y رو به كمبو اضافه كنيد
Combo1.AddItem X & " " & Y
با اين روش فاصله ها ثابت ميشه
فقط اينكه براي فونت كمبو حتما بايد از فونتهايي استفاده كنيد كه طول حروف در آنها يكسان هست
مثل فونت Courier New
براي اينكه فونتهاي فارسي رو هم درست نشون بده از Courier New (Arabic( استفاده كنيد يا از قسمت Character set در پنجره انتخاب فونت، Arabic رو انتخاب كنيد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.