View Full Version : چگونه میتوان در vsflexgrid در حین درج اعداد درآن ، بصورت سه رقمی جدا کرد
alivafadarpour
سه شنبه 20 آذر 1386, 16:23 عصر
چگونه میتوان در vsflexgrid در حین درج اعداد درآن ، بصورت سه رقمی جدا کرد
مبین رنجبر
سه شنبه 20 آذر 1386, 16:33 عصر
خوب موقع Add کردن اطلاعات اونرو اول سه رقم سه رقم جدا کن با کد زیر بعد Add کن :
Text1.Text = Format(Text1.text,"###,###")
bobrus
سه شنبه 20 آذر 1386, 17:01 عصر
من با این چیزی که تو داری کار نکردم ولی این کارو با MSHFlexGrid1 انجام دادم اینجوری:
1- تعداد سطر هایی که توی این جدول هست رو بدست میاری
2- یه حلقه for می نویسی از سطر یک تا تعداد سطرهای جدول
3- یکی یکی سطر ها رو پیمایش می کنی
4- توی ستونی که می خوای به صورت سه رقم سه رقم باشه مثل کد زیر انجام میدی
mshflx.col(x)=format (mshflx.col(x),"#,##",)
نکته :
اول اینکه فرمت "##,#" از "###,###" بهتر چون عددت هر چند رقمی باشه جواب می ده ولی دومی فقط برای شش رقمی ها کار می کنه
دوم اینکه کاری که آقای Lsass.crc32 گفته وقتی انجام می شه که توی بانکت برای اون فیلد همین فرمت رو ست کرده باشی وگرنه حتی اگه موقع گرفتن اطلاعات هم اون کار رو انجام بدی باز هم به صورت عددی و بدون فرمت ذخیره می کنه
امیدوارم بدردت بخوره
مبین رنجبر
سه شنبه 20 آذر 1386, 17:50 عصر
خوب bobrus جان اگر 1000000 اطلاعات داشتی چیکار میکنی ؟ منتظر میمونی که حلقه یکی یکی سطر ها رو پیمایش کنه ؟
bobrus
سه شنبه 20 آذر 1386, 18:10 عصر
نه داداش اون موقه از ابزار دیگه مثل MSHFlexGrid استفاده می کنم که تو خصوصیاتش یه گزینه به نام format داره و توی اون ست می کنم دیگه منتظر چیزیم نمی مونم
تازه شما راهنمایی کردی منم کاملش کردم نگفتم که مال تو ایراد داره زود شاکی میشی
مبین رنجبر
سه شنبه 20 آذر 1386, 18:17 عصر
من مگه شاکی شدم ؟ فقط انتقاد کردم .. انتقاد پذیر هستی ؟ ....
تازه اگر از MSHFLEXGRID استفاده نکنی چی ؟ بیاد تکست هاتو به بانک وصل کنی .. اون وقت چیکار می کنی ؟
alivafadarpour
چهارشنبه 21 آذر 1386, 06:39 صبح
دوست عزیز من مستقیم مخواهم عین excel عدد درآن وارد کنم . دقیقا عین text_change می خواهم عمل کند .یعنی در حین درج عدد در یکی از سلولهای msflexgrid بصورت سه رقم سه رقم جدا کند. خیلی نیاز دارم.
bobrus
چهارشنبه 21 آذر 1386, 10:26 صبح
علی جان من تا حالا ندیدم که کسی از flexgrid به اینصورت استفاده بکنه و فکر می کنم که اصلاً یه همچین خصوصیتی رو نداره شما باید از یه ابزار دیگه استفاده کنین .
آقای lsass.crc32 من مشکلی با انتقاد ندارم . من هیچ وقت تکست هامو مستقیم به بانک وصل نمی کنم برای اینکه انعطاف پذیری کارمو کم می کنه اگه اول دیتا رو از یوزر بگیری بعد خودت اضافه کنی بهتره چون هر بلایی می تونی سر دیتا بیاری بعد ثبت کنی بدون انیکه بانکت مشغول باشه و اگه تحت شبکه هم که باشه سرعتت پایین نمی یاد. کلا توی برنامه تحت شبکه تعداد تراکنشهاتو کم می کنه و کاربرا بهتر و سریعتر به نتیجه می رسن و هر ابزاری هم خصوصیات خودشو داره و از روش خودش میشه کارایی های اونو استفاده کرد باید ببین موقعیت چطوریه.
Mbt925
چهارشنبه 21 آذر 1386, 11:02 صبح
توی msflexgrid خیلی راحت میشه ردیف و ستونی که الان انتخاب شده رو بدست آورد.
حالا 2 راه داریم برای اینکه یه متن بصورت مستقیم تایپ بشه و ما اون متن رو وارد اون سلول خاص بکنیم.
راه اول:
در شروع تایپ یه TextBox رو دقیقا توی همون سلول (اندازشو دقیقا اندازه سلول می کنیم) قرار میدیم تا کاربر متن رو وارد کنه و در پایان متن داخل TextBox رو وارد سلول میکنیم و TextBox رو بر می داریم.
راه دوم:
متن وارد شده رو مستقیما به محتوای سلول اضافه کنیم .
در این روش انعطاف کمتره و کار یکم مشکل تر.
جدا کردن متن هم که خیلی ساده است. البته اگه نظر منو بخواین ، پیشنهاد می کنم از vsFlexGrid استفاده کنین ، چون با اون دیگه برای این کارا نیاز به کد نویسی نیست.
ermia2008
چهارشنبه 21 آذر 1386, 12:25 عصر
چگونه میتوان در vsflexgrid در حین درج اعداد درآن ، بصورت سه رقمی جدا کرد
سلام. می تونید در حین ورود رشته در رویدادKey Press طول رشته رو چک کنید که اگه بر 3 بخش پذیر بود کاما قرار بده:
Dim row As Long
Dim col As Long
Dim tool As Long
Private Sub MSFlexGrid1_Click()
row = MSFlexGrid1.RowSel
col = MSFlexGrid1.ColSel
End Sub
Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
k = 0
tool = Len(MSFlexGrid1.TextMatrix(row, col))
For i = 1 To tool
Char = Mid(MSFlexGrid1.TextMatrix(row, col), i, 1)
If Char = "," Then
k = k + 1
End If
Next
If tool = 3 And tool > 0 Then
MSFlexGrid1.TextMatrix(row, col) = MSFlexGrid1.TextMatrix(row, col) + ","
MSFlexGrid1.TextMatrix(row, col) = MSFlexGrid1.TextMatrix(row, col) + Chr(KeyCode)
Exit Sub
End If
If (tool - k) Mod 3 = 0 And tool > 0 Then
MSFlexGrid1.TextMatrix(row, col) = MSFlexGrid1.TextMatrix(row, col) + ","
End If
MSFlexGrid1.TextMatrix(row, col) = MSFlexGrid1.TextMatrix(row, col) + Chr(KeyCode)
End Sub
alivafadarpour
چهارشنبه 21 آذر 1386, 13:19 عصر
عزیزجان . اگر این را اجرا کنی به منظورم پی می بری
Private Sub Text1_Change()
If Text1.Text <> "" Then
(" Text1.Text = Format(Text1.Text, "##,0
(Text1.SelStart = Len(Text1.Text
End If
End Sub
عدد را مستقیم در یکی از سلولهای vsflexgrid7 وارد کرد و در حین درج اعداد همزمان، در همان سلول بصورت سه رقم سه رقم جدا کند
alivafadarpour
چهارشنبه 21 آذر 1386, 13:25 عصر
عزیزجان . اگر این را اجرا کنی به منظورم پی می بری
Private Sub Text1_Change()
If Text1.Text <> "" Then
(" Text1.Text = Format(Text1.Text, "##,0
(Text1.SelStart = Len(Text1.Text
End If
End Sub
عدد را مستقیم در یکی از سلولهای vsflexgrid7 وارد کرد و در حین درج اعداد همزمان، در همان سلول بصورت سه رقم سه رقم جدا کند
ermia2008
چهارشنبه 21 آذر 1386, 14:19 عصر
عزیزجان . اگر این را اجرا کنی به منظورم پی می بری
Private Sub Text1_Change()
If Text1.Text <> "" Then
(" Text1.Text = Format(Text1.Text, "##,0
(Text1.SelStart = Len(Text1.Text
End If
End Sub
عدد را مستقیم در یکی از سلولهای vsflexgrid7 وارد کرد و در حین درج اعداد همزمان، در همان سلول بصورت سه رقم سه رقم جدا کند
عزیز این کدی که فرستادم همین کارو انجام میده . همون لحظه که عدد رو وارد می کنید 3 رقم 3رقم جدا میکنه.
مشکل چیه؟
مبین رنجبر
چهارشنبه 21 آذر 1386, 17:33 عصر
ermia2008 الان مشکل شما چیه ؟ خوب درستشم همینه که وقتی وارد میکنی جدا کنه دیگه
javidp
چهارشنبه 21 آذر 1386, 18:57 عصر
Private Sub VSFlexGrid1_KeyUpEdit(ByVal Row As Long, ByVal Col As Long, KeyCode As Integer, ByVal Shift As Integer)
With VSFlexGrid1
If Col = 1 Then
.EditText = Format(.EditText, "#,###")
End If
End With
End Sub
alivafadarpour
پنج شنبه 22 آذر 1386, 06:52 صبح
خیلی خیلی ممنون جاویدجان. در صورت ممکن شماره تلفنت را به من بدهید جهت تشکر خالصانه از حضرتعالی.
ermia2008
پنج شنبه 22 آذر 1386, 13:48 عصر
سلام.
اینم یه sample دیگه که با استفاده از Msflexgrid نوشته شده که مثل textBox میتونید داخلش تایپ کنید و در حین درج عدد 3 رقم 3 رقم جدا می کنه. فقط کافیه برای edit کردن هر خونه روی اون Double Click کنید و برای ثبت تغییرات Enter رو بزنید.
لینک:
کد:
http://ermia2008.persiangig.com/DirectEnteringText.rar (http://ermia2008.persiangig.com/)
Mbt925
پنج شنبه 22 آذر 1386, 14:07 عصر
نمونه ای Ermia2008 عزیز گذاشتن ، دقیقا همون روشیه که من توی صفحه ی قبل توضیح دادم.
این روش برای استفاده از MsFlexGrid بهترین روشه.
برای استفاده از VsFlexGrid که به روش نیازی نیست ، چون کار خیلی سادست.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.