C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Web brouser — долбаный, но своими руками., Дайте PLZ сылочки на примеры
RProg
Отправлено: 19.05.2005, 08:50


Ученик-кочегар

Группа: Участник
Сообщений: 11



Ну не могу найти доки, примеры и исходники для создания WEB Brouserа. Шоб я сдох! Дайте плиз сылочки или свои примеры. Шлите на емейл если не втягость или выложите здесь.
Вообще Мне нужно проанализировать HTML страничку. Задача такая

Внешний вид странички:
CODE

Привет!
здесь наши идеи. Группа №1
(Здесь эти идеи)
-----------------------------------------------------------
Привет от Гр №3
Вот наши соображения:
(пошли — пошли соображения и прочая галиматья)
-----------------------------------------------------------
Хай! Задолбал ты со своими проектами :)
Ну держи мою мысь.
Рысь
(Здесь он рожает свою мысь)
-----------------------------------------------------------


Сырец выглядит так (весьма примерно, приведенно само тело)

CODE

<a1Start>
Привет!
здесь наши идеи. Группа №1

Итак мы считаем...
Ляля тополя...
...
<br>

!Здесь всякий мусор для форматирования странички

<A2Start>
Привет от Гр №3
Вот наши соображения:
Если посмотреть с точки зрения...
...
<br>

!Здесь всякий мусор для форматирования странички

<A3Start>
Хай! Задолбал ты со своими проектами :)
Ну держи мою мысь.
Рысь
В принципе проект не плох, но...
...
<br>
!Здесь всякий мусор для форматирования странички

<B1Start>
Одобряю (Кхе-хе-хе)
<br>


Я хочу имена группы выложить в TTreeView а их идеи в RichText или в броузере
CODE

|||||||||||||||||||||||||||||||||||||||||||||||
/                     |                                  |
/                     |                                  |
/   TTreeView1|                                  |
/                     |                                  |
/                     |      TRichEdit1            |
/                     |           или                 |
/                     |     Web element        |
/                     |                                  |
/                     |                                  |
|||||||||||||||||||||||||||||||||||||||||||||||

Вообщем я думаю идея ясна.

ANStart это метка начала сообщения.
Тэг
CODE
<br>
окончание

У одной группы может быть 20 или даже 40 идей — соображений
Т.е. нужно чтобы было видно только одну, допустим первую идею (они в теле тоже отмечены специально, не помню точно как но для примера
, итд). Просто если она длиная что бы не путалась с остальными (ну это я уже так для информации).

Может кто что посоветует в принципе?
Лично я хочу сделать так:

1) открываю файл
2) ищу стартовую метку
3) читаю пока не найду
CODE
<br>

4) Но как запихать это в Web element? Темповый файл создавать не хочу. Не серьезно как-то. Может я не прав.
Правда я не знаю вообще какой элемент надо использовать. Поэтому доки и ищу.
В Webе хочу сделать из-за того что ребята отсылают в HTML очень красиво оформленно (таблички, подсветки, графики итд)
Спасибо
RProg@mail.ru
Rius
Отправлено: 19.05.2005, 11:09


Мастер участка

Группа: Участник
Сообщений: 321



Честно говоря, нифига не понял.. Чем не устраивает TCppWebBrowser ?
RProg
Отправлено: 20.05.2005, 04:04


Ученик-кочегар

Группа: Участник
Сообщений: 11



Вообще ничем. Просто я не знал что можно использовать smile.gif. Теперь буду копать с него THX
RProg
Отправлено: 20.05.2005, 06:06


Ученик-кочегар

Группа: Участник
Сообщений: 11



Не пойму как работать с этим элементом.

Конкретнее:
1) Как загрузить в него допустим "C:\1.html"
2) Можно ли в него грузить не с файла а с потока или с переменной AnsiString например?

Похоже к TCppWebBrowser нужен еще один или несколько вспомогательных элементов.
А к TCppWebBrowser справки в Borlande лично у меня нет. Может я установил не все?
GIZMO
Отправлено: 20.05.2005, 08:42


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (RProg @ 20/05/2005, 06:06)
Не пойму как работать с этим элементом.

Конкретнее:
1) Как загрузить в него допустим "C:\1.html"
2) Можно ли в него грузить не с файла а с потока или с переменной AnsiString например?

Похоже к TCppWebBrowser нужен еще один или несколько вспомогательных элементов.
А к TCppWebBrowser справки в Borlande лично у меня нет. Может я установил не все?

1. Воспользоваться методом TCppWEbBRowser::Navigate()
2. Воспользоваться IHTMLDocument2::write()
Rius
Отправлено: 20.05.2005, 12:31


Мастер участка

Группа: Участник
Сообщений: 321



По Navigate примеров много, легко найдешь. А по записи из строки в памяти:
CODE
void __fastcall TFormMain::ShowHTML(const AnsiString &html, TCppWebBrowser *pBrowser)
{
   IHTMLDocument2 *pHTMLDocument = NULL;

//    TVariant URL;
//    URL="about:blank";
//    pBrowser->Navigate2(&URL, NULL, NULL, NULL, NULL);


   if (SUCCEEDED(pBrowser->Document->QueryInterface(IID_IHTMLDocument2,(LPVOID*)&pHTMLDocument)))
   {
       if(pHTMLDocument!= NULL )
       {
           int Bounds[2] = {0,0};
           Variant v = VarArrayCreate(Bounds, 1, varVariant);
           AnsiString footer;

           v.PutElement(html, 0); // this is your html string
//            v.PutElement(" dhfds ", 1); // this is your html string
//            v.PutElement(GetStringFromResourceID(IDS_STRING_0135) + Now(), 1); // this is your html string
           pHTMLDocument->clear();
//            wchar_t *wstr;
//            pHTMLDocument->get_title(&wstr);
//            WideString Tittle = WideString(wstr);
           pHTMLDocument->write(PSafeArray(v.VArray));
//            v.VArray

           WideString pStr;
//            pHTMLDocument->get_fileSize()
 //          pHTMLDocument->toString();

           pHTMLDocument->close();
           pHTMLDocument->Release();
//            v.Clear();
       }
   }
}

примечание: у меня это работает, только если один раз при запуске программы вызвать страницу "about:blank" через Navigate
RProg
Отправлено: 20.05.2005, 20:39


Ученик-кочегар

Группа: Участник
Сообщений: 11



Спасибо буду пробовать. Если сработает я счастлив :)
RProg
Отправлено: 23.05.2005, 11:31


Ученик-кочегар

Группа: Участник
Сообщений: 11



Не знаю почему, но у меня выдает "Access Violation". Вот код:
CODE

IHTMLDocument2 *pHTMLDocument = NULL;
AnsiString html = "Hello HTML";
TCppWebBrowser *newBrowser;
newBrowser = CppWebBrowser1;

if (SUCCEEDED(newBrowser->Document->QueryInterface(IID_IHTMLDocument2,(LPVOID*)&pHTMLDocument)))
  {
      if(pHTMLDocument!= NULL )
      {
          int Bounds[2] = {0,0};
          Variant v = VarArrayCreate(Bounds, 1, varVariant);
          AnsiString footer;

          v.PutElement(html, 0); // this is your html string
          pHTMLDocument->clear();
          pHTMLDocument->write(PSafeArray(v.VArray));

          WideString pStr;

          pHTMLDocument->close();
          pHTMLDocument->Release();

      }
  }


Ругается на
CODE
if (SUCCEEDED(newBrowser->Document->QueryInterface(IID_IHTMLDocument2,(LPVOID*)&pHTMLDocument)))


Может из-за версии?
Borland Builder 5 Builsd 12.34 (ни каких сервис паков не ставил)

Ах да, подключил
CODE
<mshtml.h>
. По моему только он и подходит или хедр другой надо?

И еще, не обязательно грузить about:blank. Можно вообще все что угодно туда послать (или кого:). Это что-то вроде стартера для элемента.
Rius
Отправлено: 23.05.2005, 15:45


Мастер участка

Группа: Участник
Сообщений: 321



Вполне возможно из-за версии, у меня 6-й BCB.
Если страничка небольшая, попробуй протокол about:
CODE
navigate на url "about:<head>....</head><body>...</body>"
RProg
Отправлено: 28.05.2005, 17:24


Ученик-кочегар

Группа: Участник
Сообщений: 11



Да ну его в баню. В среду поеду и куплю себе 6 Builder — давно пора :). И спокойно поработаю.
GIZMO
Отправлено: 31.05.2005, 11:05


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (RProg @ 28/05/2005, 17:24)
Да ну его в баню. В среду поеду и куплю себе 6 Builder — давно пора smile.gif. И спокойно поработаю.

Даже не думай. BCB6 — жирный, глючный тормоз. Только BCB5.
[QUOTE RProg]И еще, не обязательно грузить about:blank. Можно вообще все что угодно туда послать (или кого:). Это что-то вроде стартера для элемента[/QUOTE]
Ну всеже, кого-нибудь пошли, и Access Violation должен пропасть...
RProg
Отправлено: 06.06.2005, 20:24


Ученик-кочегар

Группа: Участник
Сообщений: 11



Вот черт!

Вообще я приболел и не мог на работу (и до инета) добратся. Прочитал огромное спарибо GIZMO и Rius. Rius за отличный пример, а GIZMO за то что мне глаза открыл. Я придурок. Просто раскоментировал

CODE

   TVariant URL;
   URL="about:blank";
   newBrowser->Navigate2(&URL, NULL, NULL, NULL, NULL);


И блин, все пошло. Тфу, придурок :(

И еще раз спасибо!

Вернуться в Вопросы программирования в C++Builder