PDA

View Full Version : انتقال یک تکست باکس به یک تکست باکس دیگه



xrezax
سه شنبه 18 مرداد 1390, 11:46 صبح
یه تکست باکس دارم که 50 سطر نوشته توشه ، حالا می خوام وقتی روی یک کامند کلیک کنم 10 خط اول از تکست اول پاک بشه بره تو تکست دومی . و همینجور ادامه بده . هر کلیکی که می زنم 10 سطر بفرسته تو دومی و از اولی پاک کنه

محسن واژدی
سه شنبه 18 مرداد 1390, 12:26 عصر
سلام علیکم
انتهای هر خط توسط کاراکتر vbCrLf پایان میابد پس میتوانید از این کاراکتر به عنوان جداکنند خطوط استفاده و توسط دستور Mid برای گرفتن هر خط استفاده کنید و در هر دفعه Mid ده خط را توسط vbCrLfیافته و منتقل کنید

xrezax
سه شنبه 18 مرداد 1390, 13:55 عصر
50 سطر توسط برنامه ساخته نمیشه. تصادفیه . یعنی آخرین کلمه سطر 10 قابل تشخیص نیست. می خوام خود برنامه تشخیص بده که سطر 10 فلانی و جداشون کنه. سورس بزارید عالی میشه

butterfly8528
سه شنبه 18 مرداد 1390, 18:57 عصر
سلام دوست عزیز .
یک CommandButton و دوتا TextBox بگذار روی فرم و خاصیت MultiLine تکست باکس ها رو True کن، و کد زیر رو بریز داخل فرمت و پروژه رو اجرا کن :
'www.arshamsoft.com

Option Explicit

Private Sub Form_Load()

Dim i As Byte

For i = 1 To 57
Text1.Text = Text1.Text & i & vbCrLf
Next i

End Sub



Private Sub Command1_Click()

Dim strA() As String, i As Integer, lastLine As Integer

strA = Split(Text1.Text, vbCrLf)

If UBound(strA) < 9 Then lastLine = UBound(strA) Else lastLine = 9

For i = 0 To lastLine
If i <= lastLine Then
Text2.Text = Text2.Text & strA(i) & vbCrLf
Else
Text2.Text = Text2.Text & strA(i)
End If
Next i

lastLine = i

Text1.Text = ""

For i = lastLine To UBound(strA)
If i < UBound(strA) Then
Text1.Text = Text1.Text & strA(i) & vbCrLf
Else
Text1.Text = Text1.Text & strA(i)
End If
Next i

End Sub


اگه جایی از کد براتون نا مفهوم بود بگید که براتون توضیح بدم .
موفق باشید :لبخندساده:

setroyd
چهارشنبه 19 مرداد 1390, 04:29 صبح
این کد گنگ هست برای یه مبتدی شما میتونی با sendmessage اینکارو با 10 خط کد به صورت خوانا بکنی

butterfly8528
چهارشنبه 19 مرداد 1390, 05:01 صبح
سلام دوست عزیز .
کجاش گنگ هست ؟ اگه راه بهتری سراغ داری بسم الله.

setroyd
چهارشنبه 19 مرداد 1390, 05:18 صبح
سرعت مهم ترین چیزه با api بهتر و راحت تره کدشو میزارم . بزار بنویسم بزارم

xrezax
پنج شنبه 20 مرداد 1390, 18:36 عصر
سلام دوست عزیز .
یک CommandButton و دوتا TextBox بگذار روی فرم و خاصیت MultiLine تکست باکس ها رو True کن، و کد زیر رو بریز داخل فرمت و پروژه رو اجرا کن :
'www.arshamsoft.com

Option Explicit

Private Sub Form_Load()

Dim i As Byte

For i = 1 To 57
Text1.Text = Text1.Text & i & vbCrLf
Next i

End Sub



Private Sub Command1_Click()

Dim strA() As String, i As Integer, lastLine As Integer

strA = Split(Text1.Text, vbCrLf)

If UBound(strA) < 9 Then lastLine = UBound(strA) Else lastLine = 9

For i = 0 To lastLine
If i <= lastLine Then
Text2.Text = Text2.Text & strA(i) & vbCrLf
Else
Text2.Text = Text2.Text & strA(i)
End If
Next i

lastLine = i

Text1.Text = ""

For i = lastLine To UBound(strA)
If i < UBound(strA) Then
Text1.Text = Text1.Text & strA(i) & vbCrLf
Else
Text1.Text = Text1.Text & strA(i)
End If
Next i

End Sub


اگه جایی از کد براتون نا مفهوم بود بگید که براتون توضیح بدم .
موفق باشید :لبخندساده:
مرسی دوست عزیز خیلی بکارم اومد . حالا می خوام 2 تا تغییر کوچولو هم برام توش بدی یکی اینکه آخر هر 10 خط لیست دو برام بنویسه "لطفا صبر کنید" و اگر لیست یک تموم بشه و تمام خطوط منتقل شدن و لیست یک خالی شد آخر 10 خط منتقل شده بنویسه "پایان"
این کارو واسه این می خوام تا کاربر متوجه بشه که عملیات داره انجام میشه و یا به پایان رسیده.
بازم ممنون

butterfly8528
جمعه 21 مرداد 1390, 03:33 صبح
سلام .
دوست عزیز بهتره خودتون رو درگیر کاری که میخوای انجامش بدی کنی،تا هم تجربه کسب کنی هم راه حل رو بهتر بفهمی .
برای اعمال تغییراتی که مد نظرت هست،کد زیر رو بعد از حلقه دوم اضافه کن :


If Text1.Text <> "" Then
Text2.Text = Text2.Text & vbCrLf & "Please Wait..."
Else
' Baraye Hazf Kardane 'Please Wait...' az TextBox2
Text2.Text = Replace(Text2.Text, vbCrLf & "Please Wait...", "")
Text2.Text = Text2.Text & vbCrLf & "Process Complete."
End If



موفق باشی :لبخندساده:

xrezax
جمعه 21 مرداد 1390, 20:21 عصر
مرسی از کمکات؛ یه مشکل اساسی دیگه دارم که اینه؛
2تا کامند داریم و 2تا تکست باکس؛ توی کامند اولی دستورات شمارو زاشتم که محتوای تکست 1 رو به تکست 2 ارسال کنه؛ و وقتی تیکه اول وارد تکست1 شد میخوام روی کامند2 کلیک بشه و وقتی ارسال شد تیکه بعدی بیاد یعنی روی کامند1 کلیک بشه؛ تا وقتی صبر کنید میده برنامه ادامه بده ؛ امیدوارم واضح پرسیده باشم

butterfly8528
جمعه 21 مرداد 1390, 20:27 عصر
سلام . خواهش میکنم .
متاسفانه اصلا متوجه منظورتون نشدم .

xrezax
شنبه 22 مرداد 1390, 13:59 عصر
فایل ضمیمه رو یه نگاه بندازین امیدوارم واضح باشه.:قلب:

butterfly8528
شنبه 22 مرداد 1390, 19:52 عصر
سلام دوست عزیز .

و وقتی تیکه اول وارد تکست1 شد میخوام روی کامند2 کلیک بشه
برای اینکار این قسمت کد رو به صورت زیر تغییر بدید :

If Text1.Text <> "" Then
Text2.Text = Text2.Text & vbCrLf & "Please Wait..."
Call Command2_click
Else
' Baraye Hazf Kardane 'Please Wait...' az TextBox2
Text2.Text = Replace(Text2.Text, vbCrLf & "Please Wait...", "")
Text2.Text = Text2.Text & vbCrLf & "Process Complete."
End If



و وقتی ارسال شد تیکه بعدی بیاد یعنی روی کامند1 کلیک بشه؛

دوست عزیز شما از هر روال ویا روشی که برای ارسال استفاده میکنید باید ارسال شدن رو چک کنید و بعد از اینکه ارسال صورت گرفته بود کد زیر رو اجرا کنید :
If Text1.Text <> "" Then Call Command1_click
موفق باشید .

xrezax
یک شنبه 23 مرداد 1390, 13:21 عصر
باز کارم راه نیافتاد. راه داره کاری کرد که مثلاً 50 سطرو هر 5 ثانیه 10سطر 10سطر بفرسته توی تکست باکس دومی و دکمه ارسالو بزنه ؟؟ پایان هم که داد برنامه دست نگه داره.

butterfly8528
یک شنبه 23 مرداد 1390, 16:53 عصر
سلام .
عزیز جان تا روال ارسال شما مشخص نباشه کاری نمیشه کرد .

راه داره کاری کرد که مثلاً 50 سطرو هر 5 ثانیه 10سطر 10سطر بفرسته توی تکست باکس دومی و دکمه ارسالو بزنه ؟؟ پایان هم که داد برنامه دست نگه داره.
برای این کار یک تایمر با اینتروال 5000 بگذار روی فرمت و کد های زیر رو به برنامت اضافه کن :
Private Sub Timer1_Timer()
If Text1.Text <> "" Then
Call Command1_Click
Call Command2_Click
Else
Timer1.Enabled = False
End If
End Sub
موفق باشی .