Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Rave Report - PDF (https://www.delphipraxis.net/86546-rave-report-pdf.html)

rotwildmarcy 15. Feb 2007 13:57


Rave Report - PDF
 
Hallo Zusammen,

habe ein (hoffentlich) kleines Problem:

Ich erstelle einen Report der direkt als PDF gespeichert wird. Ih würde nun gerne nach der Erstellung automatisch das neu erstellte dokument im acrobat reader öffnen lassen.

jemand ne Idee wie das funktionieren könnte? Bin für jeden Gedankenanstoss dankbar!

Gruß
rotwildmarcy

uwewo 15. Feb 2007 14:04

Re: Rave Report - PDF
 
Schau mal nach ShellExecute, hier im Forum.

Uwe

merlin17 15. Feb 2007 14:37

Re: Rave Report - PDF
 
alternativ bietet die Luxusversion des PDF-Rendern "eDocVersion" von gnostice die Möglichkeit nach dem Rendern das
automatische starten des Acrobat Reader ....

:-) thomas, TeamNevrona

Martin99 15. Feb 2007 15:32

Re: Rave Report - PDF
 
Beispiel aus einem unserer Projekte:

Delphi-Quellcode:
   // Falls wir den AcrobatReader nicht schon selbst gestartet haben, müssen
   // wir uns vormerken, ob er von uns gestartet wird. Falls ja, müssen wir ihn
   // dann in Destroy wieder stoppen.
   if not haveAcrobatReaderStarted then
      haveAcrobatReaderStarted := (not isTaskRunning('AcroRd32.exe'));
   // Show Antragsformular as PDF
   ShellExecute(0, nil, PChar(AntragsformularPDF), nil, nil, SW_SHOWNORMAL)
Die Methode isTaskRunning ist so definiert:

Delphi-Quellcode:
function isTaskRunning(ExeFileName: string): boolean;
var
  ContinueLoop: BOOL;
  FSnapshotHandle: THandle;
  FProcessEntry32: TProcessEntry32;
begin
   if ExeFileName = '' then
      raise Exception.Create('isTaskRunning: ExeFileName muss angegeben werden');

   result := false;
   FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
   FProcessEntry32.dwSize := Sizeof(FProcessEntry32); //use FProcessEntry32.szPID to

   ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);

   while (integer(ContinueLoop) <> 0) and not Result do
   begin
      if (StrIComp(PChar(ExtractFileName(FProcessEntry32.szExeFile)), PChar(ExeFileName)) = 0)
         or (StrIComp(FProcessEntry32.szExeFile, PChar(ExeFileName)) = 0) then
         Result := true;
      ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
   end;

   CloseHandle(FSnapshotHandle);
end;
Martin


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:38 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