Witam!
Mam wyzwanie dla programistów Delphi w wersji 6 :d Siedzę nad nim już piąty dzień i nic nie wykombinowałem...
Chodzi o coś takiego: posiadam sobie zmienną typu string, która jest generowanym przez program htmlem (kod poniżej) - w jaki sposób wydrukować to jako html (tak, jak w przeglądarce) bez zapisywania na dysku?
Opiszę, co udało mi się zrobić :d
Otóż bez problemu mogę wyświetlić stringa w TWebBrowserze, i wtedy pojawia się piękny sformatowany html. Problem w tym, że nie zmienia to "adresu" przeglądanej strony, która ciągle wynosi "about:blank".
Ze stron Borlanda można przepisać kod drukujący bieżącą lokalizację html z poziomu TWebBrowsera.
Z połączenia powyższych wynika, że po pryzpisaniu stringa do webbrowsera i wydrukowaniu go, pojawia się pusta strona "about:blank"...
Rozwiązanie oczywiście jest - zapisać stringa na dysku jako plik, wczytać do browsera i wydrukować. Ale to jest nieprofesjonalne :> i chciałbym, aby odbyło się to bez konieczności zapisu czegokolwiek na dysku.
Rozwiązanie lamerskie:
html:=exportGridToHTML(table);
sl:=tstringlist.create;
sl.add(html);
sl.SaveToFile('c:\\temp.html');
sl.free;
WebBrowser.navigate('c:\\temp.html');
while WebBrowser.ReadyState <= READYSTATE_INTERACTIVE do
Application.ProcessMessages;
loaded:=true;
if loaded then
begin
hidden.Visible:=true;
// WebBrowser.OleObject.Document.documentElement:=html;
HTMLDoc := WebBrowser.Document as IHTMLDocument2;
if HTMLDoc = nil then
raise Exception.Create('Couldn''t convert the WebBrowser to an IHTMLDocument2');
HTMLWnd := HTMLDoc.parentWindow;
HTMLWindow3 := HTMLWnd as IHTMLWindow3;
// Finally, we get to the print method
HTMLWindow3.print;
hidden.visible:=false;
end;
Ładowanie stringa (wstawić powyżej w miejsce zapisywania do pliku) do webbrowsera:
if Assigned(WebBrowser.Document) then
begin
sl := TStringList.Create;
try
ms := TMemoryStream.Create;
try
sl.Text := HTML;
sl.SaveToStream(ms) ;
ms.Seek(0, 0) ;
(WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;
loaded:=true;
finally
ms.Free;
end;
finally
sl.Free;
end;
end;
Będę dźwięczny za pomoc,
Pozdrawiam,
Sorrow.