C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как мышкой перетащить текст из одного текстового редактора в другой  (Прочитано 20442 раз)
Anton
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 7


« : 29 августа 2012, 05:41:42 »

Здравствуйте, хочу написать программу текст которой можно будет перетащить мышкой (не выделяя, просто из окна весь текст) в любой другой текстовый редактор, намекните пожалуйста как это сделать???
Записан
Tantos
А ты воспользовался поиском перед тем, как спросить?!
Давний друг
**

Сказали спасибо: +350/-28
Offline Offline

Сообщений: 2181


« Ответ #1 : 29 августа 2012, 05:43:26 »

Это возможно лишь в том случае, если "любой другой текстовый редактор" поддерживает Drag and Drop. Собственно, и копайте в этом направлении.
« Последнее редактирование: 29 августа 2012, 08:04:57 от Tantos » Записан
Anton
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 7


« Ответ #2 : 29 августа 2012, 05:58:16 »

поддерживает по любому, мне бы только узнать какие компоненты в си бильдер использовать???
Записан
S0mbre
Глобальный модератор
***

Сказали спасибо: +1113/-22
Offline Offline

Сообщений: 2137

S0mbre


WWW
« Ответ #3 : 29 августа 2012, 07:16:24 »

Для внешнего D&D в другое приложение (стороннего разработчика) под виндой необходимо использовать COM интерфейс IDataObject, указатель на который передается в принимающее приложение.

Об этом:
1. http://msdn.microsoft.com/en-us/library/windows/desktop/bb776905(v=VS.85).aspx
2. http://blogs.msdn.com/b/oldnewthing/archive/2004/12/06/275659.aspx
Записан
Anton
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 7


« Ответ #4 : 29 августа 2012, 07:33:35 »

Для внешнего D&D в другое приложение (стороннего разработчика) под виндой необходимо использовать COM интерфейс IDataObject, указатель на который передается в принимающее приложение.


дружище может набросаешь небольшой код для примера, а то чувствую я застряну в этих дебрях...
Записан
S0mbre
Глобальный модератор
***

Сказали спасибо: +1113/-22
Offline Offline

Сообщений: 2137

S0mbre


WWW
« Ответ #5 : 29 августа 2012, 09:55:21 »

Держи проект, дружище  Веселый
Записан
Anton
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 7


« Ответ #6 : 29 августа 2012, 11:28:20 »

Держи проект, дружище  Веселый
Спасибо большое, уже хоть что то есть, сейчас думаю почему в Word не хочет перетаскивать... вообщем идея такая: есть компонент treeview в него будут заноситься текстовые строчки-шаблоны(предложения) нужно реализвать возможность прямо с этого дерева текстовых строк то есть выбрать мышкой любую стоку в дереве и перенести в любой текстовый редактор, например в блокнот.... Улыбка 
Записан
S0mbre
Глобальный модератор
***

Сказали спасибо: +1113/-22
Offline Offline

Сообщений: 2137

S0mbre


WWW
« Ответ #7 : 29 августа 2012, 11:42:07 »

... и перенести в любой текстовый редактор, например в блокнот.... Улыбка 

В любой не получится - только в такой, который поддерживает работу с IDataObject. Это Word, WordPad, Notepad++ и так далее, т.е. более ли менее "современные" приложения. Блокнот не поддерживает. Для этого необходимо реализовать более сложный способ: мышиный хук и т.п., который будет работать с любыми приложениями.
Записан
Anton
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 7


« Ответ #8 : 29 августа 2012, 11:49:23 »

... и перенести в любой текстовый редактор, например в блокнот.... Улыбка 

В любой не получится - только в такой, который поддерживает работу с IDataObject. Это Word, WordPad, Notepad++ и так далее, т.е. более ли менее "современные" приложения.
... да и так будет просто прекрасно, сколько сможешь напиши пожалуйста, буду очень благодарен.
Записан
S0mbre
Глобальный модератор
***

Сказали спасибо: +1113/-22
Offline Offline

Сообщений: 2137

S0mbre


WWW
« Ответ #9 : 31 августа 2012, 11:45:44 »

... сколько сможешь напиши пожалуйста, буду очень благодарен.

Держи. Несколько коряво, но работает Улыбка По крайней мере, текст перетаскивает в любой контрол, поддерживающий операцию вставки (сообщение WM_PASTE).

PS. В Ворд не вставляется таким способом. Это связано с тем, что сообщение вставки из буфера (WM_PASTE) не посылается напрямую в открытый документ, а в окно MS Word, которое это сообщение не обрабатывает так, как хотелось бы. Поэтому с Вордом работает предыдущий вариант (IDataObject).

Если вопросы будут - пиши, а еще лучше - почитай спец. литературу.
« Последнее редактирование: 31 августа 2012, 11:54:38 от S0mbre » Записан
Anton
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 7


« Ответ #10 : 31 августа 2012, 14:00:43 »

а в каком редакторе открывается проект, что то CBuilder 6 не видит???

Если вопросы будут - пиши, а еще лучше - почитай спец. литературу.
ни чего толкового в интернете найти не могу...
Записан
S0mbre
Глобальный модератор
***

Сказали спасибо: +1113/-22
Offline Offline

Сообщений: 2137

S0mbre


WWW
« Ответ #11 : 31 августа 2012, 16:01:15 »

а в каком редакторе открывается проект, что то CBuilder 6 не видит???

Этот проект я делал в RAD Studio XE2. Открывается в версиях 2007+ (2007,2009,2010,XE,XE2). Поищи в инете конвертор *.cbproj -> *.bpr. Или самостоятельно создай форму, положи на нее мемо и статус-бар, и "далее по тексту": см. исходные файлы.
Записан
Anton
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 7


« Ответ #12 : 01 сентября 2012, 07:33:14 »

.... еще хотел бы узнать а как если 2 отдельных программы с деревьями то как узел одного дерева одной программы перетащить в другое дерево второй программы???
Записан
S0mbre
Глобальный модератор
***

Сказали спасибо: +1113/-22
Offline Offline

Сообщений: 2137

S0mbre


WWW
« Ответ #13 : 02 сентября 2012, 13:22:49 »

В зависимости от того, оба ли приложения твои собственные (т.е. ты сам можешь их перекомпилировать) или хотя бы одно из них - чужое (т.е. к исходному коду нет доступа).
В первом случае просто организуй drag-n-drop (см. книги по Билдеру вроде Архангельского, Сварта и т.п.) или используй технологии передачи данных клиент-сервер (об этом в интернетах и на форуме). Во втором случае (предполагая, что компонент-дерево, в которое надо вставить узел, образовано от стандартного виндового TreeView), можно попробовать посылать API сообщения, например TVM_INSERTITEM (сообщение возвращает дескриптор HTREEITEM нового узла).
Записан
allinandrey
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 19


« Ответ #14 : 16 октября 2012, 05:21:09 »

Нельзя просто скопировать весть текст и вставить в другое окно а там стереть. API
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: