Hi,
eigentlich ist das Problem ziemlich trivial.
Ich lade einen HTML-Code in eine Webbrowserkomponente. Danach möchte ich sofort drucken, leider
bekomme ich (hier nur die Vorschau) eine leere Seite.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| var Ms: TMemoryStream; L: TStringList; begin L := TStringList.Create; L.LoadFromFile('aoeo.html');
WebBrowser1.Navigate('about:blank'); while WebBrowser1.ReadyState < READYSTATE_INTERACTIVE do Application.ProcessMessages;
Ms := TMemoryStream.Create; try L.SaveToStream(Ms); Ms.Seek(0, 0); (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(Ms)); finally Ms.Free; end;
Webbrowser1.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DONTPROMPTUSER); |
Ich habe schon verschiedene "Warte"-Möglichkeiten versucht.
Oder die Browser-Events OnDownloadComplete, OnDocumentComplete etc...
Ohne Erfolg, die Vorschauseite bleibt leer.
Wenn ich diesen Weg gehen:
Delphi-Quelltext
1:
| WebBrowser1.OleObject.Document.Body.InnerHtml := L.Text; |
bekomme ich zwar eine Ansicht, aber dann wird das CSS ignoriert.
In einem Testprojekt habe ich aber festgestellt, dass der erste Weg
durchaus funktioniert.
Zwei Buttons auf eine Form und mit einem Button laden, mit dem anderen
Button die Vorschau aufrufen.
D.h. es muss einen Zustand (Status) geben, den der Browser erreicht haben muss,
damit die Vorschau verfügbar ist.
Nur wie kann ich das prüfen? Vielleicht hat jemand eine Idee.
MfG
mindtrap