C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
ctrl+c & ctrl+v, вроде бы все просто, но ...
joynter
Отправлено: 16.11.2004, 13:01


Станционный диспетчер

Группа: Участник
Сообщений: 137



задача такая: имеем Мемо с текстом.
по нажатию на клавиши выделенный в Меме текст должен "удваиваться", т.е. если было — "Текст", то должно быть — "ТекстТекст"
CODE

void __fastcall TForm1::Memo1KeyPress(TObject *Sender, char &Key)
{
if(Key=='q')
 {
 keybd_event(VK_CONTROL, 0, 0, 0);
 keybd_event(67, 0, 0, 0);
 keybd_event(67, 0, KEYEVENTF_KEYUP, 0);   keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
 keybd_event(VK_CONTROL, 0, 0, 0);
 keybd_event(86, 0, 0, 0);
 keybd_event(86, 0, KEYEVENTF_KEYUP, 0);   keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
 keybd_event(VK_CONTROL, 0, 0, 0);
 keybd_event(86, 0, 0, 0);   keybd_event(86, 0, KEYEVENTF_KEYUP, 0);
 keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
 }
}

на практике происходит "двойная" вставка того, что было в буфере обмена, т.е. копирования выделенного в Меме не происходит.
пожалуйста помогите разобраться почему?
Guest
Отправлено: 16.11.2004, 13:41


Не зарегистрирован







А почему не сделать так
Memo->Text = Memo->Text.SubString(1, selStart+selLength) + selText + остаток_memo;
xTrim
Отправлено: 16.11.2004, 13:45


Машинист паровоза

Группа: Участник
Сообщений: 208



если надо именно через клипбоард
CODE

#include "Clipbrd.hpp"
...
Clipboard()->Clear();
Clipboard()->AsText = Memo1->SelText;
Memo1->Text = Memo1->Text + Clipboard()->AsText;
Guest
Отправлено: 16.11.2004, 13:58


Не зарегистрирован







2xTrim
Так работает только для выделений в конце текста. (по условию — удваивание выделенного текста)

xTrim
Отправлено: 16.11.2004, 14:11


Машинист паровоза

Группа: Участник
Сообщений: 208



согласен, проморгал sad.gif
joynter
Отправлено: 16.11.2004, 14:21


Станционный диспетчер

Группа: Участник
Сообщений: 137



задача состоит в удвоении выделенного текста в любом окне редактирования, а Мемо я привел в качестве примера

Отредактировано joynter — 16/11/2004, 17:25

Вернуться в Вопросы программирования в C++Builder