Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запрет копирования текста на форме

5.5K
22 октября 2003 года
tribunsky
1 / / 22.10.2003
Уважаемые эксперты.
Помогите справиться с задачей в Vusual Basic. Есть форма, на ней текст, который не должен быть скопирован. Для этой цели подходит метка, но не знаю, как обеспечить прокрутку текста в ней.
Если дать ей AutoSize и WordWrap, то она растягивается за границы самой формы. Как бы обеспечить прокрутку всей формы или запретить копирование в TextBox. Может быть есть еще какие-нибудь решения? Помогите начинающему.
Спасибо.
С уважением,
Виктор.
tribunsky{собачка}yandex.ru
258
22 октября 2003 года
SergeySV
1.5K / / 19.03.2003
Хмм, занятная задачка... кто же там у тебя хочет нарушить твои авторские права :)

Вижу несколько разных вариантов, выложу сразу все на выбор:

1. Как уже был тут напряг с колесиком мышки для ListBox, можно по такому же принципу подключить свой обработчик событий формы и не пропускать комбинацию клавиш типа Ctrl+Ins; Ctrl+с.

2. Добавить к твоему Label свой ScrollBar и обрабатывать события прокрутки ScrollBar запихивая в Label нужные куски текста. Ну например делим текст на 3 страницы, пихаем в 3 переменные, а прокрутка у нас будет постраничная и приравниваем нужную переменную в Label.Value.

3 Ща, еще 3 вариант допишу чуть позже, он вроде поинтересней будет.
478
22 октября 2003 года
XtreamAll
279 / / 01.10.2003
Цитата:
Originally posted by SergeySV
Хмм, занятная задачка... кто же там у тебя хочет нарушить твои авторские права :)

Вижу несколько разных вариантов, выложу сразу все на выбор:

1. Как уже был тут напряг с колесиком мышки для ListBox, можно по такому же принципу подключить свой обработчик событий формы и не пропускать комбинацию клавиш типа Ctrl+Ins; Ctrl+с.

2. Добавить к твоему Label свой ScrollBar и обрабатывать события прокрутки ScrollBar запихивая в Label нужные куски текста. Ну например делим текст на 3 страницы, пихаем в 3 переменные, а прокрутка у нас будет постраничная и приравниваем нужную переменную в Label.Value.

3 Ща, еще 3 вариант допишу чуть позже, он вроде поинтересней будет.



Может проще будет менять текст метки OnClick?

267
22 октября 2003 года
Cutty Sark
1.2K / / 17.10.2002
А все равно против PrintScreen + FineReader не спасетесь!!! :D :D :D
478
22 октября 2003 года
XtreamAll
279 / / 01.10.2003
Цитата:
Originally posted by XtreamAll


Может проще будет менять текст метки 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

267
22 октября 2003 года
Cutty Sark
1.2K / / 17.10.2002
Так наверняка есть уже кем-нибудь написанный контрол: лейбл с прокруткой.
267
22 октября 2003 года
Cutty Sark
1.2K / / 17.10.2002
И вообще, подумав немного, пришел к выводу, что запрещать копировать текст - это извращение. Ведь его можно элементарно переписать с помощью карандаша и бумаги (это же не jpg и не mp3), а потом напечатать в нужном месте - стало быть тот, кто хочет скопировать текст - все равно его скопирует. Так к чему лишний геморрой?
258
22 октября 2003 года
SergeySV
1.5K / / 19.03.2003
Гляньте на 3 вариант:
267
22 октября 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by SergeySV
Гляньте на 3 вариант:



Прикольно! Пока не получилось ее обмануть.
Смог выделить текст. Еще подключился к Экселю из Ворда (GetObject), могу как угодно менять содержимое, скажем, ячеек, но не могу добраться до формы... Пробовал поменять в экселе EnableEvents. Менять меняется, но копировать все равно не получается.

5.9K
04 ноября 2003 года
Spyrkach
2 / / 04.11.2003
Ддя меня то лудше использовать таймер.
Время выбери сам (пример=1).
А в функции поставь clipboard.clear
Работает без понтов, к томуже всё проще простого!
Спасибо за внимание...
266
04 ноября 2003 года
mhaturov
901 / / 23.10.2003
Ну по поводу clipboard.clear - это верно. А ещё лучше активировать этот таймер после получения фокуса контролрм с текстом, ну а так же можно для надёжности по MouseMove по нему сделать ссылку на очистку буфера обмена, а так же по клику.
А по поводу лабела с прокруткой - если текст не очень большой, можно не париться - кинуть лабелу в контейнер (фрейм) и изменять его TOP по скроллингу. (См файл в архиве).
А с задачей, когда нужно было запретить копирование в буфер обмена. я сталкивался. Например, есть текстовое поле. Динамически должна контролироваться проверка ввода в него только чисел. Так вот тестировщики, гады, придумали способ "ловить" программу (по ТЗ прога не должна была сообщать пользователю ничего (ошибки все у нас корректно обрабатывались, но с выдачей служебного сообщения), а просто не должна была позволять вводить в окна неверные данные с динамической проверкой.) Так вот, тестировщики нас так ловили: брали, и через Ctrl-Ins и меню "Вставить" копировали в окно текст. При этом событие Key Doun или KeyPress не возникает. Народ сначала на это забивал, но потом... Короче, не очень умное начальство нас заставило с этим бороться. Брорлись как посредствам API, так и... Короче, это уже другой рассказ :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог