PDA

View Full Version : سوال: اصلاح کد



Hassan2500
جمعه 30 تیر 1391, 00:07 صبح
سلام

من میخوام در این سورس زیر اعداد اینطوری وارد MSFlexGrid شوند

89992

نه اینطوری

89993

سورسش مربوط اینه وقتی در تکست1 مینویسیم به ازای هر کاراکتر یه عدد در تکست2 گذاشته میشه بعدش اعداد در تکست2 وارد هر سلول MSFlexGrid میشن اما جهت قرار گرفتن اعداد من میخوام اینطوری نباشه و بعدش اعداد دو رقمی رو هر رقمشو وارد یک سلول میشه میخوام مثلا عدد 10 کلش وارد یک سلول بشه یا اعداد مثلا سه رقمی یا بیشتر هر کدوم وارد یک سلول بشن نه هر رقمشون وارد یک سلول بشن

89994
http://barnamenevis.org/images/misc/pencil.png

Hassan2500
جمعه 30 تیر 1391, 15:16 عصر
کسی نیست پاسخ بده

محسن واژدی
جمعه 30 تیر 1391, 16: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, 17:00 عصر
آقای واژدی کد درست شده فقط تنها مشکلی که هست من میخوام اعداد از راست به چپ وارد سلولها شوند مثل تصویر1 در پست1 در ضمن در جدول همیشه یه عدد کمتر گذاشته میشه نسبت به تکست2 اینم درست کنید ممنون میشم

Hassan2500
جمعه 30 تیر 1391, 22:18 عصر
آقای واژدی کدش رو تصحیح کردید

محسن واژدی
جمعه 30 تیر 1391, 22:25 عصر
سلام
دوباره کد پست 3 را بررسی کنید

موفق باشید

Hassan2500
جمعه 30 تیر 1391, 22:33 عصر
کد پست3 حالا تنها مشکلش هنگام پاک کردن حروف تکست1 که از ده تا میگذره عددها در سلولها دوتا دوتا پاک میشن یا بعضی مواقع اصلا بخوبی پاک نمیشن میخوام همزمان با همدیگه پاک شن اینم درست کنید

محسن واژدی
شنبه 31 تیر 1391, 10:11 صبح
سلام علیکم

خط زیر را:

If .Cols - 1 < UBound(sStr$) Then .Cols = UBound(sStr$) + 1

جایگزین:

If .Cols - 1 < Len(sStr2$) Then .Cols = Len(sStr2$) + 1
کنید

البته مشکلات اینچنینی چندان پیچیده نیستند، خودتان هم با کمی تلاش می توانید آنها را برطرف کنید که هم تجربه تان بیشتر میشود و هم کمتر معطل می شوید

موفق باشید

Hassan2500
شنبه 31 تیر 1391, 11:39 صبح
کد بالا رو جایگزین کردم ولی همزمان با هم پاک نشدن مثلا اینطوری میخوام اگه تعداد حروف تکست 18تا شد اعداد داخل سلولها هم 18تا شود وقتی شد 17تا شد اعداد داخل سلولها 17تا شود همزمان با همدیگه اگه کم شن اگه حروف تکست1 رو یکی یکی پاک کردم

90033

Hassan2500
یک شنبه 01 مرداد 1391, 00:07 صبح
آقای واژدی لطفا به پست9 پاسخ بدید

محسن واژدی
یک شنبه 01 مرداد 1391, 17:08 عصر
سلام علیکم
دوباره پست 3 را بررسی کنید
در مورد حذف سلول های اضافی، قبلا در همین ماژول (البته کاملتر) که در پست های پیشین ارائه شد، سلول های اضافه هم حذف میشد

موفق باشید