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

📄 gmpreview.pas

📁 GmPrintSuite 2.96.7] a
💻 PAS
📖 第 1 页 / 共 4 页
字号:
var
  Values: TGmValueList;
begin
  // return the version of a TGmPreview which created the file referenced by
  // the AFileName paramater...
  Values := TGmValueList.Create;
  try
    Values.LoadFromFile(AFileName);
    Result := Values.ReadExtValue(C_V, 0);
  finally
    Values.Free;
  end;
end;

function TGmPreview.GetPageSize(Measurement: TGmMeasurement): TGmSize;
begin
  Result := ConvertGmSize(FPages.PageSizeInch, gmInches, Measurement);
end;

function TGmPreview.HeaderRect: TGmValueRect;
begin
  Result := FPages.HeaderRect;
end;

function TGmPreview.InsertPage(index: integer): TGmPage;
begin
  Result := FPages.InsertPage(index);
end;

function TGmPreview.NewPage: TGmPage;
begin
  Result := FPages.AddPage;
end;

function TGmPreview.GmObjectAtPos(x, y: Extended; Measurement: TGmMeasurement): TGmVisibleObject;
begin
  CurrentPage.ObjectAtPos(x, y, Measurement, Result);
end;

function TGmPreview.GmObjectRect(AObject: TGmVisibleObject): TRect;
var
  ARect: TRect;
  Data: TGmObjectDrawData;
begin
  if not Assigned(AObject) then Exit;
  Data.Page := CurrentPageNum;
  Data.NumPages := NumPages;
  Data.PpiX := SCREEN_PPI;
  Data.PpiY := SCREEN_PPI;
  ARect := GmRectPointsToRect(AObject.BoundingRect(Data));
  ARect := ScaleRect(ARect, Zoom/100);
  OffsetRect(ARect,
             (FPaper.PageRect.Left - HorzScrollBar.Position),
             (FPaper.PageRect.Top  - VertScrollBar.Position));
  ARect.Left := ARect.Left-1;
  ARect.Top := ARect.Top -1;
  Result := ARect;

end;

function TGmPreview.Tokenize(AText: string; APage: integer): string;
begin
  Result := GmFuncs.Tokenize(AText, APage, NumPages, DateTokenFormat, TimeTokenFormat);
end;

procedure TGmPreview.AddAssociatedComponent(AComponent: TComponent);
begin
  if FRegisteredComponents.IndexOf(AComponent) = -1 then
    FRegisteredComponents.Add(AComponent);
end;

procedure TGmPreview.RemoveAssociatedComponent(AComponent: TComponent);
begin
  if FRegisteredComponents.IndexOf(AComponent) <> -1 then
    FRegisteredComponents.Delete(FRegisteredComponents.IndexOf(AComponent));
end;

procedure TGmPreview.Assign(Source: TPersistent);
begin
  //
end;

procedure TGmPreview.BeginUpdate;
begin
  MessageToControls(GM_BEGINUPDATE, 0, 0);
  FPages.BeginUpdate;
  FPaper.BeginUpdate;
end;

procedure TGmPreview.CenterOnClick(x, y: integer);
var
  CenterPoint: TPoint;
begin
  // center the page on the X,Y coordinates when the scroll bars are visible...
  CenterPoint.X := Width div 2;
  CenterPoint.Y := Height div 2;
  HorzScrollBar.Position := (x - CenterPoint.X);
  VertScrollBar.Position := (y - CenterPoint.y);
end;

procedure TGmPreview.Clear;
begin
  FSelectedObject := nil;
  FPages.ClearPages;
end;

procedure TGmPreview.DeleteCurrentPage;
begin
  DeletePage(CurrentPageNum-1);
end;

procedure TGmPreview.DeletePage(index: integer);
begin
  FPages.DeletePage(index);
end;

procedure TGmPreview.DeleteSelectedGmObject;
var
  AObject: TGmBaseObject;
begin
  if Assigned(FSelectedObject) then
  begin
    AObject := FSelectedObject;
    FSelectedObject := nil;
    CurrentPage.DeleteGmObject(AObject);
  end;
end;

procedure TGmPreview.DragDrawCancel;
begin
  FPaper.DragDrawStop;
end;

procedure TGmPreview.DragDrawStart;
begin
  FPaper.DragDrawStart;
end;

procedure TGmPreview.DragDrawToCanvas;
var
  ARect: TGmRect;
begin
  if not FPaper.IsDragDrawing then Exit;
  DragDrawCancel;
  ARect := FPaper.DragDrawInchRect;
  if EqualGmPoints(ARect.TopLeft, ARect.BottomRight) then Exit;
  case FPaper.DragDrawShape of
    gmDragLine     : Canvas.Line(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, gmInches);
    gmDragEllipse  : Canvas.Ellipse(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, gmInches);
    gmDragRectangle: Canvas.Rectangle(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom, gmInches);
  end;
end;

procedure TGmPreview.DragDrawZoom;
var
  Area: TRect;
  DragRect: TRect;
begin
  if not FPaper.IsDragDrawing then Exit;
  DragDrawCancel;
  DragRect := FPaper.DragDrawRect;
  Area.Left   := MinInt(DragRect.Left, DragRect.Right);
  Area.Top    := MinInt(DragRect.Top, DragRect.Bottom);
  Area.Right  := MaxInt(DragRect.Left, DragRect.Right);
  Area.Bottom := MaxInt(DragRect.Top, DragRect.Bottom);
  ZoomToArea(Area);
end;

procedure TGmPreview.DragGmObjectStart(AObject: TGmVisibleObject);
begin
  if (not Assigned(AObject)) or (AObject.AllowDrag = False) then Exit;
  FObjectDragging := True;
  FSelectedObject := AObject;
  FDragObjectStart := FMousePosInch;
  FDragObjectRect := GmObjectRect(FSelectedObject);
  FLastObjectRect := Rect(0,0,0,0);
  FPaper.Invalidate;
end;

procedure TGmPreview.DragGmObjectEnd;
var
  Offset: TGmPoint;
begin
  if not FObjectDragging then Exit;
  Offset.X := (FDragObjectStart.X - FMousePosInch.X);
  Offset.Y := (FDragObjectStart.Y - FMousePosInch.Y);
  FObjectDragging := False;
  if not Assigned(FSelectedObject) then Exit;
  FSelectedObject.OffsetObject(0-Offset.X, 0-Offset.Y, gmInches);
  FPaper.Invalidate;
  MessageToControls(GM_PAGE_CONTENT_CHANGED, 0, 0);
end;

procedure TGmPreview.EndUpdate;
begin
  FPages.EndUpdate;
  FPaper.EndUpdate;
  MessageToControls(GM_ENDUPDATE, 0, 0);
end;

procedure TGmPreview.FindText(AText: string; CaseSensative: Boolean; AList: TList);
begin
  FPages.FindText(AText, CaseSensative, AList);
end;

procedure TGmPreview.FirstPage;
begin
  FPages.CurrentPage := 1;
end;

procedure TGmPreview.FitHeight;
begin
  Zoom := Trunc(GetFitHeightScale * 100);
end;

procedure TGmPreview.FitWholePage;
begin
  Zoom := Trunc(MinFloat(GetFitWidthScale, GetFitHeightScale) * 100);
end;

procedure TGmPreview.FitWidth;
begin
  Zoom := Trunc(GetFitWidthScale * 100);
end;

procedure TGmPreview.LastPage;
begin
  FPages.CurrentPage := NumPages;
end;

procedure TGmPreview.LoadFromFile(AFilename: string);
var
  AFileStream: TFileStream;
begin
  try
    AFileStream := TFileStream.Create(AFileName, fmOpenRead);
    try
      LoadFromStream(AFileStream);
    finally
      AFileStream.Free;
    end;
  except
    // display an error!
  end;
end;

procedure TGmPreview.LoadFromStream(Stream: TStream);
begin
  FPages.LoadFromStream(Stream);
end;

procedure TGmPreview.NextPage;
begin
  FPages.CurrentPage := FPages.CurrentPage + 1;
end;

procedure TGmPreview.PaperSizes(AStrings: TStrings);
var
  ICount: TGmPaperSize;
begin
  AStrings.BeginUpdate;
  AStrings.Clear;
  for ICount := Low(TGmPaperSize) to High(TGmPaperSize) do
    AStrings.Add(PaperSizeToStr(ICount));
  AStrings.EndUpdate;
end;

procedure TGmPreview.PrevPage;
begin
  FPages.CurrentPage := FPages.CurrentPage - 1;
end;

procedure TGmPreview.Print;
begin
  PrintRange(1, NumPages);
end;

procedure TGmPreview.PrintCurrentPage;
begin
  FPages.PrintRange(CurrentPageNum, CurrentPageNum);
end;

procedure TGmPreview.PrintRange(APageFrom, APageTo: integer);
begin
  BeginUpdate;
  FPages.PrintRange(APageFrom, APageTo);
  EndUpdate;
end;

procedure TGmPreview.PrintToFile(AFileName: string);
begin
  FPages.PrintToFile(AFileName);
end;

procedure TGmPreview.SaveToFile(AFileName: string);
var
  AFileStream: TFileStream;
begin
  try
    AFileStream := TFileStream.Create(AFileName, fmCreate);
    try
      SaveToStream(AFileStream);
    finally
      AFileStream.Free;
    end;
  except
    // display an error!
  end;
end;

procedure TGmPreview.SaveToStream(Stream: TStream);
begin
  FPages.SaveToStream(Stream);
end;

procedure TGmPreview.ScrollToPosition(xPercent, yPercent: Extended);
begin
  HorzScrollBar.Position := Round((xPercent/100) * (HorzScrollBar.Range - ClientWidth));
  VertScrollBar.Position := Round((yPercent/100) * (VertScrollBar.Range - ClientHeight));
end;

procedure TGmPreview.SelectGmObject(AObject: TGmVisibleObject);
begin
  FSelectedObject := AObject;
  if FDrawSelectedBorder then Invalidate;
end;

procedure TGmPreview.SetCursor(ACursor: TGmCursor);
begin
  // change the preview page cursor...
  case ACursor of
    gmDefault   : Cursor := crDefault;
    gmZoomIn    : Cursor := crZoomIn;
    gmZoomOut   : Cursor := crZoomOut;
  end;
end;

procedure TGmPreview.SetCustomPageSize(AWidth, AHeight: Extended; Measurement: TGmMeasurement);
begin
  FPages.SetPageSize(AWidth, AHeight, Measurement);
end;

procedure TGmPreview.StartPanning;
begin
  if FPanning then Exit;
  FPanning := True;
  GetCursorPos(FPanningOrigin);
  FPanningOrigin := ScreenToClient(FPanningOrigin);
  FPanningScrollOrigin := Point(HorzScrollBar.Position, VertScrollBar.Position);
  Screen.Cursor := crHandPoint;
end;

procedure TGmPreview.StopPanning;
begin
  if not FPanning then Exit;
  FPanning := False;
  Screen.Cursor := crDefault;
end;

procedure TGmPreview.UsePrinterPageSize;
begin
  FPages.UsePrinterPageSize;
end;

procedure TGmPreview.ZoomIn;
var
  ICount: integer;
begin
  if FZoomStyle = gmFixedZoom then
  begin
    Zoom := Zoom + FZoomIncrement;

⌨️ 快捷键说明

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