Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Защита от копирования


Автор: A5uKa 23.5.2009, 10:57
И под конец работы они сказали, что если вып. условие такое-то "Нельзя Чтобы Юзер Мог копировать текст в Rich Edit"
Тут-то меня и шарахнуло...

КАК  smile 

отловить ctrl+c думаю можно , но правой кнопкой+копировать не знаю как ...

п.с. Удалять можно, менять шрифт редактировать, Печатать в документ можно, но копировать нельзя  smile 

Автор: dix75 23.5.2009, 11:10
Цитата(A5uKa @  23.5.2009,  10:57 Найти цитируемый пост)
тловить ctrl+c думаю можно , но правой кнопкой+копировать не знаю как ...


Убрать стандартный  popupmenu  и добавить свой без itemа   копирования.

Желание заказчика закон, иногда я даже не думаю по этому поводу надо так надо.

Автор: A5uKa 23.5.2009, 11:47
Цитата

Убрать стандартный  popupmenu

Да ... Можно ... А где он лежит ?
Для компонента на onclick потом case эсли это rightclick ... ? 

 smile 

Автор: dix75 23.5.2009, 12:08
A5uKa, 
так подожди
в richedit есть возможность прикручивания нового popupmenu
как во многих компонентах

Автор: taiven 23.5.2009, 12:14
Цитата
"Нельзя Чтобы Юзер Мог копировать текст в Rich Edit"...
...отловить ctrl+c думаю можно

так в RichEdit или из RichEdit?
Кстати окрою тайну, как минимум ещё придётся отловить ctrl+insert  smile 
А если серьёзно, то я думаю нужно смотреть сообщение WM_COPY.

Автор: A5uKa 23.5.2009, 12:43
из.
да... Спасибо за совет

Цитата

WM_COPY.

это где ? 

кстати есть вот такая вещь

Код

void __fastcall TMain::RichEdit1SaveClipboard(TObject *Sender, int NumObjects, int NumChars,
          bool &SaveClipboard)
{

}


может тут просто clear её как-то... ?

Автор: taiven 23.5.2009, 12:47
попробуй SaveClipboard = false, правда незнаю точно, у меня в 2006 такого нет  smile 

Автор: taiven 23.5.2009, 13:47
Цитата(A5uKa @ 23.5.2009,  11:43)
Цитата

WM_COPY.

это где ?

по-поводу WM_COPY смотри MSDN... как перехватывать сообщения смотри http://forum.vingrad.ru/topic-237402.html

Автор: A5uKa 23.5.2009, 14:11
Код

SaveClipboard = false

не работает, хотя мне кажется всё просто и можно без апи извращенства и прямо у меня перед глазами . Я просто не вижу.

Пока прихожу к простому решению и режу EmptyClipboard() - ом

Автор: Alca 24.5.2009, 01:08
И у юзера забрать мобильный, чтоб не мог сфоткать экран.  smile 

Автор: Dmi3ev 24.5.2009, 02:49
Цитата

Нельзя Чтобы Юзер Мог копировать текст в Rich Edit"

Кому сильно надо, тот один хрен скопирует... Так что непонятное какое-то желание заказчика...
ЗЫ
Хотел попробовать пошаманить, но обнаружил, что у моего рича такого нет (меню не появляется, у мемо появляется, а у рича нет, палево какое-то)... Но если бы у тебя было такое палево, тебе это было бы только на руку, завидуй  smile 
Кстати, может не совсем стандартное решение, но можно сделать вот так
Код

void __fastcall TForm1::RichEdit1SelectionChange(TObject *Sender)
{
if (RichEdit1->SelLength>0)
RichEdit1->SelLength=0;
}

т.е. тупо не возволять юзеру ничего выделять... а если он ничего не выделит=>копировать тоже нечего... только косяк в том, что удалить тоже не удастся сразу кусок, но, как вариант... хз, может покатит )))

Автор: A5uKa 24.5.2009, 22:13
Dmi3ev мой вариант лучше ))) так как у меня там выделение много для чего может быть нужно.

тема думаю решена  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)