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

Вниз

Вывод HTML + обработка событий   Найти похожие ветки 

 
ZA   (2003-10-17 09:02) [0]

Мне нужна, на мой взгляд простая вещь:
1. Выдергиваем кусок исходного HTML текста из БД.
2. Выводим этот форматированный текст на экран.
3. При нажатии на какой либо элемент управления HTML, например, на <a href=1> программа должна перехватить управления и произвести соответствующие действия (например получить переменную href:=1);

Неужели для этого необходимо городить веб-сервер? Может есть компонент, который просто выводит HTML?

Прошу совета в каком направлении начинать копать. Я не работал с Delphi начиная с версии 3-4. Сейчас поставил семерку и офигел 8-)...


 
Yurr   (2003-10-17 09:23) [1]

См. http://www.pbear.com/


 
алекс   (2003-10-19 14:53) [2]

может, тебе лучше перехватить нажатие на хреф1 через встроенный компонент хтмл(его внутренние объекты). на королевстве делфи есть примеры, по крайней мере вся необходимая информация


 
AAZ72   (2003-10-19 15:31) [3]

To ZA
Может подскажешь - как ты выводишь на экран этот форматированный текст? Наверное с помощью WebBrowser? Если можно -код...

Заранее благодарю


 
Ihor Osov'yak   (2003-10-20 00:43) [4]

2 ZA © (17.10.03 09:02)

TWebBrowser

2.
---

1 вариант

procedure ShowHTML(aText: string);
var
v: Variant;
HTMLDocument: IHTMLDocument2;
begin
if not assigned(WebBrowser.DefaultInterface.Document) then exit;
HTMLDocument := WebBrowser.DefaultInterface.Document as IHTMLDocument2;
v := VarArrayCreate([0, 0], varVariant);
v[0] := aText; // Here"s your HTML string
HTMLDocument.Write(PSafeArray(TVarData(v).VArray));
HTMLDocument.Close;
end;

2 вариант

function TForm1.LoadFromStream(const AStream: TStream): HRESULT;
begin
if not assigned(WebBrowser1.DefaultInterface.Document) then exit;

AStream.seek(0, 0);
Result := (WebBrowser1.DefaultInterface.Document as IPersistStreamInit).Load
(TStreamAdapter.Create(AStream));
end;


3 вариант (nikkie ©)

var
Doc: Variant;
begin
Doc := WebBrowser1.DefaultInterface.Document;
Doc.write(aText);
end;


3.
----

Если нужно ловить клик только на тегах, которые вызывают навигацию (тот же a), то перехватываем WebBrowser.OnBeforeNavigate2 с простеньким парсингом URL и, возможно, установкой Cancel в True с целью предовратить эту навигацию..

Если нужно ловить клик по любому тегу - то это несколько сложнее, придется самостоятельно подписываться на нотификацию либо от IHTMLWindow или от IHTMLDocument2 (уже не помню, кто из них делает нотификацию о клике, а в документацию смотреть лень), а потом по координате клика запрашивать тег (это просто), либо подписыватся на нотификацию к любому тегу.. Но это уже на грани маразма..
.. Есть еще вариант - можно в принцыпе назначать делфийские обработчики для событий тегов, тех, что нужно.. Но это также несколько трудоемко..
Так что может все же лучше огранитчится вариантом с тегами, которые вызывают навигацию с последующим контролем OnBeforeNavigate.. Остальные способа - на порядок сложнее..


 
ZA   (2003-10-20 15:10) [5]

> См. http://www.pbear.com/
To Yurr:
Спасибо, кажется это то что мне нужно. HtmlLite волне подходит для моих целей. Спасибо.

To AAZ72:
Вот через этот htmlLite и буду выводить - htmlLite.LoadStrings и т.д. Особенно хорошо, что у него есть поддержка форм и значение переменных можно получить в программу!!!

To Ihor Osov"yak ©:
Спасибо, TWebBrowser и перехват его событий мне кажется слишком сложной процедурой. Цель то у меня проста, а вот реализация оказывается сложной из за применения навороченных компонентов.

С уважением, Алексей.



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

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

Наверх





Память: 0.47 MB
Время: 0.014 c
6-52303
andre
2003-10-21 23:10
2003.12.16
GLScene


8-52287
maskit
2003-08-19 01:16
2003.12.16
DGLUT.pas


14-52352
Игорь Шевченко
2003-11-07 00:30
2003.12.16
Думкин, с днем рождения!!!


6-52300
VMS
2003-10-22 14:40
2003.12.16
INDY


14-52389
Knight
2003-11-21 01:12
2003.12.16
Можно ли передвинуть курсор так...





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