products/Sources/formale Sprachen/Delphi/Elbe 1.0/Sources image not shown  

Quellcode-Bibliothek

© Kompilation durch diese Firma

[Weder Korrektheit noch Funktionsfähigkeit der Software werden zugesichert.]

Datei: Frame33.pas   Sprache: Delphi

unit Frame33;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
interface
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
uses
  //----------------------------------------------------------------------------
  //local
  //----------------------------------------------------------------------------
  GenDefs,OwnUtils,OptionClass,Language,Utilities,Preview,Editor,
  //----------------------------------------------------------------------------
  //global
  //----------------------------------------------------------------------------
  Forms,Controls,ComCtrls,Tabs,Dialogs,Classes,Types,Graphics,ExtCtrls,
  PrintDialogEx,StdCtrls,SysUtils;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
const
  borderfontsize=5;
  Randlinks=150;
  RandOben=150;
  Framelinks=100;
  Frameoben=100;
  //----------------------------------------------------------------------------
  //
  //----------------------------------------------------------------------------
type
  TFrame3= class(TFrame)
    PageControl1:TPageControl;
    StatusBar1:TStatusBar;
    MiniaturTab:TTabSheet;
    DruckvorschauTab:TTabSheet;
    OpenDialog1:TOpenDialog;
    SaveDialog1:TSaveDialog;
    ExecuteTab:TTabSheet;
    Executor:TEde;
    PageNavigator:TTabSet;
    ThumbnailPreview1:TThumbnailPreview;
    PrintPreview1:TPrintPreview;
    constructor Create(Owner:TComponent);override;
    destructor Destroy;override;
    procedure CreateBorders(R:TRect);
    procedure ZoomChange(scale:integer;state:TZoomState);
    procedure PrintButtonClick(Sender:TObject);
    procedure LoadButtonClick(Sender:TObject);
    procedure PageNavigatorChange(Sender:TObject;NewTab:Integer;
      var AllowChange:Boolean);
    procedure PrintPreviewChange(Sender:TObject);
    procedure PrintPreviewBeforePrint(Sender:TObject);
    procedure PrintPreviewPrintProgress(Sender:TObject;PageNum,Progress:Integer;
      var AbortIt:Boolean);
    procedure PrintPreviewAfterPrint(Sender:TObject);
    procedure PrintPreviewBeginDoc(Sender:TObject);
    procedure PrintPreviewEndDoc(Sender:TObject);
    procedure PrintPreviewAnnotation(Sender:TObject;PageNo:Integer;
      Canvas:TCanvas);
    procedure QuerformatClick(Sender:TObject);
    procedure HochformatClick(Sender:TObject);
    procedure PrintPreviewNewPage(Sender:TObject);
    procedure PageNavigatorClick(Sender:TObject);
    procedure DruckenClick(Ty:PrintTypes;Redit:TRichEdit;Img:TImage;
      LoadedFile:JString);
    procedure PDFButtonClick(Sender:TObject);
    procedure Splitter2Moved(Sender:TObject);
    procedure Splitter1Moved(Sender:TObject);
    procedure setPreviewFull();
    procedure PrintTree(var RE:TRichEdit;Tree:TTreeView);
    procedure ZoominClick(Sender: TObject);
    procedure ZoomoutClick(Sender: TObject);
    procedure ZoomNormalClick(Sender: TObject);
  private
    procedure CreateRichTextPage;
    procedure CreateImageOnlyPage;
    procedure CreatePages;
  public
    PrintDialog2:TPrintDialogEx;
    PrintButton:TToolButton;
    Hochformat:TToolButton;
    Querformat:TToolButton;
    RE:TRichEdit;
    IM:TImage;
    PrintType:PrintTypes;
    PrintJobTitle:JString;
    PrintFile:JString;
    firstpreview:Boolean;
  end;
  //----------------------------------------------------------------------------
  //
  //----------------------------------------------------------------------------
implementation
uses
  //----------------------------------------------------------------------------
  //specific
  //----------------------------------------------------------------------------
  Variants,jpeg,Windows,Buttons,Printers;

//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
{$R *.dfm}
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
constructor TFrame3.Create(Owner:TComponent);
begin
  if Printer=nil then begin
    errorn(14,' Kein Drucker installiert');
    Exit;
  end
  else begin
    inherited Create(Owner);
    ThumbnailPreview1.PrintPreview:=PrintPreview1;
  end;
  firstpreview:=true;
  PrintDialog2:=TPrintDialogEx.Create(self);
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
destructor TFrame3.Destroy;
begin
  PrintDialog2.Free;
  ThumbnailPreview1.Free;
  PrintPreview1.Free;
  inherited Free;
end;
//----------------------------------------------------------------------------
//-   display Treeview in Richedit                                             -
//-                                                                -
//----------------------------------------------------------------------------
procedure TFrame3.PrintTree(var RE:TRichEdit;Tree:TTreeView);
  procedure printnode(lvl:Integer;N:TTreenode);
  const indent=' ';
  var
    i:Integer;
    rec:String;
    C:TTreenode;
  begin
    if N<>nil then begin
      rec:='';
      for i:=1 to lvl do
        rec:=rec+indent;
      rec:=rec+N.Text;
      RE.Lines.Add(rec);
      C:=N.getFirstChild;
      while C<>nil do begin
        printnode(lvl+1,C);
        C:=C.getNextSibling;
      end;
    end;
  end;
begin
  RE.Lines.Clear;
  printnode(0,Tree.TopItem);
end;
//----------------------------------------------------------------------------
//-   Function Drucken                                             -
//-                                                                -
//----------------------------------------------------------------------------
procedure TFrame3.DruckenClick(Ty:PrintTypes;Redit:TRichEdit;Img:TImage;
  LoadedFile:JString);
begin
  if Printer<>nil then begin
    if firstpreview then begin
      with PrintPreview1 do begin
        Zoom:=100;
        ZoomState:=zsZoomToWidth;
        Hochformat.Enabled:=Orientation=poLandscape;
        Querformat.Enabled:=Orientation=poPortrait;
        PrintJobTitle:=Application.Title+' '+ExtractFileName(PrintFile);
        DateSeparator:='.';
        if opt.R.Language=english then begin
          ShortDateFormat:='m/d/yyyy';
          DateSeparator:='/';
        end
        else
          ShortDateFormat:='d.m.yyyy';
      end;
      PrintFile:=LoadedFile;
      PrintType:=Ty;
      if Ty=Richtext then
        RE:=Redit
      else if Ty=Imageview then
        IM:=Img;
    end;
    Screen.Cursor:=crHourGlass;
    CreatePages;
    Screen.Cursor:=crDefault;
  end
end;
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
procedure TFrame3.ZoominClick(Sender: TObject);
begin
   PrintPreview1.Zoom:=(PrintPreview1.Zoom*5) div 4;
end;
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
procedure TFrame3.ZoomoutClick(Sender: TObject);
begin
   PrintPreview1.Zoom:=(PrintPreview1.Zoom div 5)*4;
end;
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
procedure TFrame3.ZoomNormalClick(Sender: TObject);
begin
   PrintPreview1.Zoom:=100;
   PrintPreview1.ZoomState:=zsZoomToFit;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.ZoomChange(scale:integer;state:TZoomState);
begin
  PrintPreview1.Zoom:=scale;
  PrintPreview1.ZoomState:=state;
  //CreatePages;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PDFButtonClick(Sender:TObject);
begin
  if PrintPreview1.CanSaveAsPDF then begin
    SaveDialog1.FileName:=StringReplace(PrintFile,ExtractFileExt(PrintFile),'',
      [rfReplaceAll])+'.pdf';
    SaveDialog1.InitialDir:=ExtractFilePath(opt.R.Infile);
    SaveDialog1.Options:=[ofOverwritePrompt,ofPathMustExist];
    SaveDialog1.Filter:=trans(lang,33,'Akrobatdatei (*.pdf)|*.pdf');
    if SaveDialog1.Execute then
      PrintPreview1.SaveAsPDF(SaveDialog1.FileName)
  end
  else
    errorn(15,'zur Zeit nicht möglich');
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.setPreviewFull();
begin
  PrintPreview1.ZoomState:=zsZoomToFit;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PrintButtonClick(Sender:TObject);
begin
  if PrintPreview1.State=psReady then begin
    PrintPreview1.SetPrinterOptions;
    PrintPreview1.PrintJobTitle:=PrintJobTitle;
    PrintPreview1.UpdateAnnotation;
    PrintDialog2.MinPage:=1;
    PrintDialog2.FromPage:=1;
    PrintDialog2.ToPage:=PrintPreview1.TotalPages;
    PrintDialog2.MaxPage:=PrintPreview1.TotalPages;
    PrintDialog2.PrintRange:=prAllPages;
    PrintDialog2.Options:=[poPageNums,poSelection];
    PrintDialog2.PrintToFile:=false;
    PrintDialog2.Ctl3D:=true;
    if PrintDialog2.Execute then begin
      if PrintDialog2.PrintRange=prSelection then
        PrintPreview1.PrintPages(PrintPreview1.CurrentPage,
          PrintPreview1.CurrentPage)
      else
        PrintPreview1.PrintPages(PrintDialog2.FromPage,PrintDialog2.ToPage);
    end
  end;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.LoadButtonClick(Sender:TObject);
begin
  if OpenDialog1.Execute then begin
    Screen.Cursor:=crHourGlass;
    Caption:=Application.Title+' - lade aus Datei...';
    try
      PrintPreview1.LoadFromFile(OpenDialog1.FileName);
    finally
      Caption:=Application.Title;
      Screen.Cursor:=crDefault;
    end;
  end;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PageNavigatorChange(Sender:TObject;NewTab:Integer;
  var AllowChange:Boolean);
begin
  PrintPreview1.CurrentPage:=NewTab+1;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PrintPreviewChange(Sender:TObject);
begin
  while PageNavigator.Tabs.Count<PrintPreview1.TotalPages do
    PageNavigator.Tabs.Add(IntToStr(PageNavigator.Tabs.Count+1));
  while PageNavigator.Tabs.Count>PrintPreview1.TotalPages do
    PageNavigator.Tabs.Delete(PageNavigator.Tabs.Count-1);
  PageNavigator.TabIndex:=PrintPreview1.CurrentPage-1;
  if PrintPreview1.State=psCreating then
    //To be able to see and navigate pages, which are prepared so far
    Application.ProcessMessages
  else begin
    PrintButton.Enabled:=PrintPreview1.PrinterInstalled;
  end;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PrintPreviewBeginDoc(Sender:TObject);
begin
  Caption:=Application.Title+' - erzeuge Seiten...';
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PrintPreviewEndDoc(Sender:TObject);
begin
  Caption:=Application.Title;
  PrintButton.Enabled:=PrintPreview1.PrinterInstalled;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PrintPreviewBeforePrint(Sender:TObject);
begin
  Screen.Cursor:=crHourGlass;
  Caption:=Application.Title+trans(lang,34,' - bereite Druck vor...');
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PrintPreviewAfterPrint(Sender:TObject);
begin
  Caption:=Application.Title;
  Screen.Cursor:=crDefault;
  PrintButton.Enabled:=PrintPreview1.PrinterInstalled;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PrintPreviewPrintProgress(Sender:TObject;
  PageNum,Progress:Integer;var AbortIt:Boolean);
begin
  Caption:=Format(trans(lang,35,'%s - Druck Seite %d von %d (%%%d fertig)...'),
    [Application.Title,PageNum,PrintPreview1.TotalPages,Progress]);
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PrintPreviewAnnotation(Sender:TObject;PageNo:Integer;
  Canvas:TCanvas);
begin
  with PrintPreview1.PrinterPageBounds do begin
    Canvas.Pen.Width:=0;
    Canvas.Pen.Style:=psDot;
    Canvas.Pen.Color:=clLtGray;
    Canvas.MoveTo(Left,0);
    Canvas.LineTo(Left,PrintPreview1.PaperHeight);
    Canvas.MoveTo(Right,0);
    Canvas.LineTo(Right,PrintPreview1.PaperHeight);
    Canvas.MoveTo(0,Top);
    Canvas.LineTo(PrintPreview1.PaperWidth,Top);
    Canvas.MoveTo(0,Bottom);
    Canvas.LineTo(PrintPreview1.PaperWidth,Bottom);
  end;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.CreateBorders(R:TRect);
var
  partial:JString;
begin
  with PrintPreview1 do begin
    //The following line ensures one pixel pen width in any mapping mode.
    Canvas.Pen.Width:=0;
    Canvas.Brush.Style:=bsCLear;
    Canvas.Rectangle(R.Left,R.Top,R.Right,R.Bottom-borderfontsize);
    //We write also the page number under the frame.
    Canvas.Font.size:=borderfontsize;
    SetTextAlign(Canvas.Handle,TA_LEFT or TA_TOP);
    Canvas.TextOut(R.Left,R.Bottom-borderfontsize,DateToStr(date));
    SetTextAlign(Canvas.Handle,TA_CENTER or TA_TOP);
    Canvas.TextOut((R.Right-R.Left)div 2+R.Left,R.Bottom-borderfontsize,'');
    SetTextAlign(Canvas.Handle,TA_RIGHT or TA_TOP);
    Canvas.TextOut(R.Right,R.Bottom-borderfontsize,
      Format(trans(lang,36,'Seite %d'),[TotalPages+1]));
    SetTextAlign(Canvas.Handle,TA_LEFT or TA_TOP);
    Canvas.TextOut(R.Left,R.Top+Canvas.Font.Height-8,
      Application.Title+' '+Version_IDE);
    SetTextAlign(Canvas.Handle,TA_RIGHT or TA_TOP);
    partial:='';
    if Previewselected then
      partial:=trans(lang,233,'Auszug aus ');
    Canvas.TextOut(R.Right,R.Top+Canvas.Font.Height-8,
      partial+ExtractFileName(PrintFile));
  end
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PrintPreviewNewPage(Sender:TObject);
var
  R:TRect;
begin
  with PrintPreview1 do begin
    //The following line ensures one pixel pen width in any mapping mode.
    Canvas.Pen.Width:=0;
    Canvas.Brush.Style:=bsCLear;
    //We are going to draw a rectangular frame on the page with 1cm distance
    //from edges of the paper.
    R:=PageBounds;
    with ConvertXY(Framelinks,Frameoben,mmLoMetric,Units) do
      InflateRect(R,-X,-Y);
    //Canvas.Rectangle(R.Left, R.Top, R.Right, R.Bottom);
    //We write also the page number under the frame.
    Canvas.Font.size:=borderfontsize;
    //SetTextAlign(Canvas.Handle, TA_RIGHT or TA_TOP);
    //Canvas.TextOut(R.Right, R.Bottom, Format('Page %d', [TotalPages+1]));
    SetTextAlign(Canvas.Handle,TA_LEFT or TA_TOP);
    CreateBorders(R);
  end;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.CreateRichTextPage;
var
  R:TRect;
begin
  with PrintPreview1 do begin
    //Don't forget that we have already drawn a frame for the page with 1cm
    //margin. We have to exclude it from the paper size. Besides that, we
    //want to include 1cm margin for the text also.
    R:=PageBounds;
    with ConvertXY(Randlinks,RandOben,mmLoMetric,Units) do
      InflateRect(R,-X,-Y);
    PaintRichText(R,RE,0,nil);
  end;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.CreateImageOnlyPage;
var
  R:TRect;
begin
  with PrintPreview1 do begin
    //Don't forget that we have already drawn a frame for the page with 1cm
    //margin. We have to exclude it from the paper size. Besides that, we
    //want to include 5mm margin for the image also.
    R:=PageBounds;
    with ConvertXY(Randlinks,RandOben,mmLoMetric,Units) do
      InflateRect(R,-X,-Y);
    PaintGraphicEx(R,IM.Picture.Graphic,true,false,true);
  end;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.CreatePages;
begin
  Screen.Cursor:=crHourGlass;
  visible:=false;
  with PrintPreview1 do begin
    Hochformat.Enabled:=Orientation=poLandscape;
    Querformat.Enabled:=Orientation=poPortrait;
    Units:=TUnits(1);
    BeginDoc;
    try
      case PrintType of
        Richtext:
          CreateRichTextPage;
        Imageview:
          CreateImageOnlyPage
      end
    finally
      EndDoc;
    end;
  end;
  visible:=true;
  Screen.Cursor:=crDefault; { Revient toujours à normal }
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.HochformatClick(Sender:TObject);
begin
  Screen.Cursor:=crHourGlass;
  PrintPreview1.Orientation:=poPortrait;
  CreatePages();
  //PrintPreview1.UpdateAnnotation;
  Hochformat.Enabled:=false;
  Querformat.Enabled:=true;
  Screen.Cursor:=crDefault;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.QuerformatClick(Sender:TObject);
begin
  Screen.Cursor:=crHourGlass;
  PrintPreview1.Orientation:=poLandscape;
  CreatePages();
  //PrintPreview1.UpdateAnnotation;
  Hochformat.Enabled:=true;
  Querformat.Enabled:=false;
  Screen.Cursor:=crDefault;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.Splitter2Moved(Sender:TObject);
begin
  ThumbnailPreview1.Update;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.Splitter1Moved(Sender:TObject);
begin
  ThumbnailPreview1.Update;
end;
//----------------------------------------------------------------------------
//
//----------------------------------------------------------------------------
procedure TFrame3.PageNavigatorClick(Sender:TObject);
begin
  PrintPreview1.CurrentPage:=PageNavigator.TabIndex+1;
end;
{ ------------------------------------------------------------------ }
{ -                                                                - }
{ -   Ende dieser Quelle                                           - }
{ -                                                                - }
{ ------------------------------------------------------------------ }
end.

¤ Dauer der Verarbeitung: 0.18 Sekunden  (vorverarbeitet)  ¤





Download des
Quellennavigators
Download des
sprechenden Kalenders

in der Quellcodebibliothek suchen




Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.


Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.


Bot Zugriff