Копирование из ListBox в буфер обмена - VB

Узнай цену своей работы

Формулировка задачи:

Доброго всем времени суток!Пожалуйста подскажите или ткните носом.Не могу разобраться с копированием содержимого List в буфер обмена.У меня имеется List и меню,в котором есть пункты Удаление и Отмена.Удаляться могут как одна строка,так и группа произвольных строк при отмене восстанавливаются прежние данные.Логично было бы все сделать в буфере обмена,но я так понимаю буфер это стек и я не могу вставить все строки вставляется только одна.В свойствах класса Clipboard есть только Set и Get методы и получить индексы я не могу.Кто знает пожалуйста подскажите. PS Задачу эту я решил,но с использованием временного Listа,но хотелось бы через буфер обмена.Пока осваиваю азы. Спасибо.

Решение задачи: «Копирование из ListBox в буфер обмена»

textual
Листинг программы
Option Explicit
 
Private Sub Command1_Click()
    List1.AddItem Int(Rnd * 10000) 'что то добавляем в листбокс
    MyClipBoard List1              'записываеи в буфер
End Sub
Private Sub Command2_Click() 'отменить
     MyClipBoard List1, 1
End Sub
Private Sub Command3_Click() 'повторить
     MyClipBoard List1, 2
End Sub
Private Sub Command4_Click()
    If List1.ListCount <= 0 Then Exit Sub
    List1.RemoveItem (Int(Rnd * List1.ListCount)) 'удаляем случайную строку из листбокс
    MyClipBoard List1              'записываеи в буфер
End Sub
 
Private Sub MyClipBoard(L As Object, Optional ByVal AddUndoRedo As Integer)
    'На 10 элементов
    Static A(1 To 10) As Variant, E() As String, n As Integer
    Dim m As Integer, i As Integer
    If L.ListCount < 1 Then Exit Sub
    Select Case AddUndoRedo
           Case 0
               n = n + 1: ReDim Preserve E(L.ListCount - 1)
               For i = 0 To L.ListCount - 1: E(i) = L.List(i): Next i
               If n > 10 Then
                  n = 10
                  For i = 1 To 9: A(i) = A(i + 1): Next i
               End If
               A(n) = E
           Case 1
               If n > 1 Then
                 n = n - 1: E = A(n): L.Clear
                 For i = 0 To UBound(E): L.AddItem E(i): Next i
               End If
           Case 2
               If n < 10 Then
                 If (Not IsEmpty(A(n + 1))) Then
                 n = n + 1: E = A(n): L.Clear
                 For i = 0 To UBound(E): L.AddItem E(i): Next i
               End If: End If
    End Select
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.125 из 5