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

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

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

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

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

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Private Sub Command1_Click()
  4.     List1.AddItem Int(Rnd * 10000) 'что то добавляем в листбокс
  5.    MyClipBoard List1              'записываеи в буфер
  6. End Sub
  7. Private Sub Command2_Click() 'отменить
  8.     MyClipBoard List1, 1
  9. End Sub
  10. Private Sub Command3_Click() 'повторить
  11.     MyClipBoard List1, 2
  12. End Sub
  13. Private Sub Command4_Click()
  14.     If List1.ListCount <= 0 Then Exit Sub
  15.     List1.RemoveItem (Int(Rnd * List1.ListCount)) 'удаляем случайную строку из листбокс
  16.    MyClipBoard List1              'записываеи в буфер
  17. End Sub
  18.  
  19. Private Sub MyClipBoard(L As Object, Optional ByVal AddUndoRedo As Integer)
  20.     'На 10 элементов
  21.    Static A(1 To 10) As Variant, E() As String, n As Integer
  22.     Dim m As Integer, i As Integer
  23.     If L.ListCount < 1 Then Exit Sub
  24.     Select Case AddUndoRedo
  25.            Case 0
  26.                n = n + 1: ReDim Preserve E(L.ListCount - 1)
  27.                For i = 0 To L.ListCount - 1: E(i) = L.List(i): Next i
  28.                If n > 10 Then
  29.                   n = 10
  30.                   For i = 1 To 9: A(i) = A(i + 1): Next i
  31.                End If
  32.                A(n) = E
  33.            Case 1
  34.                If n > 1 Then
  35.                  n = n - 1: E = A(n): L.Clear
  36.                  For i = 0 To UBound(E): L.AddItem E(i): Next i
  37.                End If
  38.            Case 2
  39.                If n < 10 Then
  40.                  If (Not IsEmpty(A(n + 1))) Then
  41.                  n = n + 1: E = A(n): L.Clear
  42.                  For i = 0 To UBound(E): L.AddItem E(i): Next i
  43.                End If: End If
  44.     End Select
  45. End Sub

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут