Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.16;
Скачать: CL | DM;

Вниз

Вывод 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
1-52173
Никита
2003-12-03 15:40
2003.12.16
BoolToInt


3-52072
3APA3A
2003-11-25 02:42
2003.12.16
Вопрос по MySQL


1-52199
Nata Kirhar
2003-12-02 13:27
2003.12.16
HTML & MS Word


1-52234
DeScriptor
2003-12-04 22:12
2003.12.16
Стыкуемые окна


1-52251
Maxximusss
2003-12-04 14:42
2003.12.16
Преобразование из string в Currency(Real) с сохранением знаков