Запрет копирования текста на форме
Помогите справиться с задачей в Vusual Basic. Есть форма, на ней текст, который не должен быть скопирован. Для этой цели подходит метка, но не знаю, как обеспечить прокрутку текста в ней.
Если дать ей AutoSize и WordWrap, то она растягивается за границы самой формы. Как бы обеспечить прокрутку всей формы или запретить копирование в TextBox. Может быть есть еще какие-нибудь решения? Помогите начинающему.
Спасибо.
С уважением,
Виктор.
tribunsky{собачка}yandex.ru
Вижу несколько разных вариантов, выложу сразу все на выбор:
1. Как уже был тут напряг с колесиком мышки для ListBox, можно по такому же принципу подключить свой обработчик событий формы и не пропускать комбинацию клавиш типа Ctrl+Ins; Ctrl+с.
2. Добавить к твоему Label свой ScrollBar и обрабатывать события прокрутки ScrollBar запихивая в Label нужные куски текста. Ну например делим текст на 3 страницы, пихаем в 3 переменные, а прокрутка у нас будет постраничная и приравниваем нужную переменную в Label.Value.
3 Ща, еще 3 вариант допишу чуть позже, он вроде поинтересней будет.
Хмм, занятная задачка... кто же там у тебя хочет нарушить твои авторские права :)
Вижу несколько разных вариантов, выложу сразу все на выбор:
1. Как уже был тут напряг с колесиком мышки для ListBox, можно по такому же принципу подключить свой обработчик событий формы и не пропускать комбинацию клавиш типа Ctrl+Ins; Ctrl+с.
2. Добавить к твоему Label свой ScrollBar и обрабатывать события прокрутки ScrollBar запихивая в Label нужные куски текста. Ну например делим текст на 3 страницы, пихаем в 3 переменные, а прокрутка у нас будет постраничная и приравниваем нужную переменную в Label.Value.
3 Ща, еще 3 вариант допишу чуть позже, он вроде поинтересней будет.
Может проще будет менять текст метки OnClick?
Может проще будет менять текст метки OnClick?
Вота, чтобы сильно долго не думать...
Private Const LT1 As String = "Люблю "
Private Const LT2 As String = " грозу в начале "
Private Const LT3 As String = " мая..."
Private arr
Private i As Integer
Private Sub Label1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If i <> 2 Then
i = i + 1
ElseIf i = 2 Then
i = 0
End If
UserForm1.Label1.Caption = arr(i)
End Sub
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
If i <> 2 Then
i = i + 1
ElseIf i = 2 Then
i = 0
End If
UserForm1.Label1.Caption = arr(i)
End Sub
Private Sub UserForm_Initialize()
i = 0
arr = Array(LT1, LT2, LT3)
UserForm1.Label1.Caption = arr(i)
End Sub
Гляньте на 3 вариант:
Прикольно! Пока не получилось ее обмануть.
Смог выделить текст. Еще подключился к Экселю из Ворда (GetObject), могу как угодно менять содержимое, скажем, ячеек, но не могу добраться до формы... Пробовал поменять в экселе EnableEvents. Менять меняется, но копировать все равно не получается.
Время выбери сам (пример=1).
А в функции поставь clipboard.clear
Работает без понтов, к томуже всё проще простого!
Спасибо за внимание...
А по поводу лабела с прокруткой - если текст не очень большой, можно не париться - кинуть лабелу в контейнер (фрейм) и изменять его TOP по скроллингу. (См файл в архиве).
А с задачей, когда нужно было запретить копирование в буфер обмена. я сталкивался. Например, есть текстовое поле. Динамически должна контролироваться проверка ввода в него только чисел. Так вот тестировщики, гады, придумали способ "ловить" программу (по ТЗ прога не должна была сообщать пользователю ничего (ошибки все у нас корректно обрабатывались, но с выдачей служебного сообщения), а просто не должна была позволять вводить в окна неверные данные с динамической проверкой.) Так вот, тестировщики нас так ловили: брали, и через Ctrl-Ins и меню "Вставить" копировали в окно текст. При этом событие Key Doun или KeyPress не возникает. Народ сначала на это забивал, но потом... Короче, не очень умное начальство нас заставило с этим бороться. Брорлись как посредствам API, так и... Короче, это уже другой рассказ :)