Autor Beitrag
mindtrap
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 62



BeitragVerfasst: Do 06.08.09 02:46 
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.

ausblenden 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(00);
    (WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(Ms));
  finally
    Ms.Free;
  end;

  { hier schon verschiedene Warte-Möglichkeiten versucht }

  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:
ausblenden Delphi-Quelltext
1:
  WebBrowser1.OleObject.Document.Body.InnerHtml := L.Text;					

bekomme ich zwar eine Ansicht, aber dann wird das CSS ignoriert. :gruebel:


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
mindtrap Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 62



BeitragVerfasst: Di 11.08.09 01:06 
*push* :shock:
Tastaro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Di 11.08.09 08:30 
Versuchs mal damit zu warten:

ausblenden Delphi-Quelltext
1:
2:
3:
   while WebBrowser1.querystatuswb(OLECMDID_PRINT) <>
         OLECMDF_SUPPORTED + OLECMDF_ENABLED do
      Application.processmessages;


Beste Grüße
mindtrap Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 62



BeitragVerfasst: Mi 12.08.09 15:05 
Hi,

danke. Leider führt das auch nicht zum gewünschten Ergebnis.
Solange ich noch nicht weiß, wie ich es anders machen kann, warte ich in meinem Programm einfach ein wenig und in der Hoffnung, dass alles klappt drucke ich dann.

Schlecht, aber ich habe derzeit keine andere Variante zur Hand.

MfG
mindtrap
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: Do 13.08.09 20:08 
Wenn ich vor dem ExecWB ein Application.ProcessMessages ausführe, wird die Vorschau nicht leer.