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
|
согласен, проморгал
|
|
joynter |
Отправлено: 16.11.2004, 14:21 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 137
|
задача состоит в удвоении выделенного текста в любом окне редактирования, а Мемо я привел в качестве примера
Отредактировано joynter — 16/11/2004, 17:25 |
|
|