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

Вниз

Cтандартное меню Edit и WebBrowser   Найти похожие ветки 

 
servs   (2003-05-16 17:29) [0]

Как при использовании WebBrowser реализуються действия из стандартного меню Edit.
Истересуют конкретно Copy, Paste, Find, Select All.

Зарание спасибо. Хоть идеи киньте где искать


 
servs   (2003-05-16 18:47) [1]

Сори, вопрос снимаеться.


 
servs   (2003-05-16 19:19) [2]

Поспешил я...

Пишу такой код:
StatusCMD := WebBrowser.QueryStatusWB(OLECMDID_COPY);
if (StatusCMD and OLECMDF_SUPPORTED = OLECMDF_SUPPORTED) and
(StatusCMD and OLECMDF_ENABLED = OLECMDF_ENABLED) then
WebBrowser.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_SHOWHELP);

после этого получай Exception: "Trying to revoke a drop target that has not been registered"

И что это значит???


 
nikkie   (2003-05-16 21:01) [3]

TEmbeddedWB
http://www.euromind.com/iedelphi


 
servs   (2003-05-17 13:12) [4]

Спасибо, скачал поставил.

Но как мне сделать то что мне нужно???
Не буду ж я печать руцями писать, имея по отдельности списки тегов...


 
nikkie   (2003-05-17 14:08) [5]

>Но как мне сделать то что мне нужно???
EmbeddedWB1.Copy

>Не буду ж я печать руцями писать, имея по отдельности списки тегов...
не понял...


 
servs   (2003-05-17 14:28) [6]

???
А наверное что-то не то скачалю.
Там нет компонента TEmbeddedWB...
Я поставил, пакет, скачаны й по твоей ссылке, и у меня на закладке "ActiveX", появилось очень много компонентов с префиксом THTMLxxx. Вот как ими пользоваться не пойму, но вроде там есть такой прикол - HTMLDocument.execCommand().
Только параметр почему то - WideString.

Ничего не могу понять ;(


 
servs   (2003-05-17 15:50) [7]

Сори.
Спасибо nikkie. Разобрался, я просто не нашел куда он его поставил. Пока по исходникам не посмотрел, не мог найти. Интересно почему его в КомпонентЛисте нет???


 
LOX   (2003-05-18 17:19) [8]


> nikkie © (16.05.03 21:01)

Я скачал а при установки в uses фигня какаито!


 
servs   (2003-05-19 16:44) [9]

Написал бы какая фигня, тогда можно помочь чем-то.
В версию Дельфи заодно.

И еще можно почитать мануал-ы на том сайте, откуда качал - мне помогло.


 
LOX   (2003-05-19 18:04) [10]

ПРи установки компонента в uses фигня с EXTCtrls, OleCtrls, Mshtml_tlb, SHDocVw_tlb выдает ошибку что типа не может наёти файлы EXTCtrls.dcu


 
servs   (2003-05-19 19:11) [11]

То LOX ©

EXTCtrls, OleCtrls - стандартные для Дельфи.
SHDocVw_tlb - вытераешь "хвостик" _tlb (может не для всех для Д7 прокатило)
Mshtml_tlb - импортируешь из Mshtml.tlb, она лежит в Систем32 (на сайте написано).

То nikkie.
Там нет - Paste. Как его сделать? Вопрос собстевенно как получить активный контрол и узнать его класс. У меня ControlCount всегда 0. Как бороться?


 
nikkie   (2003-05-19 22:43) [12]

Для начала небольшое дополнение, для объяснения, зачем там _tlb.

WebBrowser - это ActiveX контроль, который базируется на 2-х COM-библиотеках: mshtml.dll и shdocvw.dll. Вот, что написано в MSDN (статья "Reusing the WebBrowser Control").

The actual parsing and rendering of the HTML documents in the WebBrowser control is handled by the Mshtml.dll component of Microsoft® Internet Explorer 4.0, or 5. The MSHTML component is an Active Document (also known as an OLE document object) that provides support for parsing and rendering with the Dynamic HTML Object Model, as well as for hosting ActiveX® Controls and scripts. The WebBrowser control directly handles the navigation, hyperlinking, history lists, favorites, and security.

По-русски: mshtml.dll реализует MSHTML-компоненту. Эта компонента ответственна за разбор и отрисовку HTML. shdocvw.dll реализует WebBrowser, который выступает хостом MSHTML-документа и добавляет функциональность браузера: навигация, история и т.п.

Дельфи предлагает удобную функцию: Project/Import type library позволяет создать pas-файл, содержащий декларации интерфейсов, перечислений и guid-ов, прописанных в библиотеках типов. При импорте Дельфи называет pas-файл как "имя библиотеки" + "_tlb". Библиотека shdocvw.dll отсутствует в списке зарегистрированных, но ее можно добавить руками (лежит она также в системной папке). Для дельфи 4 это был единственный способ получить доступ к функциональности WebBrowser"а, а в дельфи 5 файлы mshtml.pas и shdocvw.pas (которые на самом деле те же самые автоматически созданные файлы) были включены в поставку. Можно создать эти два _tlb.pas файла самому, но это имеет смысл только если нужна функциональность, которая появилась в более новых версиях эксплорера - IE5, IE6.


 
nikkie   (2003-05-19 22:58) [13]

Теперь по поводу Paste. На самом деле, HTML документ можно перевести в режим редактирования. В этом случае он превращается в готовый HTML-редактор. И вполне логично, что у него есть команда Paste, которая приводит к изменению самого HTML-документа. Разработчики TEmbeddedWB не имели в виду такое использование компонента и поэтому не добавили метод Paste. Думается мне, это легко можно добавить самому, посмотрев как реализован метод Copy. Если OLECMDID_PASTE почему-то не заработает, то надо смотреть на команду IDM_PASTE - с ней у меня точно работало, но у нее другая CommandGroup - прежде, чем ее использовать надо доку на нее в MSDN.

Но насколько я понял, тебя интересует совсем другая функциональность - paste должен происходить в активный контроль на странице (форме). Совсем не уверен, что описанный выше способ Paste даст именно это. Видимо тут надо работать с содержимым HTML-документа.


 
nikkie   (2003-05-19 23:15) [14]

Для начала надо получить указатель на IHTMLDocument2. Получить его можно как (WebBrowser.DefaultInterface.Document as IHTMLDocument2). Далее читаем MSDN и поражаемся, как много IHTML* интерфейсов они наплодили и какие у них есть методы. Наверное, самое логичное будет оттолкнуться от IHTMLDocument2::get_activeElement, и получив IHTMLElement, запросить у него IHTMLInputElement и в случае успеха вызвать put_value. Короче вся документация - в MSDN, про работу с внутренностями HTML-документа поподробнее, чем я написал, можно почитать в статье Игоря Осов"яка http://delphi.vitpc.com/mastering/tweb.htm

PS почему надо делать так (WebBrowser.DefaultInterface.Document as IHTMLDocument2), а не так (WebBrowser.Document as IHTMLDocument2) - в статье Игорь упоминает мимоходом, а на этом форуме недавно объяснял подробно.

PPS понятное дело, свойство ControlCount - это VCL-ное свойство и о премудростях MSHTML оно не осведомлено. Потому и 0. Потому что с точки зрения VCL WebBrowser - один контроль, внутри которого других контролей нет.



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

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

Наверх




Память: 0.49 MB
Время: 0.008 c
6-78023
Fiend
2003-05-19 17:25
2003.07.24
Письма и вложения


1-77821
stkatch
2003-07-09 16:36
2003.07.24
Как узнать Handle текущего потока (Thread)


1-77964
Shtock
2003-07-11 09:44
2003.07.24
Проблемы со сворачиванием главной формы


1-77871
Jumbo
2003-07-13 14:48
2003.07.24
Из одного проекта - две программы (Lite и Full версии)


1-77844
Cr@zy-EyE
2003-07-12 17:54
2003.07.24
Invalid Pointer Operation





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