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

📄 previewform.pas

📁 delphi制作表格的控件
💻 PAS
📖 第 1 页 / 共 4 页
字号:
  Footer2.Assign(TCommonPageInfo(Source).Footer2);
  Footer3.Assign(TCommonPageInfo(Source).Footer3);
  MainTitle.Assign(TCommonPageInfo(Source).MainTitle);
  Title1.Assign(TCommonPageInfo(Source).Title1);
  Title2.Assign(TCommonPageInfo(Source).Title2);
  Title3.Assign(TCommonPageInfo(Source).Title3);
  Title4.Assign(TCommonPageInfo(Source).Title4);
  Title5.Assign(TCommonPageInfo(Source).Title5);
  Title6.Assign(TCommonPageInfo(Source).Title6);
  Tail1.Assign(TCommonPageInfo(Source).Tail1);
  Tail2.Assign(TCommonPageInfo(Source).Tail2);
  Tail3.Assign(TCommonPageInfo(Source).Tail3);
  Tail4.Assign(TCommonPageInfo(Source).Tail4);
  Tail5.Assign(TCommonPageInfo(Source).Tail5);
  Tail6.Assign(TCommonPageInfo(Source).Tail6);
end;

constructor TCommonPageInfo.Create;
begin
  Inherited Create;
  Orientation := poPortrait;
  StartPageNo := 1;
  PrintAllPages := True;
  StartPage := 0;
  EndPage := 9999;
  PaperSize := 0;
  if HasPrinter then
    begin
      PageWidth := Round(Printer.PageWidth * ScreenToPrinterX);
      PageHeight := Round(Printer.PageHeight * ScreenToPrinterY);
    end
  else
    begin
      PageWidth := Round(1488 * ScreenToPrinterX);
      PageHeight := Round(2104 * ScreenToPrinterY);
    end;
  Margin.Left := 19 * ScreenPixelsPerMmX;
  Margin.Right := Margin.Left;
  Margin.Top := 25 * ScreenPixelsPerMmY;
  Margin.Bottom := Margin.Top;
  Scale := 100;
  TitleExtent := 0 * ScreenPixelsPerMmY;
  TailExtent := 0 * ScreenPixelsPerMmY;
  ExtraTitleExtent := 0;
  HeaderExtent := 0 * ScreenPixelsPerMmY;
  FooterExtent := 0 * ScreenPixelsPerMmY;
  ExtraHeaderExtent := 5 * ScreenPixelsPerMmY;
  ExtraFooterExtent := 5 * ScreenPixelsPerMmY;
  HeaderLineStyle := psSolid;
  FooterLineStyle := psSolid;
  HeaderLineWidth := 0;
  FooterLineWidth := 0;
  HeaderDoubleLine := True;
  FooterDoubleLine := True;
  PrintFirstHeader := True;
  PrintFirstFooter := True;
  FillChar(Reserved, 256, 0);

  Header1 := THeader.Create;
  Header2 := THeader.Create;
  Header3 := THeader.Create;
  Footer1 := TFooter.Create;
  Footer2 := TFooter.Create;
  Footer3 := TFooter.Create;
  MainTitle := TTitle.Create;
  Title1 := TTitle.Create;
  Title2 := TTitle.Create;
  Title3 := TTitle.Create;
  Title4 := TTitle.Create;
  Title5 := TTitle.Create;
  Title6 := TTitle.Create;
  Tail1 := TTail.Create;
  Tail2 := TTail.Create;
  Tail3 := TTail.Create;
  Tail4 := TTail.Create;
  Tail5 := TTail.Create;
  Tail6 := TTail.Create;
end;

destructor TCommonPageInfo.Destroy;
begin
  Header1.Free;
  Header2.Free;
  Header3.Free;
  Footer1.Free;
  Footer2.Free;
  Footer3.Free;
  MainTitle.Free;
  Title1.Free;
  Title2.Free;
  Title3.Free;
  Title4.Free;
  Title5.Free;
  Title6.Free;
  Tail1.Free;
  Tail2.Free;
  Tail3.Free;
  Tail4.Free;
  Tail5.Free;
  Tail6.Free;
  Inherited Destroy;
end;

procedure TCommonPageInfo.LoadFromStream(AFileStream: TStream);

  procedure ReadSegmentFlag;
  var
    SegmentFlag: Byte;
  begin
    AFileStream.Read(SegmentFlag, SizeOf(SegmentFlag));
    if (SegmentFlag <> SegmentFlagValue) then Raise Exception.Create(BadCommonPageInfo);
  end;
  
begin
  with AFileStream do
  begin
    Read(Orientation, SizeOf(Orientation));
    Read(StartPageNo, SizeOf(StartPageNo));
    Read(PrintAllPages, SizeOf(PrintAllPages));
    Read(StartPage, SizeOf(StartPage));
    Read(EndPage, SizeOf(EndPage));
    Read(PaperSize, SizeOf(PaperSize));
    Read(PageWidth, SizeOf(PageWidth));
    Read(PageHeight, SizeOf(PageHeight));
    Read(Margin, SizeOf(Margin));
    Read(Scale, SizeOf(Scale));
    Read(TitleExtent, SizeOf(TitleExtent));
    Read(ExtraTitleExtent, SizeOf(ExtraTitleExtent));
    Read(TailExtent, SizeOf(TailExtent));
    Read(HeaderExtent, SizeOf(HeaderExtent));
    Read(FooterExtent, SizeOf(FooterExtent));
    Read(ExtraHeaderExtent, SizeOf(ExtraHeaderExtent));
    Read(ExtraFooterExtent, SizeOf(ExtraFooterExtent));
    Read(HeaderLineStyle, SizeOf(HeaderLineStyle));
    Read(FooterLineStyle, SizeOf(FooterLineStyle));
    Read(HeaderLineWidth, SizeOf(HeaderLineWidth));
    Read(FooterLineWidth, SizeOf(FooterLineWidth));
    Read(HeaderDoubleLine, SizeOf(HeaderDoubleLine));
    Read(FooterDoubleLine, SizeOf(FooterDoubleLine));
    Read(PrintFirstHeader, SizeOf(PrintFirstHeader));
    Read(PrintFirstFooter, SizeOf(PrintFirstFooter));
    Read(Reserved, 256);
    ReadSegmentFlag;
  end;
  Header1.LoadFromStream(AFileStream); ReadSegmentFlag;
  Header2.LoadFromStream(AFileStream); ReadSegmentFlag;
  Header3.LoadFromStream(AFileStream); ReadSegmentFlag;
  Footer1.LoadFromStream(AFileStream); ReadSegmentFlag;
  Footer2.LoadFromStream(AFileStream); ReadSegmentFlag;
  Footer3.LoadFromStream(AFileStream); ReadSegmentFlag;
  MainTitle.LoadFromStream(AFileStream); ReadSegmentFlag;
  Title1.LoadFromStream(AFileStream); ReadSegmentFlag;
  Title2.LoadFromStream(AFileStream); ReadSegmentFlag;
  Title3.LoadFromStream(AFileStream); ReadSegmentFlag;
  Title4.LoadFromStream(AFileStream); ReadSegmentFlag;
  Title5.LoadFromStream(AFileStream); ReadSegmentFlag;
  Title6.LoadFromStream(AFileStream); ReadSegmentFlag;
  Tail1.LoadFromStream(AFileStream); ReadSegmentFlag;
  Tail2.LoadFromStream(AFileStream); ReadSegmentFlag;
  Tail3.LoadFromStream(AFileStream); ReadSegmentFlag;
  Tail4.LoadFromStream(AFileStream); ReadSegmentFlag;
  Tail5.LoadFromStream(AFileStream); ReadSegmentFlag;
  Tail6.LoadFromStream(AFileStream); ReadSegmentFlag;
end;

procedure TCommonPageInfo.SaveToStream(AFileStream: TStream);
var
  SegmentFlag: Byte;
begin
  SegmentFlag := SegmentFlagValue;
  with AFileStream do
  begin
    Write(Orientation, SizeOf(Orientation));
    Write(StartPageNo, SizeOf(StartPageNo));
    Write(PrintAllPages, SizeOf(PrintAllPages));
    Write(StartPage, SizeOf(StartPage));
    Write(EndPage, SizeOf(EndPage));
    Write(PaperSize, SizeOf(PaperSize));
    Write(PageWidth, SizeOf(PageWidth));
    Write(PageHeight, SizeOf(PageHeight));
    Write(Margin, SizeOf(Margin));
    Write(Scale, SizeOf(Scale));
    Write(TitleExtent, SizeOf(TitleExtent));
    Write(ExtraTitleExtent, SizeOf(ExtraTitleExtent));
    Write(TailExtent, SizeOf(TailExtent));
    Write(HeaderExtent, SizeOf(HeaderExtent));
    Write(FooterExtent, SizeOf(FooterExtent));
    Write(ExtraHeaderExtent, SizeOf(ExtraHeaderExtent));
    Write(ExtraFooterExtent, SizeOf(ExtraFooterExtent));
    Write(HeaderLineStyle, SizeOf(HeaderLineStyle));
    Write(FooterLineStyle, SizeOf(FooterLineStyle));
    Write(HeaderLineWidth, SizeOf(HeaderLineWidth));
    Write(FooterLineWidth, SizeOf(FooterLineWidth));
    Write(HeaderDoubleLine, SizeOf(HeaderDoubleLine));
    Write(FooterDoubleLine, SizeOf(FooterDoubleLine));
    Write(PrintFirstHeader, SizeOf(PrintFirstHeader));
    Write(PrintFirstFooter, SizeOf(PrintFirstFooter));
    Write(Reserved, 256);
    Write(SegmentFlag, SizeOf(SegmentFlag));
  end;
  Header1.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Header2.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Header3.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Footer1.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Footer2.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Footer3.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  MainTitle.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Title1.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Title2.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Title3.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Title4.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Title5.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Title6.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Tail1.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Tail2.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Tail3.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Tail4.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Tail5.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
  Tail6.SaveToStream(AFileStream); AFileStream.Write(SegmentFlag, SizeOf(SegmentFlag));
end;

{ THeader }

procedure THeader.Assign(Source: Pointer);
begin
  FontSize := THeader(Source).FontSize;
  FontStyle := THeader(Source).FontStyle;
  FontColor := THeader(Source).FontColor;
  FontName := THeader(Source).FontName;
  Content := THeader(Source).Content;
end;

constructor THeader.Create;
begin
  FontSize := 9;
  FontStyle := [];
  FontColor := clBlack;
  FontName := '宋体';
  Content := '';
end;

procedure THeader.LoadFromStream(AFileStream: TStream);
var
  StrLen: Integer;
begin
  with AFileStream do
  begin
    Read(FontSize, SizeOf(FontSize));
    Read(FontStyle, SizeOf(FontStyle));
    Read(FontColor, SizeOf(FontColor));
    Read(StrLen,SizeOf(Integer));
    SetLength(FontName, StrLen);
    Read(FontName[1],StrLen);
    Read(StrLen,SizeOf(Integer));
    SetLength(Content, StrLen);
    Read(Content[1],StrLen);
  end;
end;

procedure THeader.SaveToStream(AFileStream: TStream);
var
  StrLen: Integer;
begin
  with AFileStream do
  begin
    Write(FontSize, SizeOf(FontSize));
    Write(FontStyle, SizeOf(FontStyle));
    Write(FontColor, SizeOf(FontColor));
    StrLen := Length(FontName);
    Write(StrLen,SizeOf(Integer));
    Write(FontName[1],StrLen);
    StrLen := Length(Content);
    Write(StrLen,SizeOf(Integer));
    Write(Content[1],StrLen);
  end;
end;

{ TTitle }

procedure TTitle.Assign(Source: Pointer);
begin
  Distance := TTitle(Source).Distance;
  FontName := TTitle(Source).FontName;
  FontSize := TTitle(Source).FontSize;
  FontColor := TTitle(Source).FontColor;
  FontStyle := TTitle(Source).FontStyle;
  Content := TTitle(Source).Content;
end;

constructor TTitle.Create;
begin
  Distance := 0 * ScreenPixelsPerMmY;
  FontSize := 24;
  FontStyle := [];
  FontColor := clBlack;
  FontName := '宋体';
  Content := '';
end;

procedure TTitle.LoadFromStream(AFileStream: TStream);
var
  StrLen: Integer;
begin
  with AFileStream do
  begin
    Read(Distance, SizeOf(Distance));
    Read(FontSize, SizeOf(FontSize));
    Read(FontStyle, SizeOf(FontStyle));
    Read(FontColor, SizeOf(FontColor));
    Read(StrLen,SizeOf(Integer));
    SetLength(FontName, StrLen);
    Read(FontName[1],StrLen);
    Read(StrLen,SizeOf(Integer));
    SetLength(Content, StrLen);
    Read(Content[1],StrLen);
  end;
end;

procedure TTitle.SaveToStream(AFileStream: TStream);
var
  StrLen: Integer;
begin
  with AFileStream do
  begin
    Write(Distance, SizeOf(Distance));
    Write(FontSize, SizeOf(FontSize));
    Write(FontStyle, SizeOf(FontStyle));
    Write(FontColor, SizeOf(FontColor));
    StrLen := Length(FontName);
    Write(StrLen,SizeOf(Integer));
    Write(FontName[1],StrLen);
    StrLen := Length(Content);
    Write(StrLen,SizeOf(Integer));
    Write(Content[1],StrLen);
  end;
end;

initialization
  GetResolution;

finalization

end.

⌨️ 快捷键说明

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