AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) TWebBrowser: Inhaltbereich markieren und drucken???
Thema durchsuchen
Ansicht
Themen-Optionen

TWebBrowser: Inhaltbereich markieren und drucken???

Ein Thema von romber · begonnen am 3. Dez 2013 · letzter Beitrag vom 4. Dez 2013
Antwort Antwort
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#1

TWebBrowser: Inhaltbereich markieren und drucken???

  Alt 3. Dez 2013, 20:44
Hallo!

Ich lade eine bestimmte Seite in TWebBrowser. Kann ich irgendwie den bestimmten Bereicht des Seiteninhalts markieren, wenn ich die Quellcode der Seite kenne und genau weiss, wie der zu markierenden Bereich im Quellcode anfängt und endet? Ist das überhaupt möglich? Diesen Bereich möchte ich dann drucken, genau so wie im normalen Browser, wenn wir nicht die ganze Seite, sondern nur den markierten Bereich drucken wollen.

Danke!
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#2

AW: TWebBrowser: Inhaltbereich markieren und drucken???

  Alt 4. Dez 2013, 01:05
Hallo,

leider etwas wenig Information.
Zitat:
[...] wenn ich die Quellcode der Seite kenne und genau weiss, wie der zu markierenden Bereich im Quellcode anfängt und endet [...]
Heißt das Du kennst den Textinhalt der Seite oder hat der Quellcode eine ganz spezielle Struktur (Kommentare o. ä.)?

Wenn Du den Textinhalt der Seite kennst, also z. B.:
Ich lade eine bestimmte Seite in TWebBrowser. Kann ich irgendwie den bestimmten Bereicht des Seiteninhalts markieren, wenn ich die Quellcode der Seite kenne und genau weiss, wie der zu markierenden Bereich im Quellcode anfängt und endet? Ist das überhaupt möglich? Diesen Bereich möchte ich dann drucken, genau so wie im normalen Browser, wenn wir nicht die ganze Seite, sondern nur den markierten Bereich drucken wollen.

und Du möchtest den Teil von "Ich lade eine bestimmte [...]" bis "[..] Ist das überhaupt möglich?" selektieren und drucken, dann ginge das z. B. so:
Delphi-Quellcode:
procedure TForm1.Button1Click (Sender : TObject);
var
  t0, t1 : string;
  r0, r1 : IHTMLTxtRange;
begin
  t0 := 'Ich lade eine bestimmte';
  t1 := 'Diesen Bereich möchte ich dann';
  r0 := ((WebBrowser1.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange;
  r1 := ((WebBrowser1.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange;
  if r0.findText (t0, 0, 0) and r1.findText (t1, 0, 0) then
    begin
      r0.setEndPoint ('EndToStart', r1);
      r0.moveEnd ('word', -1);
      r0.select;
      WebBrowser1.ExecWB (OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT)
    end
end;
Sollte Dir den Bereich entsprechend selektieren und den Druckdialog aufrufen.

Wenn Du etwas anderes vor hast, dann musst Du schon noch etwas Info liefern.


Gruß
Volker Zeller
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: TWebBrowser: Inhaltbereich markieren und drucken???

  Alt 4. Dez 2013, 02:14
Erst mal vielen Dank für die schnelle Reaktion!

Heißt das Du kennst den Textinhalt der Seite oder hat der Quellcode eine ganz spezielle Struktur (Kommentare o. ä.)?
Die Quellcode hat eine ganz spezielle Struktur.

...und Du möchtest den Teil von "Ich lade eine bestimmte [...]" bis "[..] Ist das überhaupt möglich?" selektieren und drucken...
Genau. Allerdings ist der o.g. Texbeispiel mit dem Inhalt zu vergleichen, den ich markieren und ausdrucken möchte. Diesen Inhalt kenne ich nicht, ich weiss nur, dass der benötigte Berreich im Quelltext der Seite immer zwischen zwei HTML-Tags steht. So Z.B:

Code:
<irgendwas id="irgendelcheDetails" class="details">Hier der Bereich zum Selektieren</irgendwas>
Das bedeuted, ich kann in meinem Fall nicht einfach den Text im Browser-Bereich markieren, sondern muss irgendwie mit dem Quelltext der Seite arbeiten.

Geändert von romber ( 4. Dez 2013 um 02:16 Uhr)
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 4. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#4

AW: TWebBrowser: Inhaltbereich markieren und drucken???

  Alt 4. Dez 2013, 02:46
Hallo,

leider kann ich wieder nur raten. Hilft Dir vielleicht folgendes weiter:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  d : IHTMLDocument3;
  e : IHTMLElement;
  t : string;
  r : IHTMLTxtRange;
begin
  d := WebBrowser1.Document as IHTMLDocument3;
  if not Assigned (d) then
    Exit;

  e := d.getElementById ('irgendelcheDetails');
  if Assigned (e) then
    begin
      t := e.innerText;
      r := ((WebBrowser1.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange;
      if r.findText (t, 0, 0) then
        begin
          r.select;
          WebBrowser1.ExecWB (OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT)
        end
    end
end;
[EDIT]
Wenn es die NSA nicht wissen darf was Du selektiv ausdrucken möchtest, ok auch gut, ansonsten zeigt doch einfach den HTML-Code; helfen wird dann sicherlich einfacher.
[/EDIT]

Gruß
Volker Zeller

Geändert von Volker Z. ( 4. Dez 2013 um 02:56 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: TWebBrowser: Inhaltbereich markieren und drucken???

  Alt 4. Dez 2013, 05:48
Genau. Allerdings ist der o.g. Texbeispiel mit dem Inhalt zu vergleichen, den ich markieren und ausdrucken möchte. Diesen Inhalt kenne ich nicht, ich weiss nur, dass der benötigte Berreich im Quelltext der Seite immer zwischen zwei HTML-Tags steht. So Z.B:
Code:
<irgendwas id="irgendelcheDetails" class="details">Hier der Bereich zum Selektieren</irgendwas>
Das bedeuted, ich kann in meinem Fall nicht einfach den Text im Browser-Bereich markieren, sondern muss irgendwie mit dem Quelltext der Seite arbeiten.
Derartige HTML-Parser habe ich schon öfter geschrieben, und auch diese Problematik ist mir nicht ganz fremd. Da du den Quelltext verwenden mußt, um einen bestimmten Textbereich eingrenzen zu können, wäre es sicher nicht verkehrt, dir die ersten zwei drei Worten nach <irgendwas id="irgendelcheDetails" class="details"> zu merken und ebenso die letzten zwei drei Worte vor </irgendwas>. Diese beiden Strings übergibst du dann an deine Markier- und Druckmethode, z.B. die von Volker Z oben.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz