View Full Version : سوال: اصلاح کد
Hassan2500
جمعه 30 تیر 1391, 01:07 صبح
سلام
من میخوام در این سورس زیر اعداد اینطوری وارد MSFlexGrid شوند
89992
نه اینطوری
89993
سورسش مربوط اینه وقتی در تکست1 مینویسیم به ازای هر کاراکتر یه عدد در تکست2 گذاشته میشه بعدش اعداد در تکست2 وارد هر سلول MSFlexGrid میشن اما جهت قرار گرفتن اعداد من میخوام اینطوری نباشه و بعدش اعداد دو رقمی رو هر رقمشو وارد یک سلول میشه میخوام مثلا عدد 10 کلش وارد یک سلول بشه یا اعداد مثلا سه رقمی یا بیشتر هر کدوم وارد یک سلول بشن نه هر رقمشون وارد یک سلول بشن
89994
http://barnamenevis.org/images/misc/pencil.png
Hassan2500
جمعه 30 تیر 1391, 16:16 عصر
کسی نیست پاسخ بده
محسن واژدی
جمعه 30 تیر 1391, 17:47 عصر
سلام علیکم
کد زیر را جایگزین کد های ماژول فرم کنید:
Function GetTextNums(sText$) As String
Dim i
For i = 1 To Len(sText$)
GetTextNums = i & " " & GetTextNums
Next
End Function
Private Sub AddItemsToFGrid(ByVal sString$, Optional RowIndex% = 0)
On Error Resume Next
Dim i%, j%, sStr$(), cS
Dim sStr2$
sStr2$ = Replace(sString$, " ", "")
sStr$ = Split(sString$, " ")
With MSFlexGrid1
.RightToLeft = True
.ScrollTrack = True
.FixedRows = 0
.HighLight = 0
If .Rows < RowIndex% Then .Rows = RowIndex%
If .Cols - 1 < UBound(sStr$) Then .Cols = UBound(sStr$) + 1
j% = UBound(sStr$)
For i = 1 To .Cols
j% = j% - 1
If i <= UBound(sStr$) Then
.TextMatrix(RowIndex% - 1, i) = sStr$(j%)
Else
.TextMatrix(RowIndex% - 1, i) = Empty
End If
Next
If .Cols > 1 Then
.ColWidth(0) = 1000
Else
.Cols = 1
End If
On Error Resume Next
MSFlexGrid1.TextMatrix(0, 0) = "اعداد"
.ColAlignment(-1) = flexAlignCenterCenter
.ColWidth(-1) = 350
.ColWidth(0) = 600
.RowHeight(0) = 350
.RowHeight(1) = 350
End With
End Sub
Private Sub Text1_Change()
Text2 = GetTextNums(Text1)
AddItemsToFGrid Text2, 1
End Sub
موفق باشید
Hassan2500
جمعه 30 تیر 1391, 18:00 عصر
آقای واژدی کد درست شده فقط تنها مشکلی که هست من میخوام اعداد از راست به چپ وارد سلولها شوند مثل تصویر1 در پست1 در ضمن در جدول همیشه یه عدد کمتر گذاشته میشه نسبت به تکست2 اینم درست کنید ممنون میشم
Hassan2500
جمعه 30 تیر 1391, 23:18 عصر
آقای واژدی کدش رو تصحیح کردید
محسن واژدی
جمعه 30 تیر 1391, 23:25 عصر
سلام
دوباره کد پست 3 را بررسی کنید
موفق باشید
Hassan2500
جمعه 30 تیر 1391, 23:33 عصر
کد پست3 حالا تنها مشکلش هنگام پاک کردن حروف تکست1 که از ده تا میگذره عددها در سلولها دوتا دوتا پاک میشن یا بعضی مواقع اصلا بخوبی پاک نمیشن میخوام همزمان با همدیگه پاک شن اینم درست کنید
محسن واژدی
شنبه 31 تیر 1391, 11:11 صبح
سلام علیکم
خط زیر را:
If .Cols - 1 < UBound(sStr$) Then .Cols = UBound(sStr$) + 1
جایگزین:
If .Cols - 1 < Len(sStr2$) Then .Cols = Len(sStr2$) + 1
کنید
البته مشکلات اینچنینی چندان پیچیده نیستند، خودتان هم با کمی تلاش می توانید آنها را برطرف کنید که هم تجربه تان بیشتر میشود و هم کمتر معطل می شوید
موفق باشید
Hassan2500
شنبه 31 تیر 1391, 12:39 عصر
کد بالا رو جایگزین کردم ولی همزمان با هم پاک نشدن مثلا اینطوری میخوام اگه تعداد حروف تکست 18تا شد اعداد داخل سلولها هم 18تا شود وقتی شد 17تا شد اعداد داخل سلولها 17تا شود همزمان با همدیگه اگه کم شن اگه حروف تکست1 رو یکی یکی پاک کردم
90033
Hassan2500
یک شنبه 01 مرداد 1391, 01:07 صبح
آقای واژدی لطفا به پست9 پاسخ بدید
محسن واژدی
یک شنبه 01 مرداد 1391, 18:08 عصر
سلام علیکم
دوباره پست 3 را بررسی کنید
در مورد حذف سلول های اضافی، قبلا در همین ماژول (البته کاملتر) که در پست های پیشین ارائه شد، سلول های اضافه هم حذف میشد
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.