با عرض سلام
ميخواستم بدونم چه جوري ميتونم گزينه Undo و Redo رو ايجاد كنم كه با زدن Undo نوشته هاي پاك شده در ريچ
تكست باكس برگردانده شوند و با زدن دكمه Redo عكس اين عمل انجام شود ؟؟؟؟؟؟؟؟؟؟؟؟؟؟
:40::11:
Printable View
با عرض سلام
ميخواستم بدونم چه جوري ميتونم گزينه Undo و Redo رو ايجاد كنم كه با زدن Undo نوشته هاي پاك شده در ريچ
تكست باكس برگردانده شوند و با زدن دكمه Redo عكس اين عمل انجام شود ؟؟؟؟؟؟؟؟؟؟؟؟؟؟
:40::11:
برای اینکار به دو متغیر نیاز دارید که مقادیر مختلف تکست رو بگیرند !
1- پس اول دو متغیر در بخش جنرال از نوع String تعریف میکنید !
2- در Form و رویداد Load کد زیر را مینوسید تا مقدار اولیه ی تکست وارد متغیر a شود :
کد:Private Sub Form_Load()
a = Text1.Text
End Sub
3- در TextBox و رویداد KeyUp کد زیر را مینوسید تا آخرین عبارتی که وارد کردید به b منتقل شود :
کد:Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
b = Text1.Text
End Sub
4- حالا در دکمه های Undo و Redo به ترتیب کدهای زیر را مینوسید :
کد:Private Sub Command1_Click()
Text1.Text = a
End Sub
کد:Private Sub Command2_Click()
Text1.Text = b
End Sub
* با استفاده از Clipboard هم میشه اینکار رو انجام داد ولی فقط برای نگهداری یک مقدار . واسه همین استفاده از متغیر بهتره !
خب این ماله یه حرفه ، نه ؟
یعنی Undo آخرین حرف رو بر می گردونه .
Undo اولین مقدار که در تکست باکس با شروع فرم نمایش داده بشه رو برمیگردونه !نقل قول:
به نظر من اگر ترتیب کد های بالا رو یکم تغییر بدهید بهتر نتیجه می گیرید،
همان طور که دوستمون گفتند:
در TextBox و رویداد KeyUp کد زیر را مینوسید تا آخرین عبارتی که وارد کردید به b منتقل شود :
حالا برای دکمه Undo کد زیر رو بنویسید:کد:Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
b = Text1.Text
End Sub
و در ادامه اش این کد را بنویسید:کد:Private Sub Form_Load()
a = Text1.Text
End Sub
حالا برای دکمه Redo این کد را بنویسید:کد:Private Sub Command1_Click()
Text1.Text = b
End Sub
اگر کد ها را به این شکل دنبال کنید دیگر مشکل Form Load نخواهید داشت و Undo و Redo همیشه کار خواهند کرد،کد:Private Sub Command1_Click()
Text1.Text = a
End Sub
برای Undo و Redo کردن چند باره هم می بایست از آرایه استفاده کنید که اگر لازم شد توضیح می دهم.
با تشکر از توضیحات مفید Lee_Young_Ae2027L،
موفق باشید.
پی نوشت: البته این کد کار نمی کند چون زمانی که عمل Undo صورت می گیرد متن فرقی با متن حاضر ندارد، برای جلوگیری از این امر به عنوان مثال اولین کد را (کد مربوط به Keyup) فقط برای کلید SPACE بنویسید تا بتوان کلمه قبلی را Undo کرد.
دوست من اگه برنامتو درست نگا کنی اشتباهاتی توشه گلم.نقل قول:
این کد کاملش است،نقل قول:
مشکلی ندیدم :46:
کد:Dim A As String, B As String
Private Sub Command1_Click()
A = Text1.Text
Text1.Text = B
End Sub
Private Sub Command2_Click()
Text1.Text = A
End Sub
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 32 Then
B = Text1.Text
End If
End Sub