|
Вопрос # 3 166/ вопрос решён / |
|
Здравствуйте!
Назрел вопрос:Мне нужно программно скопировать текст из Tedit в буфер обмена,но не как не получается, так как в тексте есть пробелы, тоесть DBLCLK не работает, вот мой код.
В этом случаев буфер помещяеться текст до пробела, а мне нужно скопировать все содержимое TEdit.
Помогите пожплуйста!
 |
Вопрос задал: unl0K (статус: Посетитель)
Вопрос отправлен: 9 сентября 2009, 18:05
Состояние вопроса: решён, ответов: 3.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, AHJIoKeR!
а надо ему вначале не двойной клик слать, а прям так и сказать - выдели ка мне всё.
на языка сообщений это будет где то так
SendMessage(handle, EM_SETSEL , 0, -1); //первый параметр - с какого символа выделить, второй - по какой, но если там -1, то это значит "до конца". Ну а дальше вы уже в курсе:)
но что бы было красиво, надо снять выделение. для этого делаем так
SendMessage(handle, EM_SETSEL , -1, 0);
По поводу отправки "текста". можно. например через буфер обмена с сообщением WM_PASTE. а можно через WM_CHAR по символьно.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 9 сентября 2009, 18:21
Оценка за ответ: 5
|
Ответ #2. Отвечает эксперт: Anderson N.N
Здравствуйте, AHJIoKeR!
Можно просто
Edit1.CopyToClipboard;
Затем
Edit2.PasteFromClipboard;
Насчет можно ли направить текст напрямую в другое приложение
ДА через:
1) DDE
2)SetWindowText
при 2 варианте тебе нужно не только знать хендл нужного окна
но и хэндл элемента в который ты собрался вставлять текст.
Если интересно могу пример кинуть.
 |
Ответ отправил: Anderson N.N (статус: 2-ой класс)
Время отправки: 9 сентября 2009, 18:29
Оценка за ответ: 4
|
Ответ #3. Отвечает эксперт: min@y™
for j:=1 to Length(S) do // Отправка мессаги
SendMessage(EditHandle, WM_CHAR, Integer(S[j]), 0);
SendMessage(EditHandle, WM_CHAR, Integer(#13), 0);
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 10 сентября 2009, 14:33
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 19; последнее сообщение — 9 сентября 2009, 19:49; участников в обсуждении: 3.
|
unl0K (статус: Посетитель), 9 сентября 2009, 18:09 [#1]:
И еще вопрос: возможно ли на прямую отправить текст в другое приложение, в richedit зная его хэндл?
Относись к людям так, как хотел бы, чтобы они к тебе относились!
|
|
min@y™ (статус: Доктор наук), 9 сентября 2009, 18:21 [#2]:
Можно стырить текст из EDIT напрямую, без буфера обмена.
Объясни задачу подробнее: что есть и что нужно получить.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 9 сентября 2009, 18:32 [#3]:
to Anderson N.N
Что то мне кажется, что человек пытается с чужого приложения взять...
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 9 сентября 2009, 18:35 [#4]:
Цитата:
Что то мне кажется, что человек пытается с чужого приложения взять...
Ошибаешься.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 9 сентября 2009, 18:39 [#5]:
и как мы это узнали? Хотя вопрошающие могут как угодно завернуть вопрос.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
unl0K (статус: Посетитель), 9 сентября 2009, 18:45 [#6]:
Пробывал так:
Edit1.CopyToClipboard;
SendMessage(RichE,WM_PASTE,0,0);
SendMessage(OK,WM_LBUTTONDOWN,0,0);
SendMessage(OK,WM_LBUTTONUP,0,0);
и толку не было!
А первый вариарт работает на ура:
SendMessage(MyEd,EM_SETSEL,0,-1);
SendMessage(MyEd,WM_COPY,0,0);
SendMessage(MyEd,EM_SETSEL,-1,0);
SendMessage(RichE,WM_PASTE,0,0);
SendMessage(OK,WM_LBUTTONDOWN,0,0);
SendMessage(OK,WM_LBUTTONUP,0,0);
Из своего я копировал, мб вопрос задал не оч. понятно, но ответ получил!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
|
|
min@y™ (статус: Доктор наук), 9 сентября 2009, 18:45 [#7]:
Цитата:
и как мы это узнали?
Связался с ним по аське.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 9 сентября 2009, 18:53 [#8]:
то min@y™
круто. Видно сразу, хочется балов
то AHJIoKeR
а зачем нажимать-отпускать мышку? Хотя я видел человека, который умудрился для едита вызвать всплывающее меню и выбрать там нужный пункт меню, что бы скопировать... вот это высший пилотаж! Текст он выделял через посылку зажатого шифта и стрелочек.
Хотя, иногда, just for fun, такое полезно делать. Зачем? что бы уметь, мало чего....
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 9 сентября 2009, 18:56 [#9]:
Цитата:
круто. Видно сразу, хочется балов
Чего хочется?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
unl0K (статус: Посетитель), 9 сентября 2009, 18:57 [#10]:
то Вадим К, а с чего бы я нажимал на эдит)
это нажатие\отжатие на кнопку отправить!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
|
|
Вадим К (статус: Академик), 9 сентября 2009, 19:02 [#11]:
to AHJIoKeR
да... недосмотрел...
С кнопкой есть одна фишка, о которой почему то забывают, что когда нажимают руками, то между нажатием и отпусканием есть пауза. обычно часто достаточно вставить небольшой Sleep и всё начинает магическим образом работать
Галочка "подтверждения прочтения" - вселенское зло.
|
|
unl0K (статус: Посетитель), 9 сентября 2009, 19:02 [#12]:
Кстати, а почему нельзя использовать связку клавишь: sendmessage(handle,WM_KEYDOWN,VK_+VK_,0)?
Или можно,только как-то по другому?
Относись к людям так, как хотел бы, чтобы они к тебе относились!
|
|
Вадим К (статус: Академик), 9 сентября 2009, 19:03 [#13]:
а что такое VK_+VK_
это просто мнемоника, или как?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
unl0K (статус: Посетитель), 9 сентября 2009, 19:07 [#14]:
это я имел введу... допустим VK_SHIFT+VK_HOME
Относись к людям так, как хотел бы, чтобы они к тебе относились!
|
|
Вадим К (статус: Академик), 9 сентября 2009, 19:10 [#15]:
можно, но нужно аккуратно. Вначале отсылаем нажатие шифта, потом home. потом отпускаем home и только потом шифт.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
unl0K (статус: Посетитель), 9 сентября 2009, 19:11 [#16]:
аааааааа, понял! СПАСИБО!
Относись к людям так, как хотел бы, чтобы они к тебе относились!
|
|
min@y™ (статус: Доктор наук), 9 сентября 2009, 19:17 [#17]:
До сих пор не понимаю, для чего здесь нужен буфер обмена. Почему бы не посылать текст напрямую?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 9 сентября 2009, 19:22 [#18]:
min@y™:
Ну так расскажи человеку, может ему понравиться...
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 9 сентября 2009, 19:49 [#19]:
Цитата (Вадим К):
Ну так расскажи человеку, может ему понравиться...
Пока не спрашивает.
Он мне сказал, какую прогу пишет. Я такую в отрочестве тоже писал, ога. И исходники сохранились. Там как раз берётся текст из Memo (или файла, точно не помню) и засылается в чат другую программу + код клавиши Enter.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
31 января 2011, 20:03: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|