⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gmpreview.pas

📁 GmPrintSuite 2.96.7] a
💻 PAS
📖 第 1 页 / 共 4 页
字号:
    Exit;
  end;
  for ICount := 0 to High(GM_VARIABLE_ZOOM) do
    if GM_VARIABLE_ZOOM[ICount] > Zoom then
    begin
      Zoom := GM_VARIABLE_ZOOM[ICount];
      Exit;
    end;
end;

procedure TGmPreview.ZoomOut;
var
  ICount: integer;
begin
  if FZoomStyle = gmFixedZoom then
  begin
    Zoom := Zoom - FZoomIncrement;
    Exit;
  end;
  for ICount := High(GM_VARIABLE_ZOOM) downto 0 do
    if GM_VARIABLE_ZOOM[ICount] < Zoom then
    begin
      Zoom := GM_VARIABLE_ZOOM[ICount];
      Exit;
    end;
end;

procedure TGmPreview.ReadData(Reader: TReader);
var
  AMargins: TStringList;
begin
  AMargins := TStringList.Create;
  try
    AMargins.CommaText := Reader.ReadString;
    FPages.Margins.Left.AsTwips := StrToInt(AMargins[0]);
    FPages.Margins.Top.AsTwips := StrToInt(AMargins[1]);
    FPages.Margins.Right.AsTwips := StrToInt(AMargins[2]);
    FPages.Margins.Bottom.AsTwips := StrToInt(AMargins[3]);
    if AMargins.Count = 4 then Exit;
    PenFromString(FPages.Margins.Pen, AMargins[4]);
    PenFromString(FPages.Margins.PrinterMarginPen, AMargins[5]);
  finally
    AMargins.Free;
  end;
end;

procedure TGmPreview.WriteData(Writer: TWriter);
var
  AMargins: TStringList;
begin
  AMargins := TStringList.Create;
  try
    AMargins.Add(IntToStr(FPages.Margins.Left.AsTwips));
    AMargins.Add(IntToStr(FPages.Margins.Top.AsTwips));
    AMargins.Add(IntToStr(FPages.Margins.Right.AsTwips));
    AMargins.Add(IntToStr(FPages.Margins.Bottom.AsTwips));
    AMargins.Add(PenToString(FPages.Margins.Pen));
    AMargins.Add(PenToString(FPages.Margins.PrinterMarginPen));
    Writer.WriteString(AMargins.CommaText);
  finally
    AMargins.Free;
  end;
end;

function TGmPreview.GetAvailablePageRect: TGmValueRect;
begin
  Result := FPages.AvailablePageRect;

end;

function TGmPreview.GetAvailablePageHeight(Measurement: TGmMeasurement): Extended;
var
  ARect: TGmRect;
begin
  ARect := GetAvailablePageRect.AsInchRect;
  Result := ConvertValue(ARect.Bottom - ARect.Top, gmInches, Measurement);
end;

function TGmPreview.GetAvailablePageGmRect(Measurement: TGmMeasurement): TGmRect;
begin
  Result := ConvertGmRect(GetAvailablePageRect.AsInchRect, gmInches, Measurement);
end;

function TGmPreview.GetAvailablePageWidth(Measurement: TGmMeasurement): Extended;
var
  ARect: TGmRect;
begin
  ARect := GetAvailablePageRect.AsInchRect;
  Result := ConvertValue(ARect.Right - ARect.Left, gmInches, Measurement);
end;

function TGmPreview.GetCurrentPage: TGmPage;
begin
  Result := FPages[CurrentPageNum];
end;

function TGmPreview.GetCurrentPageNum: integer;
begin
  Result := FPages.CurrentPage;
end;

function TGmPreview.GetDateFormat: string;
begin
  Result := GlobalDateTokenFormat;
end;

function TGmPreview.GetDragDrawShape: TGmDragDrawing;
begin
  Result := FPaper.DragDrawShape;
end;

function TGmPreview.GetFitHeightScale: Extended;
begin
  Result := ((Height-(FPaper.Gutters.Top + FPaper.Gutters.Bottom)-20)) / (CurrentPage.PageSize[gmInches].Height * SCREEN_PPI);
end;

function TGmPreview.GetFitWidthScale: Extended;
begin
  Result := ((Width-(FPaper.Gutters.Left + FPaper.Gutters.Right)-20)) / (CurrentPage.PageSize[gmInches].Width * SCREEN_PPI);
end;

function TGmPreview.GetFooter: TGmFooter;
begin
  Result := FPages.Footer;
end;

function TGmPreview.GetGmPrinter: TGmPrinter;
begin
  Result := FPages.GmPrinter;
end;

function TGmPreview.GetGutter: integer;
begin
  Result := FPaper.Gutters.Left;
end;

function TGmPreview.GetHeader: TGmHeader;
begin
  Result := FPages.Header;
end;

function TGmPreview.GetIsUpdating: Boolean;
begin
  Result := FPages.Updating;
end;

function TGmPreview.GetMargins: TGmMargins;
begin
  Result := FPages.Margins;
end;

function TGmPreview.GetNumPages: integer;
begin
  Result := FPages.Count;
end;


function TGmPreview.GetPagesPerSheet: TGmPagesPerSheet;
begin
  Result := FPages.PagesPerSheet;
end;

function TGmPreview.GetOrientation: TGmOrientation;
begin
  Result := FPages.Orientation;
end;

function TGmPreview.GetPage(index: integer): TGmPage;
begin
  Result := FPages[index];
end;

function TGmPreview.GetPageHeight(Measurement: TGmMeasurement): Extended;
begin
  Result := CurrentPage.PageSize[Measurement].Height;
end;

function TGmPreview.GetPageWidth(Measurement: TGmMeasurement): Extended;
begin
  Result := CurrentPage.PageSize[Measurement].Width;
end;

function TGmPreview.GetResourceTable: TObject;
begin
  Result := FPages.ResourceTable;
end;

function TGmPreview.GetScratchCanvas: TCanvas;
begin
  Result := FPaper.Canvas;
  Result.Brush.Style := bsClear;
end;

function TGmPreview.GetTimeFormat: string;
begin
  Result := GlobalTimeTokenFormat;
end;

function TGmPreview.GetZoom: integer;
begin
  Result := FPaper.Zoom;
end;

procedure TGmPreview.DoAbortPrint(Sender: TObject);
begin
  if Assigned(FOnAbortPrint) then FOnAbortPrint(Self);
end;

procedure TGmPreview.DoAfterPrint(Sender: TObject);
begin
  if Assigned(FAfterPrint) then FAfterPrint(Self);
end;

procedure TGmPreview.DoBeforeLoad(Sender: TObject; Version: Extended; var LoadFile: Boolean);
begin
  if Assigned(FBeforeLoad) then FBeforeLoad(Self, Version, LoadFile);
end;

procedure TGmPreview.DoBeforePrint(Sender: TObject);
begin
  if Assigned(FBeforePrint) then FBeforePrint(Self);
end;

procedure TGmPreview.DoClear(Sender: TObject);
begin
  if Assigned(FOnClear) then FOnClear(Self);
end;

procedure TGmPreview.DoPrintProgress(Sender: TObject; Printed, Total: integer);
begin
  if Assigned(FOnPrintProgress) then FOnPrintProgress(Self, Printed, Total);
end;

procedure TGmPreview.DoMouseEnter(Sender: TObject);
begin
  if Assigned(OnMouseEnter) then OnMouseEnter(Self);
end;

procedure TGmPreview.DoMouseLeave(Sender: TObject);
begin
  if FPanning then StopPanning;
  if Assigned(OnMouseLeave) then OnMouseLeave(Self);
end;

procedure TGmPreview.NewPageEvents(Sender: TObject);
begin
  if Assigned(FOnNewPage) then FOnNewPage(Self);
  if Assigned(FOnDrawHeader) then FOnDrawHeader(Self, HeaderRect, Canvas);
  if Assigned(FOnDrawFooter) then FOnDrawFooter(Self, FooterRect, Canvas);
end;

procedure TGmPreview.EnablePaperMouseEvents;
begin
  FPaper.OnMouseDown := DoMouseDown;
  FPaper.OnMouseMove := DoMouseMove;
  FPaper.OnMouseUp   := DoMouseUp;
  FPaper.OnPageMouseDown := DoPageMouseDown;
  FPaper.OnPageMouseMove := DoPageMouseMove;
  FPaper.OnPageMouseUp := DoPageMouseUp;

  FPaper.OnPageDragDrop := DoPageDragDrop;
  FPaper.OnPageDragOver := DoPageDragOver;
end;

procedure TGmPreview.HeaderFooterChanged(Sender: TObject);
begin
  Invalidate;
  MessageToControls(GM_HEADERFOOTER_CHANGED, 0, 0);
end;

procedure TGmPreview.LoadScrollPos;
begin
  ScrollToPosition(FScrollPos.X, FScrollPos.Y);
end;

procedure TGmPreview.MessageToControls(AMessage: integer; Param1, Param2: integer);
var
  ICount: integer;
  AComponent: TComponent;
begin
  // broadcast a message to all associated components...
  if (not FPages.Updating) then
  begin
    for ICount := 0 to FRegisteredComponents.Count-1 do
    begin
      AComponent := FRegisteredComponents[ICount];
      if (AComponent is TWinControl) and (AComponent.HasParent) then
        SendMessage((AComponent as TWinControl).Handle, AMessage, Param1, Param2);
    end;
  end;
end;

procedure TGmPreview.NeedRichEdit(Sender: TObject; var ARichEdit: TCustomMemo);
begin
  if Assigned(FOnNeedRichEdit) then FOnNeedRichEdit(Self, ARichEdit);
end;

procedure TGmPreview.SaveScrollPos;
begin
  FScrollPos := GmPoint(0, 0);
  if (HorzScrollBar.Range-ClientWidth) > 0 then
    FScrollPos.X := 100 * (HorzScrollBar.Position / (HorzScrollBar.Range-ClientWidth));
  if (VertScrollBar.Range-ClientHeight) > 0 then
    FScrollPos.Y := 100 * (VertScrollBar.Position / (VertScrollBar.Range-ClientHeight));
end;

procedure TGmPreview.SetCurrentPageNum(Value: integer);
begin
  FPages.CurrentPage := Value;
end;

procedure TGmPreview.SetDateFormat(Value: string);
begin
  GlobalDateTokenFormat := Value;
end;

procedure TGmPreview.SetDragDrawShape(Value: TGmDragDrawing);
begin
  FPaper.DragDrawShape := Value;
end;

procedure TGmPreview.SetFooter(Value: TGmFooter);
begin
  FPages.Footer.Assign(Value);
end;

procedure TGmPreview.SetGutter(Value: integer);
begin
  FPaper.Gutters := Rect(Value, Value, Value, Value);
end;

procedure TGmPreview.SetHeader(Value: TGmHeader);
begin
 FPages.Header.Assign(Value);
end;

procedure TGmPreview.SetMargins(Value: TGmMargins);
begin
  FPages.Margins.Assign(Value);
end;

procedure TGmPreview.SetMaxZoom(Value: integer);
begin
  if FMaxZoom = Value then Exit;
  if FMaxZoom < FMinZoom then
    FMaxZoom := FMinZoom
  else
    FMaxZoom := Value;
  if Zoom > FMaxZoom then Zoom := FMaxZoom;
end;

procedure TGmPreview.SetMinZoom(Value: integer);
begin
  if FMinZoom = Value then Exit;
  if FMinZoom > FMaxZoom then
    FMinZoom := FMaxZoom
  else
    FMinZoom := Value;
  if Zoom < FMinZoom then Zoom := FMinZoom;
end;

procedure TGmPreview.SetOrientation(Value: TGmOrientation);
begin
  FPaper.BeginUpdate;
  FPages.Orientation := Value;
  FPaper.EndUpdate;
  UpdateScrollBars;
end;

procedure TGmPreview.SetPagesPerSheet(Value: TGmPagesPerSheet);
begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -