Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > html xml?


Автор: Inga 2.6.2006, 11:46
Допустим, программа опрашивает какие-то внешние устройства. Определила что устройств, к примеру, 1. Для этого устройства программа создала картинку и текстовую подпись к этой картинке. В какой формат сохранить эту информацию, чтобы получить один файл (формат файла должен быть известен Windows)?
Для объединения текста и картинки можно сохранить в формат html (СppBrowser), но тогда на диске будет два файла – сама страница html и папка с картинкой. Мне нужно получить один файл, объединяющий и картинку, и подпись к ней в какой ни будь общеизвестный формат Windows, чтобы можно было переслать этот файл по почте. Такое возможно?
 

Автор: _hunter 2.6.2006, 12:24
а чем mht не устраивает?
(Web Archive, single file в IE) 

Автор: Inga 2.6.2006, 13:01
Супер!
Сразу и не сообразила, что это за формат mht пока не исследовала типы файлов, которые может сохранять IE. СppBrowser поддерживает mnt? Если да то это то, что нужно! Большое спасибо.

 

Автор: _hunter 2.6.2006, 13:23
СppBrowser -- ActiveX IE 

Автор: Inga 2.6.2006, 14:35
Если программа уже готова, и она выводит информацию в простом окне формы, в виде рисунков и текстовых меток (см. рисунок) то, как наименьшими усилиями можно получить файл mnt из всего этого? Какая должна быть цепочка действий?
Надо положить на форму СppBrowser и формировать в нем содержимое формы? Как это сделать? Или вообще как-то по-другому все организовать для получения на выходе mnt?

 

Автор: _hunter 2.6.2006, 15:22
нужно будет сварганить HTML' ину, включающую эти картинки (картинки нужно будет сохранить на винте), выполнить на нее Navigate2 и вызвать метод Save (наверное). 

Автор: Inga 2.6.2006, 15:50
Каждый раз, после того как программа отработала, получается разное число картинок и подписей к ней. html я знаю. Не пойму как начать формировать код html получив форму. 
Как стартовать?
1. Значит, сохраняю все картинки из формы на диск. Кстати как из получившейся формы перекинуть все картинки в нужную папку?
2. Как начать формирование html запроса?
3. Нет ли компонента генерирующего html на основании содержимого формы?
Много вопросов. smile
 

Автор: _hunter 2.6.2006, 17:02
в html' е сварганить таблицу -- в каждой ячейке по картинке.
о компонентах не слышал 

Автор: Inga 2.6.2006, 17:28
_hunter, опишите в кратце по пунктам ка бы действовали? Таблицу мне в HomeSite сделать одна минута, но как это все сообрать и приминить в проекте?  


P.S. Вот нашла решение моей задачи TWHForm2HTML: http://www.citforum.ru/programming/comp/comp05.shtml#4 только он стоит дороже чем я могла бы заработать.  smile   

Автор: _hunter 2.6.2006, 17:54
собирать html -- в строке (или любом другом подходящем обекте)
как -- путем дописывания ячеек/строк в цикле по числу картинок
т.е. есть начальная строка типа 
"<html><body><table>"
к ней в цикле плюсуем "<tr><img src=" путь к картинке на диске + "></tr>"
и плюсуем завершающие теги
"</table></body></html>"
 

Автор: Inga 2.6.2006, 17:59
Cпасибо, вроде в голове появилось прояснение (маленькое).  smile  

Автор: Inga 4.6.2006, 18:25
 Спасибо _hunter, вроде получилось:

Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{

 ListBox1->Clear();
 //ïîäãîòîâêà html ñòðàíèöû
 ListBox1->Items->Add("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
 ListBox1->Items->Add("<html>");
 ListBox1->Items->Add("<head>");
 ListBox1->Items->Add("<title>Îò÷åò</title>");
 ListBox1->Items->Add("</head>");
 ListBox1->Items->Add("<body>");
 ListBox1->Items->Add("<table>");

 //êîä íèæå îòâå÷àåò çà ñîäåðæèìîå òåãà table â êîäå ñòðàíèöû html
 int count = 0;
 int Index = 1;
 AnsiString S = "";
 AnsiString S2 = "";

 for (int i=0; i<ComponentCount; i++)
 {
   TImage * IsImage = dynamic_cast<TImage *>(Components[i]);
     if (IsImage)
      {
      IsImage->Picture->SaveToFile("C:\\html\\Images\\Image" + IntToStr(i) + ".bmp");
      ListBox1->Items->Add("<tr>");
      ListBox1->Items->Add("<td>");
      S = "<img src=\"C:\\html\\Images\\Image" + IntToStr(i) +  ".bmp" + "\" alt=\"\">";
      ListBox1->Items->Add(S);
      ListBox1->Items->Add("</td>");
      ListBox1->Items->Add("<td>");
       for (int i=0; i<ComponentCount; i++)
        {
         TLabel * IsLabel = dynamic_cast<TLabel *>(Components[i]);
         if(IsLabel)
          {
             if(Components[i]->Name == "Label" + IntToStr(Index))
               {
               TLabel * Temp = (TLabel *)Components[i];
               ListBox1->Items->Add(Temp->Caption);
               break;
               }
          }
        }
      ListBox1->Items->Add("</td>");
      ListBox1->Items->Add("</tr>");
                count ++;
                Index ++;
      }

 }

ListBox1->Items->Add("</table>");
ListBox1->Items->Add("</body>");
ListBox1->Items->Add("</html>");
ListBox1->Items->SaveToFile("îò÷åò.html");
CppWebBrowser1->Navigate(WideString("C:\\html\\îò÷åò.html"));

}
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)