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

Вниз

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

 
Tack   (2005-08-04 19:27) [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 - ничего на этот счет не сказано.

ПРОБЛЕМА РЕШАЕТСЯ, если на форму кинуть TRichEdit (можно сделать невидимым RichEdit1.Visible := False) и вся положенная функциональность появляется!

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

Мне подсказали тут, что может надо COM правильно инициализировать — вызывал CoInitialize/CoUninitialize — без толку. Подскажите, пожалуйста, а то exe-файл раздувается из-за этого безхозного RichEdit.


 
k2 ©   (2005-08-05 04:46) [1]

не знаю што уж делает RichEdit, наверное што-то ужасное :)
но если вместо вызовов CoInitialize/CoUninitialize использовать
OleInitialize/OleUninitialize, то проблемка успешно исчезает


 
Tack   (2005-08-05 09:39) [2]

Спасибо!!!!!

теперь понятно.
Явный вызов OleInitialize(nil) в разделе инициализации есть только в модулях ShellCtrls, OleAuto, OleCtnrs, а модуль SHDocVw, где находится TWebBrowser, ни одного из них не вызывает, в отличие от ComCtrls с компонентом RichEdit.  

Подписал OleInitialize(nil) в инициализацию - все функции редактирования теперь работают в TWebBrowser.

Выдержка из 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 вся ветка

Форум: "Corba";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.043 c
3-1150649448
Merry
2006-06-18 20:50
2006.08.27
Сохранение Query


2-1155037543
1519
2006-08-08 15:45
2006.08.27
SQL


15-1154573387
Пользоват.
2006-08-03 06:49
2006.08.27
Помогите переключить раскладку при входе в виндовс.


15-1153954538
SergProger
2006-07-27 02:55
2006.08.27
Программа DelphiWorld


15-1154300361
SerJaNT
2006-07-31 02:59
2006.08.27
Мастерам PHP: globals vars





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский