Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Невозможно из CppWebBrowser скопировать тект, почему? 
:(
    Опции темы
SerK
Дата 3.2.2009, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Почему при попытке копирования текста в CppWebBrowser при выполнении программы, копирования не происходит (текст не помещается в буфер обмена)?


--------------------
Пусть будет миру хорошо!
PM MAIL   Вверх
Dmi3ev
Дата 3.2.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



SerK, не думай, что если есть компонент, то это значить, что его кинул на форму и всего делов... Надо и самому что-то делать...
Так бы у всех в мире были бы свои браузеры  smile 
http://www.bytesandmore.de/rad/index.htm?h...ipp/sc08017.php
Вот тут ответ...
Не ожидал такого?


Это сообщение отредактировал(а) Dmi3ev - 3.2.2009, 15:13


--------------------

PM MAIL   Вверх
Dmi3ev
Дата 3.2.2009, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 16
Всего: 41



Проверил, немного изменил, все заработало, код на кнопку написал:
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TClipboard *Clipboard = new TClipboard();
IHTMLDocument2 * document;

(void *)document=CppWebBrowser1->Document;
bool blHtml;

IHTMLDocument2 *HTMLDocument = NULL;
LONG ilFramesCount = 0;
wchar_t* wcpSelectedText;
if(SUCCEEDED(CppWebBrowser1->Document->QueryInterface(
IID_IHTMLDocument2, (LPVOID*)&HTMLDocument)))
{
IHTMLFramesCollection2 *pFrames = NULL;
if(SUCCEEDED(HTMLDocument->get_frames(&pFrames)))
{
pFrames->get_length(&ilFramesCount);
if(ilFramesCount == 0)
{
IHTMLSelectionObject* pSelection;
if(SUCCEEDED(HTMLDocument->get_selection(&pSelection)))
{
IHTMLTxtRange* pRange;
if(SUCCEEDED(pSelection->createRange((LPDISPATCH*)&(pRange))))
{
if(blHtml)
{
if(SUCCEEDED(pRange->get_htmlText(&wcpSelectedText)))
Clipboard->SetTextBuf(AnsiString(wcpSelectedText).c_str());
}
else if(SUCCEEDED(pRange->get_text(&wcpSelectedText)))
Clipboard->SetTextBuf(AnsiString(wcpSelectedText).c_str());
pRange->Release();
}
pSelection->Release();
}
}
else
{
VARIANT vFrame;
VARIANT ret;
vFrame.vt = VT_UINT;
for(LONG ilFrameIndex = 0; ilFrameIndex < ilFramesCount; ilFrameIndex++)
{
vFrame.lVal = ilFrameIndex;
if(SUCCEEDED(pFrames->item(&vFrame, &ret)))
{
IHTMLWindow2 *pWindow = NULL;
if(SUCCEEDED(ret.pdispVal->QueryInterface(IID_IHTMLWindow2,
(LPVOID*)&pWindow)))
{
IHTMLDocument2 *pDoc = NULL;
if(SUCCEEDED(pWindow->get_document(&pDoc)))
{
IHTMLSelectionObject* pSelection;
if(SUCCEEDED(pDoc->get_selection(&pSelection)))
{
IHTMLTxtRange* pRange;
if(SUCCEEDED(pSelection->createRange((LPDISPATCH*)&(pRange))))
{
if(blHtml)
{
if(SUCCEEDED(pRange->get_htmlText(&wcpSelectedText)) &&
AnsiString(wcpSelectedText).Trim() != EmptyStr)
Clipboard->SetTextBuf(AnsiString(wcpSelectedText).c_str());
}
else if(SUCCEEDED(pRange->get_text(&wcpSelectedText)) &&
AnsiString(wcpSelectedText).Trim() != EmptyStr)
Clipboard->SetTextBuf(AnsiString(wcpSelectedText).c_str());
pRange->Release();
}
pSelection->Release();
}
pDoc->Release();
}
pWindow->Release();
}
}
}
}
pFrames->Release();
}
HTMLDocument->Release();
}
}

форматировать в ломак было, как скопировал, так и правил)))
ты просто делай PopupMenu для CppWebBrowser, ну и на пункт копировать делай вот этот код...
не забудь подключить.
Код

#include <mshtml.h>
#include <clipbrd.hpp>

а то будешь...
единственное, когда копируешь, ничего не выделяя, ошибочка вылазит, тоже надо учесть (try, catch можно, можно еще как-нибудь)...
  smile 
Цитата

Невозможно из CppWebBrowser скопировать тект

Невозможное-возможно. adidas  smile 

Это сообщение отредактировал(а) Dmi3ev - 3.2.2009, 19:18


--------------------

PM MAIL   Вверх
SerK
Дата 11.2.2009, 05:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Dmi3ev
Спасибо за помощь, все получилось.
Но к сожалению, теряется ПопурМеню родное, а там ведь много других возможностей заложено:
печать, просмотр, копирование кода и рисунков и много другое и все из-за одного - копирование
текста. 
Кстати, текст копируется, но только тогда, когда ВебБраузер становится невидимым, т.е
при нажатии клавиш копирования. Странно, когда видимый - не копируется текст, когда нет - копируется, идет задержка дествия.
У меня есть две вкладки, на одной ВебБраузер, а на другой - ричедит. Выделяю текст в ВебБраузере, нажимаю кнопки Ctrl+C- копирования не происходит, перехожу на вкладку с ричедитом, опять нажимаю кнопки Ctrl+C, текст копируется. Почему, не пойму.



--------------------
Пусть будет миру хорошо!
PM MAIL   Вверх
Pavlery
Дата 16.5.2009, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 8.5.2009

Репутация: нет
Всего: нет



случаем не это надо?

Код

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
    ::OleInitialize(NULL);
    ::OleUninitialize;
}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0713 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.