Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Команды копировать, вырезать и вставить для всех.


Автор: Jr13san 1.9.2008, 19:20
Привет всем, кто на форуме...
У меня возникла проблемка с командами копировать, вырезать и вставить...
Я нашел эти функции только для одного textbox'a , а мне нужно для нескольких...
Пока что нужно разобраться с одной, а аналогично ей я попробую сделать и другие...
На форме имеется 3 textbox'a  и одна Command1.
Вот код для Command1:
Код

On Error Resume Next
Clipbroad.clear
Clipbroad.settext Form1.text1.seltext 

Эта функция для копирования выделенного текста из Text1.text.
Мне нужно, чтобы текст можно было копировать не только из Text1.text,а и из Text2.text и Text3.text

Автор: I_Am_Rock 1.9.2008, 19:51
Цитата

Я нашел эти функции только для одного textbox'a , а мне нужно для нескольких...

У одних ТекстБоксов одни свойства и пр., а у других - другие!?  smile 

Может тебе нужно соеденить...
Ты не пробовал так? 

Код

On Error Resume Next
Clipbroad.clear
Clipbroad.settext Form1.text1.seltext + Form1.text2.seltext + Form1.text3.seltext 

Автор: Jr13san 3.9.2008, 15:50
если честно, я даже сам запутался...
но пример твой я попробую...

Ведь пример, что выше - он действует только на одном текстбоксе, а мне нужно, чтобы команды действовали на все 3 текстбокса. Вот как именно это сделать я не понимаю...
Если не понял, то попробую ещё проще расписать..

Автор: I_Am_Rock 3.9.2008, 18:22
Не очень понял. И у меня твоя функция копирует не выделенный текст, а другое. Попробуй сам запустить...

Автор: Jr13san 4.9.2008, 15:17
I_AM_Rock. Извини, я ошибся, когда писал код.
Я вот тут написал что нужно...

Помогите мне сделать примерно так:
на форме имеется 10 textbox'ов и меню.

Вот код для меню:


'"копировать" 
Код

Private Sub mnuEditCopy_Click() 
On Error Resume Next 
Clipboard.Clear 
Clipboard.SetText frmMain.Text1.SelText 
End Sub


'"вырезать" 
Код

Private Sub mnuEditCut_Click() 
On Error Resume Next 
Clipboard.Clear 
Clipboard.SetText frmMain.Text1.SelText 
frmMain.Text1.SelText = vbNullString 
End Sub


'"вставить" 
Код

Private Sub mnuEditPaste_Click() 
On Error Resume Next 
frmMain.Text1.SelText = Clipboard.GetText 
End Sub


Как я писал выше, оно работает только для одного текстбокса.
Мне нужно, чтобы из любого текстового поля можно было скопировать выделенный текст. И в любое поле вставить текст.
Примерно как в Excel'e. Там тоже можно скопировать из любого поля и вставить в любое поле скопированный текст.

Или помогите мне хотябы написать:
Если текст в текстовом поле "Text1" выделен, то буфер обмена очищается и выделенный текст записывается в буфер обмена.

Пробовал так, но не получилось:
Код

On Error Resume Next
If Text1.SelText Then
Clipboard.Clear
Clipboard.SetText Text1.SelText
ElseIf Text2.SelText Then
Clipboard.Clear
Clipboard.SetText Text2.SelText
ElseIf Text3.SelText Then
Clipboard.Clear
Clipboard.SetText Text3.SelText
ElseIf Text4.SelText Then
Clipboard.Clear
Clipboard.SetText Text4.SelText
ElseIf Text5.SelText Then
Clipboard.Clear
Clipboard.SetText Text5.SelText
ElseIf Text6.SelText Then
Clipboard.Clear
Clipboard.SetText FrmLoad.Text6.SelText
ElseIf Text7.SelText Then
Clipboard.Clear
Clipboard.SetText FrmLoad.Text7.SelText
ElseIf Text8.SelText Then
Clipboard.Clear
Clipboard.SetText FrmLoad.Text8.SelText
ElseIf Text9.SelText Then
Clipboard.Clear
Clipboard.SetText FrmLoad.Text9.SelText
ElseIf Text10.SelText Then
Clipboard.Clear
Clipboard.SetText FrmLoad.Text10.SelText
End if

Кто шарит в этих командах, помогите...

Автор: I_Am_Rock 4.9.2008, 15:43
Я понял. Жди пример кода - чуть попозже выложу...

Автор: I_Am_Rock 4.9.2008, 16:36
Нужно делать так.
ТекстБоксы должны быть массивом объектов.
Объяснить? 
1) Размести на форме ТекстБокс
2) Убедись, что он активный (т.е. выделен)
3) Нажми Edit -> Copy
4) Нажми Edit -> Paste
5) В появившемся окошке нажми "Да" - на форме появится новый ТекстБокс
6) Штампуй ТекстБоксы (Edit -> Paste) , пока на форме не будет требуемое кол-во.
Обрати внимание - все ТекстБоксы имеют одно имя (name) - Text1. Но у всех разное свойство Index - от 0 до 9 (если 10 текстбоксов).

А вот и код. В GotFocus мы присваиваем переменной k номер выделенного объекта. А потом это k используем при вырезании, вставлении, копировании.

Код

Dim k As Integer

Private Sub mnuEditCopy_Click()
On Error Resume Next
Clipboard.Clear
Clipboard.SetText frmMain.Text1.Item(k).SelText
End Sub

Private Sub mnuEditPaste_Click()
On Error Resume Next
frmMain.Text1.Item(k).SelText = Clipboard.GetText
End Sub

Private Sub mnuEditCut_Click()
On Error Resume Next
Clipboard.Clear
Clipboard.SetText frmMain.Text1.Item(k).SelText
frmMain.Text1.Item(k).SelText = vbNullString
End Sub

Private Sub Text1_GotFocus(Index As Integer)
k = Index
End Sub


Если что не понятно - спрашивай! smile

Автор: Jr13san 6.9.2008, 12:08
ок я попробую и если что, напишу..

Автор: Jr13san 16.9.2008, 13:13
Всё работает...Спасибо I_AM_ROCK!
Я только не понял вот это:
Item(k) - что это означает?

Автор: I_Am_Rock 16.9.2008, 14:42
Цитата(Jr13san @  16.9.2008,  13:13 Найти цитируемый пост)
Item(k) - что это означает? 

Это означает, что что-то делается не со всеми ТекстБоксами, а только с тем, у кого индекс = k.

Автор: neic 16.9.2008, 23:33
Можно было бы ещё сделать массив элементов и в глобальную переменную заносить индекс Text по которому в последний раз щёлкнули.

Автор: I_Am_Rock 17.9.2008, 12:01
Цитата(neic @  16.9.2008,  23:33 Найти цитируемый пост)
Можно было бы ещё сделать массив элементов и в глобальную переменную заносить индекс Text по которому в последний раз щёлкнули. 

Так я это и сделал!

Автор: Jr13san 20.9.2008, 20:57
ок, я понял. Всем спасибо за поддержку,если что, обращайтесь. smile 
Тема закрыта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)