Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Вниз

WebBroser не дает таскать текст в режиме редактирования   Найти похожие ветки 

 
Tack   (2005-08-02 15:56) [0]

Перевожу браузер в режим редактирования вот так:

var
 Disp: IDispatch;
 Editor: IHTMLDocument2;

procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate("about:<html><body></body></html>");
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
 const pDisp: IDispatch; var URL: OleVariant);
var
 CurrentWB: IWebBrowser;
begin
 Disp := pDisp;
 CurrentWB := Disp as IWebBrowser;
 editor := (CurrentWB.Document as IHTMLDocument2);
 editor.DesignMode := "On";
end;


Потом после запуска программы ввожу в браузер текст, добавляю картинки, выделяю, делаю текст жирным/наклонным/подчеркнутым (Ctrl+B, +I, +U) - никаких проблем.

Но ни вырезать из браузера текст, ни скопировать его, ни перетащить мышкой - не получается. Я смотрел в MSDN различные опции MSHTML - ничего на этот счет не сказано.

Предусмотрено ли это вообще или надо все указанные действия реализовывать самому через события DragDrop ? Может есть готовые компоненты VCL или ActiveX, где это сделано?


 
Styx   (2005-08-02 19:08) [1]

Насколько я помню, это должно решаться добавлением activex в uses. А именно вызовом coinitialize в секции инициализации этого модуля.


 
Tack   (2005-08-02 19:33) [2]

Сделал CoInitialize(nil) в секции initialization, CoUninitialize в секции finalization - не помогает. :-(

Все равно вырезать/копировать не работает. Только "вставить" можно текст. И мышкой таскать блоки текста не получается.


 
Tack   (2005-08-04 16:59) [3]

Все, проблема решена — надо на форму кинуть TRichEdit (можно сделать невидимым RichEdit1.Visible := False) и вся положенная функциональность появляется!

Теперь прошу объяснить, что такого делает компонент RichEdit при инициализации, что влияет на функциональность MSHTML редактора?

Подскажите, пожалуйста, а то exe-файл раздувается из-за этого безхозного RichEdit.


 
Styx   (2005-08-04 21:28) [4]

А TEmbeddedWB не пробовали? Где-то на M$ была статья о том, что приложение должно само обрабатывать акселераторы при работе с WebBrowser... Но там это вроде реализовано: http://www.euromind.com/iedelphi


 
Tack   (2005-08-04 23:21) [5]

Styx, спасибо за полезный ресурс!

команды Вырезать/Копировать заработали, "перетащить текст" не работает и в TEmbeddedWB, но зато много головной боли пропало насчет установки параметров отображения страницы. Я еще погляжу документацию на него подробнее, о результатах сообщу.


 
Tack   (2005-08-05 01:08) [6]

Styx, все, я понял!!! :-)

В разделе
initialization
любого модуля программы надо вызвать OleInitialize(nil), а не CoInitialize(nil) !!! Ну и соответственно OleUninitialize при финализации.

Все функции редактирования теперь работают в TWebBrowser. В TEmbeddedWB надо все это писать руками. А может что-то подобное надо сделать и в его модуле, но я у него смотрел исходник - вроде все нормально на этот счет...

Выдержка из MSDN:
Applications that use the following functionality must call OleInitialize() before calling any other function in the COM library:

-Clipboard
-Drag and drop (! вот оно !)
-Object linking and embedding (OLE)
-In-place activation


Спасибо за помощь!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.436 c
14-1122964944
3DxFantastika
2005-08-02 10:42
2005.08.28
Магия - есть ли сабж?


5-1095141902
Lera
2004-09-14 10:05
2005.08.28
Инсталяция компоненты.


9-1115531873
Kobik
2005-05-08 09:57
2005.08.28
DXSound 8


4-1121014897
pirate
2005-07-10 21:01
2005.08.28
Как считать значение ячейки памяти?


4-1118300808
g-l-u-k
2005-06-09 11:06
2005.08.28
Global Hook





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский