AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TWebBrowser Ausdrucken Fuß- und Kopfzeile verbergen
Thema durchsuchen
Ansicht
Themen-Optionen

TWebBrowser Ausdrucken Fuß- und Kopfzeile verbergen

Offene Frage von "davar"
Ein Thema von MarvinM · begonnen am 8. Jan 2009 · letzter Beitrag vom 4. Sep 2013
Antwort Antwort
Benutzerbild von MarvinM
MarvinM

Registriert seit: 24. Jul 2006
94 Beiträge
 
#1

TWebBrowser Ausdrucken Fuß- und Kopfzeile verbergen

  Alt 8. Jan 2009, 12:28
Hallo,

wie kann man mit einem Quellcodebefehl beim Ausdruck eines TWebBrowsers die Kopf- und Fußzeile verbergen (also Datum, Adresse, etc.)?

Danke für Eure Hilfe!
Mfg Marvin

Carpe Diem! - Genieße den Tag! - [gr. Horaz]
> Meine Homepage - http://www.prettyprograms.de <
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: TWebBrowser Ausdrucken Fuß- und Kopfzeile verbergen

  Alt 8. Jan 2009, 12:47
Hallo

In diesem MS Artikel findest du Informationen.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: TWebBrowser Ausdrucken Fuß- und Kopfzeile verbergen

  Alt 12. Jan 2009, 21:40
Hallo,

So kannst du einen benutzerdefinierten Header & Footer festsetzen.

Delphi-Quellcode:
uses
  ActiveX, ComObj;

procedure WB_PrintWithHeaderFooter(Webbrowser: TWebbrowser; Header, Footer: PWideChar);
var
  saBound: TSafeArrayBound;
  psaHeadFoot: PSafeArray;
  vaIn, vaOut: TVariantArg;
  vHeadStr, vFootStr: TVariantArg;
  rgIndex: LongInt;
begin
  try
    saBound.lLbound := 0;
    saBound.cElements := 2;
    psaHeadFoot := SafeArrayCreate(VT_VARIANT, 1, saBound);
    vHeadStr.vt := VT_BSTR;
    vHeadStr.bstrVal := SysAllocString(Header);
    vFootStr.vt := VT_BSTR;
    vFootStr.bstrVal := SysAllocString(Footer);
    rgIndex := 0;
    OleCheck(SafeArrayPutElement(psaHeadFoot, rgIndex, vHeadStr));
    rgIndex := 1;
    OleCheck(SafeArrayPutElement(psaHeadFoot, rgIndex, vFootStr));
    vaIn.vt := VT_ARRAY or VT_BYREF;
    vaIn.parray := psaHeadFoot;
    Webbrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER,
      OleVariant(vaIn), OleVariant(vaOut));
    if vHeadStr.bstrVal <> nil then
      SysFreeString(vHeadStr.bstrVal);
    if vFootStr.bstrVal <> nil then
      SysFreeString(vFootStr.bstrVal);
  except
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  WB_PrintWithHeaderFooter(Webbrowser, '', ''); // Kein Header & Footer
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: TWebBrowser Ausdrucken Fuß- und Kopfzeile verbergen

  Alt 2. Okt 2011, 14:47
Ich weiß, ist schon alt, aber da ich das grad sah....


Man kann sich hier an vielen Stellen vom Delphi helfen lassen.

* die PWideChars (Header und Fotter) gleich in einen WideString, welcher intern schon das SysAllocString und SysFreeString gekapselt hat
* vaIn.parray ist ja schon ein PSafeArray, wodurch man sich die zusätzliche Variable psaHeadFoot erspart
* saBound erspart man sich, indem man es über einen ähnlichen Typen ercastet oder man erstellt sich zumindestens eine passende Konstante
* das leere Try-Except ist eh eine Unsitte und fliegt gleich mit raus

Delphi-Quellcode:
uses
  ActiveX, ComObj;

procedure WB_PrintWithHeaderFooter(WebBrowser: TWebBrowser; const Header, Footer: WideString);
var
  saBound: TSafeArrayBound;
  vaIn, vaStr: TVariantArg;
  rgIndex: LongInt;
begin
  saBound.lLbound := 0;
  saBound.cElements := 2;
  vaIn.vt := VT_ARRAY or VT_BYREF;
  vaIn.parray := SafeArrayCreate(VT_VARIANT, 1, saBound);

  rgIndex := 0;
  vaStr.vt := VT_BSTR;
  vaStr.bstrVal := Pointer(Header);
  OleCheck(SafeArrayPutElement(vaIn.parray, rgIndex, vaStr));

  rgIndex := 1;
  vaStr.vt := VT_BSTR;
  vaStr.bstrVal := Pointer(Footer);
  OleCheck(SafeArrayPutElement(vaIn.parray, rgIndex, vaStr));

  WebBrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, OleVariant(vaIn));
end;
Delphi-Quellcode:
uses
  ActiveX, ComObj;

procedure WB_PrintWithHeaderFooter(WebBrowser: TWebBrowser; const Header, Footer: WideString);
var
  saBound: TSafeArrayBound;
  vaIn: TVariantArg;
  rgIndex: LongInt;
begin
  saBound.lLbound := 0;
  saBound.cElements := 2;
  vaIn.vt := VT_ARRAY or VT_BYREF;
  vaIn.parray := SafeArrayCreate(VT_VARIANT, 1, saBound);
  rgIndex := 0; OleCheck(SafeArrayPutElement(vaIn.parray, rgIndex, OleVariant(Header)));
  rgIndex := 1; OleCheck(SafeArrayPutElement(vaIn.parray, rgIndex, OleVariant(Footer)));
  WebBrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, OleVariant(vaIn));
end;

Das Endergebnis (locker mal 60% weniger Code):
Delphi-Quellcode:
uses
  ActiveX, ComObj;

procedure WB_PrintWithHeaderFooter(WebBrowser: TWebBrowser; const Header, Footer: WideString);
var
  vaIn: TVariantArg;
  rgIndex: LongInt;
begin
  vaIn.vt := VT_ARRAY or VT_BYREF;
  vaIn.parray := SafeArrayCreate(VT_VARIANT, 1, TSafeArrayBound(Point(0, 2)));
  rgIndex := 0; OleCheck(SafeArrayPutElement(vaIn.parray, rgIndex, OleVariant(Header)));
  rgIndex := 1; OleCheck(SafeArrayPutElement(vaIn.parray, rgIndex, OleVariant(Footer)));
  WebBrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, OleVariant(vaIn));
end;

// oder

procedure WB_PrintWithHeaderFooter(WebBrowser: TWebBrowser; const Header, Footer: WideString);
const
  saBound: TSafeArrayBound = (cElements: 2; lLbound: 0);
var
  vaIn: TVariantArg;
  rgIndex: LongInt;
begin
  vaIn.vt := VT_ARRAY or VT_BYREF;
  vaIn.parray := SafeArrayCreate(VT_VARIANT, 1, saBound);
  rgIndex := 0; OleCheck(SafeArrayPutElement(vaIn.parray, rgIndex, OleVariant(Header)));
  rgIndex := 1; OleCheck(SafeArrayPutElement(vaIn.parray, rgIndex, OleVariant(Footer)));
  WebBrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, OleVariant(vaIn));
end;
Falls es irgendwo noch eine Art SafeArrayCreate gibt, welchem man gleich die Felder mitgeben kann, dann würde das wohl noch auf einem Einzeler zusammenfassen können.


PS: Die Codes in Post #3 und #4 sollten mit Win32 (ANSI und Unicode) funktionieren. Zu Win64 kann ich keine Aussage treffen.


[edit]
Arg, die Parameter sind ja krank
rgIndex: LongInt; muß also drin bleiben
Delphi-Quellcode:
procedure WB_PrintWithHeaderFooter(WebBrowser: TWebBrowser; const Header, Footer: WideString);
procedure PutElement(va: TVariantArg; idx: LongInt; const pv: OleVariant);
  begin OleCheck(SafeArrayPutElement(va.parray, idx, pv)); end;
const saBound: TSafeArrayBound = (cElements: 2; lLbound: 0);
var vaIn: TVariantArg;
begin
  vaIn.vt := VT_ARRAY or VT_BYREF;
  vaIn.parray := SafeArrayCreate(VT_VARIANT, 1, saBound);
  PutElement(vaIn, 0, Header);
  PutElement(vaIn, 1, Footer);
  WebBrowser.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, OleVariant(vaIn));
end;
$2B or not $2B

Geändert von himitsu ( 2. Okt 2011 um 16:06 Uhr)
  Mit Zitat antworten Zitat
davar

Registriert seit: 4. Feb 2005
311 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: TWebBrowser Ausdrucken Fuß- und Kopfzeile verbergen

  Alt 4. Sep 2013, 11:48
Hallihallo,

ich krame mal den fast 2 (bzw. 4) Jahre alten Thread heraus, weil ich gerade damit beschäftigt bin.

Bis zum Drucken bin ich gekommen, dafür erst mal vielen Dank.

Meine Frage ist nun: wie bekomme ich eine Rückmeldung, dass auch tatsächlich gedruckt wurde? Ist das möglich?
  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 23:19 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