Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как запретить копирование выделенного текста (http://www.flasher.ru/forum/showthread.php?t=172327)

vaskar 06.12.2011 23:09

как запретить копирование выделенного текста
 
Приветствую всех!
Заказчик требует запрета копирования выделяемого текста в приложении (текст обязятельно должен выделяться). делаю вывод текста с помощью TextLayoutFramework. убрать из контекстного меню кнопки "Копировать" и "Вставить" удалось, а вот как запретить копирование текста при помощи ctrl+c не получается. Может есть какие нибудь средства, типа изменения размера буфера, подскажите, пожалуйста?

i.o. 06.12.2011 23:20

По идее, если вам удасться отследить нажатие ctrl+c, то в обработчике этого события, вы сможете запихнуть в буфер обмена любой текст, тем самым перезаписав только что скопированный из текстового поля.
Уверенности конечно нет, но вдруг получится...

t4arty 06.12.2011 23:22

а если просто в растр его превратить?

Psycho Tiger 06.12.2011 23:39

А если по нажатию на ctrl снимать выделение, менять фокус на невидимое текстовое поле, и выделять там нецензурное слово?:3

i.o. 06.12.2011 23:46

Зачем вообще выделять, если нельзя скопировать? Странно как-то..

MXPain 07.12.2011 01:29

вот именно, в чем тогда смысл выделения?

trng 07.12.2011 02:50

Можно как то так (по крайней мере для RichEditableText работает).

Код AS3:

var ta:TextArea = new TextArea();
ta.addEventListener(Event.COPY, ta_copyHandler);
 
function ta_copyHandler(event:Event):void {
        event.preventDefault();
        event.stopImmediatePropagation();
        var s:String = "http://flasher.ru";
        var ba:ByteArray = new ByteArray();
        ba.writeUTF(s);
        Clipboard.generalClipboard.clear();
        Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, s);
        Clipboard.generalClipboard.setData(ClipboardFormats.RICH_TEXT_FORMAT, ba);
        Clipboard.generalClipboard.setData(ClipboardFormats.HTML_FORMAT, s);
        Clipboard.generalClipboard.setData(ClipboardFormats.URL_FORMAT, s);
}


smithy 07.12.2011 13:50

Цитата:

Зачем вообще выделять, если нельзя скопировать? Странно как-то..
Реально странно =)

Aquahawk 07.12.2011 13:56

ещё есть preventDefault. Должно сработать, на ctrl+c вешать. Правда могут быть ещё шорткаты другие на копи.

vaskar 07.12.2011 14:05

Спасибо большое, помогло! я правда прицепил слушатель с событию FlowOperationEvent.FLOW_OPERATION_END для TextFlow объекта.

Цитата:

Можно как то так (по крайней мере для RichEditableText работает).

Код AS3:

var ta:TextArea = new TextArea();
ta.addEventListener(Event.COPY, ta_copyHandler);

function ta_copyHandler(event:Event):void {
event.preventDefault();
event.stopImmediatePropagation();
var s:String = "http://flasher.ru";
var ba:ByteArray = new ByteArray();
ba.writeUTF(s);
Clipboard.generalClipboard.clear();
Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, s);
Clipboard.generalClipboard.setData(ClipboardFormats.RICH_TEXT_FORMAT, ba);
Clipboard.generalClipboard.setData(ClipboardFormats.HTML_FORMAT, s);
Clipboard.generalClipboard.setData(ClipboardFormats.URL_FORMAT, s);
}


Часовой пояс GMT +4, время: 05:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.