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

📄 gmlabelprinter.pas

📁 GmPrintSuite 2.96.7] a
💻 PAS
📖 第 1 页 / 共 3 页
字号:
end;

function TGmLabelTemplateInfo.GetPageExtent(Measurement: TGmMeasurement): TGmSize;
begin
  Result := ConvertGmSize(FPageExtent, gmInches, Measurement);
end;

procedure TGmLabelTemplateInfo.SetCornerRadius(Measurement: TGmMeasurement; Value: Extended);
begin
  FCornerRadiusInch := ConvertValue(Value, Measurement, gmInches);
end;

procedure TGmLabelTemplateInfo.SetLabelHeight(Measurement: TGmMeasurement; Value: Extended);
begin
  FLabelHeightInch := ConvertValue(Value, Measurement, gmInches);
end;

procedure TGmLabelTemplateInfo.SetLabelWidth(Measurement: TGmMeasurement; Value: Extended);
begin
  FLabelWidthInch := ConvertValue(Value, Measurement, gmInches);
end;

procedure TGmLabelTemplateInfo.SetLabelSpacingHorz(Measurement: TGmMeasurement; Value: Extended);
begin
  FLabelSpacingHorzInch := ConvertValue(Value, Measurement, gmInches);
end;

procedure TGmLabelTemplateInfo.SetLabelSpacingVert(Measurement: TGmMeasurement; Value: Extended);
begin
  FLabelSpacingVertInch := ConvertValue(Value, Measurement, gmInches);
end;

procedure TGmLabelTemplateInfo.SetNumLabelsHorz(Value: integer);
begin
  if (Value = 0) or (Value = FNumHorz) then Exit;
  FNumHorz := Value;
end;

procedure TGmLabelTemplateInfo.SetNumLabelsVert(Value: integer);
begin
  if (Value = 0) or (Value = FNumVert) then Exit;
  FNumVert := Value;
end;

procedure TGmLabelTemplateInfo.SetOffsetX(Measurement: TGmMeasurement; Value: Extended);
begin
  FOffsetXInch := ConvertValue(Value, Measurement, gmInches);
end;

procedure TGmLabelTemplateInfo.SetOffsetY(Measurement: TGmMeasurement; Value: Extended);
begin
  FOffsetYInch := ConvertValue(Value, Measurement, gmInches);
end;

procedure TGmLabelTemplateInfo.SetPageExtent(Measurement: TGmMeasurement; Value: TGmSize);
begin
  FPageExtent := ConvertGmSize(Value, Measurement, gmInches);
end;

procedure TGmLabelTemplateInfo.SetPaperSize(Value: TGmPaperSize);
begin
  if FPaperSize = Custom then Exit;
  FPaperSize := Value;
  FPageExtent := GetPaperSizeInch(FPaperSize);
end;

procedure TGmLabelTemplateInfo.SetTemplateName(Value: string);
begin
  if FTemplateName = Value then Exit;
  FTemplateName := Value;
  FTemplateID := Custom_Template;
end;

//------------------------------------------------------------------------------

// *** TGmLabelTemplateList ***

constructor TGmLabelTemplateList.Create;
begin
  inherited Create(True);
  FDestroying := False;
  AddStandardTemplates;
end;

function TGmLabelTemplateList.AddTemplate(ATemplate: TGmLabelTemplate;
                                          AName: string;
                                          NumHorz,
                                          NumVert: integer;
                                          LabelWidth,
                                          LabelHeight,
                                          CornerRadius,
                                          SpacingHorz,
                                          SpacingVert,
                                          OffsetX,
                                          OffsetY: Extended;
                                          PageExtent: PGmSize;
                                          PaperSize: TGmPaperSize;
                                          Orientation: TGmOrientation;
                                          LabelShape: TGmLabelShape;
                                          Measurement: TGmMeasurement): TGmLabelTemplateInfo;
var
  NewTemplate: TGmLabelTemplateInfo;
var
  PageSize: TGmSize;
begin
  if PaperSize <> Custom then
    PageSize := ConvertGmSize(GetPaperSizeInch(PaperSize), Measurement, gmInches)
  else
  begin
    if PageExtent <> nil then
      PageSize := ConvertGmSize(PageExtent^, Measurement, gmInches)
    else
      PageSize := ConvertGmSize(GetPaperSizeInch(A4), Measurement, gmInches);
  end;
  NewTemplate := TGmLabelTemplateInfo.Create;
  NewTemplate.FTemplateID           := ATemplate;
  NewTemplate.FTemplateName         := AName;
  NewTemplate.FNumHorz              := NumHorz;
  NewTemplate.FNumVert              := NumVert;
  NewTemplate.FLabelHeightInch      := ConvertValue(LabelHeight, Measurement, gmInches);
  NewTemplate.FLabelWidthInch       := ConvertValue(LabelWidth, Measurement, gmInches);
  NewTemplate.FLabelSpacingHorzInch := ConvertValue(SpacingHorz, Measurement, gmInches);
  NewTemplate.FLabelSpacingVertInch := ConvertValue(SpacingVert, Measurement, gmInches);
  NewTemplate.FOffsetXInch          := ConvertValue(OffsetX, Measurement, gmInches);
  NewTemplate.FOffsetYInch          := ConvertValue(OffsetY, Measurement, gmInches);
  NewTemplate.FPageExtent           := PageSize;
  NewTemplate.FPaperSize            := PaperSize;
  NewTemplate.FOrientation          := Orientation;
  NewTemplate.FLabelShape           := LabelShape;
  NewTemplate.FCornerRadiusInch     := ConvertValue(CornerRadius, Measurement, gmInches);
  Add(NewTemplate);
  Result := NewTemplate;
end;

function TGmLabelTemplateList.GetTemplate(index: integer): TGmLabelTemplateInfo;
begin
  if index = -1 then
  begin
    Result := nil;
    Exit;
  end;
  Result := TGmLabelTemplateInfo(Items[index]);
end;

function TGmLabelTemplateList.GetTemplateFromName(ATemplateName: string): TGmLabelTemplateInfo;
var
  ICount: integer;
begin
  Result := nil;
  for ICount := 0 to Count-1 do
    if LowerCase(Template[ICount].TemplateName) = LowerCase(ATemplateName) then
      Result := Template[ICount];
end;

function TGmLabelTemplateList.GetTemplateIndex(ATemplate: TGmLabelTemplateInfo): integer;
begin
  Result := IndexOf(ATemplate);
end;

function TGmLabelTemplateList.PreDefinedTemplate(Value: TGmLabelTemplate): TGmLabelTemplateInfo;
var
  ICount: integer;
begin
  Result := nil;
  for ICount := 0 to Count-1 do
    if Template[ICount].TemplateID = Value then Result := Template[ICount];
end;

procedure TGmLabelTemplateList.AddStandardTemplates;
begin
  AddTemplate(L7159_Address, 'L7159_Address', 3, 8, 2.52, 1.33, DEFAULT_CORNER_INCH, 2.63, 1.33, 0.25, 0.54, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7160_Address, 'L7160_Address', 3, 7, 2.50, 1.50, DEFAULT_CORNER_INCH, 2.60, 1.50, 0.28, 0.63, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7161_Address, 'L7161_Address', 3, 6, 2.50, 1.83, DEFAULT_CORNER_INCH, 2.60, 1.83, 0.28, 0.38, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7162_Address, 'L7162_Address', 2, 8, 3.90, 1.33, DEFAULT_CORNER_INCH, 4.00, 1.33, 0.18, 0.54, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7163_Address, 'L7163_Address', 2, 7, 3.90, 1.50, DEFAULT_CORNER_INCH, 4.00, 1.50, 0.18, 0.63, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7164_Address, 'L7164_Address', 3, 4, 2.50, 2.83, DEFAULT_CORNER_INCH, 2.60, 2.83, 0.28, 0.21, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7165_Parcel,  'L7165_Parcel',  2, 4, 3.90, 2.67, DEFAULT_CORNER_INCH, 4.00, 2.67, 0.18, 0.54, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7166_Parcel,  'L7166_Parcel',  2, 3, 3.90, 3.67, DEFAULT_CORNER_INCH, 4.00, 3.67, 0.18, 0.38, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7167_Shipping, 'L7167_Shipping', 1, 1, 7.86, 11.38, DEFAULT_CORNER_INCH, 7.86, 11.38, 0.20, 0.18, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7168_Shipping, 'L7168_Shipping', 1, 2, 7.86, 5.65, DEFAULT_CORNER_INCH, 7.86, 5.65, 0.18, 0.22, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7169_Parcel, 'L7169_Parcel', 2, 2,   5.47,3.90, DEFAULT_CORNER_INCH, 5.47, 4.00, 0.40, 0.18, nil, A4, gmLandscape, gmLabelRoundRect, gmInches);
  AddTemplate(L7170_Eurofolio, 'L7170_Eurofolio', 1, 24,  5.28, 0.43, DEFAULT_CORNER_INCH, 5.28, 0.43, 1.50, 0.68, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7171_LeverArch, 'L7171_LeverArch', 4, 1,  2.36, 7.88, DEFAULT_CORNER_INCH, 2.36, 7.88, 1.15, 0.20, nil, A4, gmLandscape, gmLabelRoundRect, gmInches);
  AddTemplate(L7172_RingBinder, 'L7172_RingBinder', 2, 9,   3.94,1.18, DEFAULT_CORNER_INCH, 4.04, 1.18, 0.15, 0.56, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7173_Shipping, 'L7173_Shipping', 2, 5,   3.90, 2.24,DEFAULT_CORNER_INCH, 4.00, 2.24, 0.18, 0.26, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(L7263_Address, 'L7263_Address', 2, 7,   3.90, 1.50,DEFAULT_CORNER_INCH, 4.00, 1.50, 0.18, 0.63, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(J8660_Diskette, 'J8660_Diskette', 2, 5,  2.76, 2.05, DEFAULT_CORNER_INCH, 3.67, 2.05, 0.92, 0.76, nil, A4, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(Avery_5160_Address, 'Avery_5160_Address', 3, 10,  2.63, 1.00, DEFAULT_CORNER_INCH, 2.75, 1.00, 0.19, 0.50, nil, Letter, gmPortrait, gmLabelRoundRect, gmInches);
  AddTemplate(Herma_4209, 'Herma_4209',  2, 16,   96.0, 16.9, DEFAULT_CORNER_MM, 98.0, 16.90, 8.00, 12.0, nil, A4, gmPortrait, gmLabelRoundRect, gmMillimeters);

end;

function TGmLabelTemplateList.AddCustomTemplate(AName: string;
                                                NumHorz,
                                                NumVert: integer;
                                                LabelWidth,
                                                LabelHeight,
                                                CornerRadius,
                                                SpacingHorz,
                                                SpacingVert,
                                                OffsetX,
                                                OffsetY: Extended;
                                                PageSize: PGmSize;
                                                PaperSize: TGmPaperSize;
                                                LabelShape: TGmLabelShape;
                                                Measurement: TGmMeasurement): TGmLabelTemplateInfo;
begin
  Result := AddTemplate(Custom_Template, AName, NumHorz, NumVert, LabelWidth, LabelHeight, CornerRadius,
    SpacingHorz, SpacingVert, OffsetX, OffsetY, PageSize, PaperSize, gmPortrait, LabelShape, Measurement);
end;

procedure TGmLabelTemplateList.ImportFromFile(AFilename: string);
var
  ICount: integer;
  Ini: TIniFile;
  ASections: TStringList;
  ATemplate: TGmLabelTemplateInfo;
begin
  ASections := TStringList.Create;
  Clear;
  Ini := TIniFile.Create(AFilename);
  try
    Ini.ReadSections(ASections);
    for ICount := 0 to ASections.Count-1 do
    begin
      if TemplateFromName[ASections[ICount]] = nil then
      begin
        ATemplate := TGmLabelTemplateInfo.Create;
        ATemplate.TemplateName := ASections[ICount];
        ATemplate.FTemplateID := TGmLabelTemplate(Ini.ReadInteger(ATemplate.TemplateName, 'id', 0));
        ATemplate.FTemplateName := ASections[ICount];
        ATemplate.FNumHorz := Ini.ReadInteger(ATemplate.TemplateName, 'nh', 0);
        ATemplate.FNumVert := Ini.ReadInteger(ATemplate.TemplateName, 'nv', 0);
        ATemplate.FLabelHeightInch := Ini.ReadFloat(ATemplate.TemplateName, 'lh', 0);
        ATemplate.FLabelWidthInch := Ini.ReadFloat(ATemplate.TemplateName, 'lw', 0);
        ATemplate.FLabelSpacingHorzInch := Ini.ReadFloat(ATemplate.TemplateName, 'sh', 0);
        ATemplate.FLabelSpacingVertInch := Ini.ReadFloat(ATemplate.TemplateName, 'sv', 0);
        ATemplate.FOffsetXInch := Ini.ReadFloat(ATemplate.TemplateName, 'ox', 0);
        ATemplate.FOffsetYInch := Ini.ReadFloat(ATemplate.TemplateName, 'oy', 0);
        ATemplate.FPageExtent.Width  := Ini.ReadFloat(ATemplate.TemplateName, 'pw', 0);
        ATemplate.FPageExtent.Height := Ini.ReadFloat(ATemplate.TemplateName, 'ph', 0);
        ATemplate.FPaperSize := StrToPaperSize(Ini.ReadString(ATemplate.TemplateName, 'ps', 'A4'));
        ATemplate.FOrientation := TGmOrientation(Ini.ReadInteger(ATemplate.TemplateName, 'o', 0));
        ATemplate.FLabelShape  := TGmLabelShape(Ini.ReadInteger(ATemplate.TemplateName, 'ls', 0));
        ATemplate.FCornerRadiusInch := Ini.ReadFloat(ATemplate.TemplateName, 'cr', DEFAULT_CORNER_INCH);
        Add(ATemplate);
      end;
    end;
  finally
    Ini.Free;
    ASections.Free;
  end;
end;

procedure TGmLabelTemplateList.Templates(AStrings: TStrings);
var
  ICount: integer;
begin
  AStrings.Clear;
  try
    AStrings.BeginUpdate;
  for ICount := 0 to Count-1 do
    AStrings.Add(Template[ICount].TemplateName);
  finally
    AStrings.EndUpdate;
  end;
end;

⌨️ 快捷键说明

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