亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? poscontrol.~pas

?? 小票樣式打印模板設計,和管家婆的pos收銀系統小票樣式設計差不多
?? ~PAS
?? 第 1 頁 / 共 3 頁
字號:
  PosX:integer;
  I:integer;
begin
  if Printer.Printers.Count<=0 then
  begin
    MessageDlg('系統沒有安裝打印機,不能打印!', mtInformation,[mbOk],0);
    exit;
  end else
  begin
    try
      Printer.PrinterIndex:=Printer.PrinterIndex;
    except
      MessageDlg('系統沒有安裝打印機或默認打印不可用!', mtInformation,[mbOk],0);
      exit;
    end;
  end;
  Printer.Title:='眾智金軟';
  
  try
    Printer.Canvas.Font.Size:=FFont.Size;
  except
    Printer.Canvas.Font.Size:=10;
  end;
  txtHeight:=Printer.Canvas.TextHeight('眾');
  txtWidth:=Printer.Canvas.TextWidth('眾');
  RowHeight:=txtHeight+ 2;  //行高
  try
    Printer.BeginDoc;
    with Printer.Canvas do
    begin
      For I:=0 to Source.Count-1 do
      begin
        PosY:=(I+1) * RowHeight;
        TextOut(txtWidth,(PosY-((RowHeight-txtWidth) div 2)-txtWidth),Source.Strings[I]);
      end;
      Printer.canvas.Font.Size:=6;
      textOut(txtWidth,PosY+textHeight('眾')+3,'眾知金軟13668510783');
      Result:=true;
    end;
    Printer.EndDoc;
   except
    Printer.Abort;
    Result:=False;
   end;
end;

function TPosReport.PrintWithDrive(Source: TStringList;
  AImage: TImage): Boolean;
var
  txtWidth:integer;
  txtHeight:integer;
  Row:integer;
  RowHeight:Integer;
  PosY:integer;
  PosX:integer;
  I:integer;
  OldPageHeight:integer;
  tmpPage:TBitMap;
begin
  if Printer.Printers.Count<=0 then
  begin
    MessageDlg('系統沒有安裝打印機,不能打印!', mtInformation,[mbOk],0);
    exit;
  end else
  begin
    try
      Printer.PrinterIndex:=Printer.PrinterIndex;
    except
      MessageDlg('系統沒有安裝打印機或默認打印不可用!', mtInformation,[mbOk],0);
      exit;
    end;
  end;
  tmpPage:=TBitMap.Create;
  try
    tmpPage.Canvas.Font.Size:=FFont.Size;
  except
    tmpPage.Canvas.Font.Size:=10;
  end;
  txtHeight:=tmpPage.Canvas.TextHeight('眾');
  txtWidth:=tmpPage.Canvas.TextWidth('眾');
  RowHeight:=txtHeight + 2;  //行高
  FPageHeight:=RowHeight * Source.Count + 10;

  tmpPage.Width:=MMToPixel(FPageWidth);
  tmpPage.Height:=FPageHeight;

  OldPageHeight:=FPageHeight;
  Printer.Title:='眾智金軟';
  Printer.Orientation:=poPortrait;
  tmpPage.Canvas.Refresh;
  try
    with tmpPage.Canvas do
    begin
      For I:=0 to Source.Count-1 do
      begin
        PosY:=(I+1) * RowHeight;
        TextOut(txtWidth,(PosY-((RowHeight-txtWidth) div 2)-txtWidth),Source.Strings[I]);
      end;
      Printer.canvas.Font.Size:=6;
      textOut(txtWidth,PosY+textHeight('眾')+3,'眾知金軟13668510783');
    end;
    FPageHeight:=PosY+10;
    Result:=true;
    AImage.AutoSize:=true;
    AImage.Stretch:=true;
    Aimage.Picture.Bitmap.Assign(tmpPage); 
   except
    Result:=false;
   end;
   tmpPage.Free;
end;

function TPosReport.PrintReport(OutMemo: TImage): boolean;
begin
  PrintWithDrive(GetPrintData,OutMemo);
end;

function TPosReport.Print: boolean;
begin
  try
    if FDriveMode=dmNone then
      Result:=PrintNoDrive(GetPrintData)
    else
      Result:=PrintWithDrive(GetPrintData);
  except
    on E:Exception do
    begin
      showmessage(e.Message);
      Result:=false;
    end;
  end;
end;


procedure TPosReport.PrintPreview;
begin
  FrmPreview:=TFrmPreview.Create(self.Owner);
  FrmPreview.PageControl:=self;
  if FDriveMode=dmNone then
  begin
    FrmPreview.imgPage.Visible:=false;
    PrintReport(FrmPreview.mePage);
  end else
  begin
    FrmPreview.mePage.Visible:=false;
    PrintReport(FrmPreview.imgPage);
  end;
  FrmPreview.ShowModal;
  FrmPreview.Free;
  FrmPreview:=nil;
end;


procedure TPosReport.ShowDesign;
begin
  initReportFile; //打開模板
  FrmDesign:=TFrmDesign.Create(self.Owner);
  frmDesign.PageControl:=self;

  with FrmDesign do
  begin
    cbDataType.Items.Clear;
    cbDataType.Items.Add('表頭字段');
    cbDataType.Items.Add('表體字段');
    cbDataType.Items.Add('系統變量');
    cbDataType.ItemIndex:=0;
    ShowVarList(dtTitleFields,lstFields);

    case FDriveMode of
        dmNone:cbDriveType.ItemIndex:=0;
        dmWindows:cbDriveType.ItemIndex:=1;
    end;

    etFontSize.Value:=FFont.Size;
    cbCom.Text:=FComName;
    etComByte.Text:=intToStr(FComByte);
    etOpenBoxStr.Text:=FOpenBoxCode;
    ckAutoOpenBox.Checked:=FAutoOpenBox;
    etSpaceRows.Text:=intToStr(FFootSpaceRow);
    mePage.Lines.Clear;
    if Assigned(FReportLines) then
      mePage.Lines.Assign(TStrings(ReportLines));
    etPageWidth.Value:=FPageWidth;
    etTitleRows.Value:=FTitleRowCount;
    etQuantityDiciaLength.Value:=FQuantityDiciaLength;
    etMoneyDiciaLength.Value:=FMoneyDiciaLength;
   // MePage.Width:=MMToPixel(FPageWidth);
  end;

  FrmDesign.ShowModal;
  FrmDesign.Free;
  FrmDesign:=nil;
end;

procedure TPosReport.InitReportFile;
var
  FileName:String;
  FFont:TFont;
  VarType:TDataType;
begin
  FileName:=ExtractFilePath(ParamStr(0));
  if FileName[Length(FileName)]<>'\' then
    FileName:=FileName+'\';
  FileName:=FileName+'PosReport.PRT';
  LoadFromFile(FileName); //打開文件
end;

{ TReportVar }

procedure TReportVar.Assign(Source: TPersistent);
begin
  if Source is TReportVar then
  begin
     Caption:=TReportVar(Source).Caption;
     Name:=TReportVar(Source).Name;
     Value:=TReportVar(Source).Value;
  end else
    inherited Assign(Source);
end;

constructor TReportVar.Create(ReportVars: TCollection);
var
  Report:TPosReport;
begin
  Report:=nil;
  if Assigned(ReportVars) and (ReportVars is TReportVars) then
    Report:=TReportVars(ReportVars).PosReport;
  try
    inherited Create(ReportVars);
    FVarCaption:='變量1';
    FVarName:='Var1';
    FVarValue:='';
  finally
    if Assigned(Report) then
      //
  end;
end;

function TReportVar.GetDisplayName: string;
begin
  Result:=FVarName;
  if FVarName='' then
    Result:=inherited GetDisplayName;
end;

function TReportVar.GetVarCaption: String;
begin
  Result:=FVarCaption;
end;

function TReportVar.GetVarName: String;
begin
  Result:=FVarName;
end;

function TReportVar.GetVarValue: Variant;
begin
  Result:=FVarValue;
end;

function TReportVar.Index: integer;
begin
  Result:=inherited Index;
end;

procedure TReportVar.SetVarCaption(Value: String);
begin
  if FVarCaption<>Value then
    FVarCaption:=Value;
end;

procedure TReportVar.SetVarName(Value: String);
begin
  if FVarName<>Value then
    FVarName:=Value;
end;

procedure TReportVar.SetVarValue(Value: Variant);
begin
  if FVarValue<>Value then
    FVarValue:=Value;
end;

{ TReportVars }

function TReportVars.Add: TReportVar;
begin
  Result:=TReportVar(Inherited Add);
end;

procedure TReportVars.AddVar(ACaption, AName: String; Value: Variant);
var
  tmpVar:TReportVar;
begin
  tmpVar:=Add.Create(Self);
  if Assigned(tmpVar) then
  begin
    tmpVar.Caption:=ACaption;
    tmpVar.Name:=AName;
    tmpVar.Value:=Value;
  end;
end;

procedure TReportVars.Clear;
var
  I:integer;
begin
  For I:=ItemCount-1 downto 0 do
    Delete(I);
end;

constructor TReportVars.Create(Report:TPosReport;ReportVarClass: TReportVarClass);
begin
  inherited Create(ReportVarClass);
  FPosReport:=Report;
end;

function TReportVars.GetCount: integer;
begin
  Result:=inherited Count;
end;

function TReportVars.GetNameByCaption(Caption: String): String;
var
  I:integer;
begin
  for I:=0 to ItemCount-1 do
  begin
    if striComp(Pchar(Items[I].Caption),PChar(Caption))=0 then
    begin
      Result:=Items[I].Name;
      Break;
    end;
  end;
end;

function TReportVars.GetOwner: TPersistent;
begin
  Result:=FPosReport;
end;

function TReportVars.GetReportVar(Index: integer): TReportVar;
begin
  Result:=TReportVar(Inherited Items[Index]);
end;

function TReportVars.GetValueByCaption(VarCaption: String): Variant;
var
  I:integer;
begin
  for I:=0 to ItemCount-1 do
  begin
    if Items[I].FVarCaption=VarCaption then
    begin
      Result:=Items[I].Value;
      Break;
    end;
  end;
end;

function TReportVars.GetValueByName(VarName: String): Variant;
var
  I:integer;
begin
  for I:=0 to ItemCount-1 do
  begin
    if Items[I].FVarName=VarName then
    begin
      Result:=Items[I].Value;
      Break;
    end;
  end;
end;

procedure TReportVars.SetReportVar(Index: integer; Value: TReportVar);
begin
  Items[Index].Assign(Value); 
end;

procedure TReportVars.SetValueByCaption(varCaption: String;
  Value: Variant);
var
  I:integer;
begin
  for I:=0 to itemCount-1 do
  begin
    if Items[I].FVarCaption=VarCaption then
    begin
      if Items[I].value<>Value then
        Items[I].Value:=Value;
      Break;
    end;
  end;
end;

procedure TReportVars.SetValueByName(varName: String; Value: Variant);
var
  I:integer;
begin
  for I:=0 to ItemCount-1 do
  begin
    if Items[I].FVarName=varName then
    begin
      if Items[I].value<> Value then
        Items[I].Value:=Value;
      Break;
    end;
  end;
end;
//固定字符寬度
function StringAlign(mStr: string; mLength:Integer;
      mAlignment: TAlignment; mBackChar: Char= #32):string;
  var   
      L:   Integer;   
      T:   string;   
  begin   
      Result   :=   mStr;   
      L   :=   Length(mStr);   
      if   L   >=   mLength   then   Exit;   
      T   :=   DupeString(mBackChar,   mLength   -   L);   
      case   mAlignment   of   
          taLeftJustify:   Result   :=   Result   +   T;   
          taRightJustify:   Result   :=   T   +   Result;   
          taCenter:   begin   
              L   :=   Length(T)   div   2;   
              Result   :=   Copy(T,   1,   L)   +   Result   +   Copy(T,   L   +   1,   MaxInt);   
          end;   
      end;   
end;
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜国产不卡在线观看视频| 国产盗摄一区二区| 国产女人aaa级久久久级| 日本韩国一区二区三区| 国产一区二区0| 亚洲福利视频导航| 亚洲欧洲精品一区二区三区| 日韩三级精品电影久久久 | 成人免费毛片高清视频| 亚洲成a人片综合在线| 亚洲欧洲国产日本综合| 久久人人爽爽爽人久久久| 欧美视频自拍偷拍| 91美女片黄在线观看| 国产大陆亚洲精品国产| 久久精品72免费观看| 婷婷综合久久一区二区三区| 亚洲黄色免费电影| 中文字幕一区在线观看视频| 久久精品无码一区二区三区| 欧美一级二级在线观看| 91精品91久久久中77777| 成人av网站免费观看| 国产一区二区三区| 精品一区二区三区欧美| 美女www一区二区| 天堂久久一区二区三区| 亚洲一区影音先锋| 一二三区精品视频| 一级特黄大欧美久久久| 一区二区三区四区在线播放 | 国产精品久久久久7777按摩| 久久综合999| 久久久久青草大香线综合精品| 宅男噜噜噜66一区二区66| 欧美日韩精品一区二区| 7777精品伊人久久久大香线蕉经典版下载 | 亚洲国产成人av好男人在线观看| 亚洲图片另类小说| 亚洲三级在线观看| 一区二区三区四区五区视频在线观看 | 中文字幕一区二区三区不卡在线 | 五月天亚洲婷婷| 亚洲va天堂va国产va久| 天天综合色天天| 麻豆视频观看网址久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 蜜桃av一区二区三区| 国产在线不卡一区| 国产成人av影院| 成人av影院在线| 一本色道亚洲精品aⅴ| 91搞黄在线观看| 欧美日本韩国一区二区三区视频 | 欧美亚洲综合另类| 在线成人小视频| 精品国精品国产| 国产精品你懂的| 一区二区三区四区中文字幕| 亚洲福利电影网| 黄色日韩三级电影| 丁香婷婷深情五月亚洲| 日本久久电影网| 欧美亚洲另类激情小说| 欧美一区二区三区免费在线看 | 欧美不卡视频一区| 中文字幕av一区二区三区高| 亚洲色图在线播放| 日韩av中文字幕一区二区三区| 久久国产生活片100| 成人在线视频一区二区| 欧美日韩亚洲不卡| 久久久久久99久久久精品网站| 亚洲一区影音先锋| 精品一二三四区| 91麻豆国产香蕉久久精品| 日韩欧美在线一区二区三区| 国产精品欧美一区喷水| 天堂一区二区在线免费观看| 懂色av一区二区三区蜜臀| 欧美亚洲国产怡红院影院| 久久久美女艺术照精彩视频福利播放| 亚洲手机成人高清视频| 美日韩一区二区| 一本到三区不卡视频| 久久蜜臀中文字幕| 亚洲成在人线在线播放| 成人精品国产一区二区4080| 91麻豆精品国产自产在线| 亚洲国产岛国毛片在线| 日韩专区在线视频| 99精品1区2区| 精品国产区一区| 亚洲超碰精品一区二区| 成人午夜视频网站| 日韩无一区二区| 亚洲欧美激情在线| 国产高清无密码一区二区三区| 欧美精品第一页| 亚洲男同性视频| 国产成人自拍网| 欧美成人精精品一区二区频| 一区二区三区国产精华| 国产精品一区二区黑丝| 欧美一区二区三区的| 玉足女爽爽91| 成人黄色小视频| 欧美变态凌虐bdsm| 天堂影院一区二区| 欧美日韩在线三区| 亚洲日本护士毛茸茸| 国产麻豆精品在线| 欧美va在线播放| 免费观看30秒视频久久| 91成人在线免费观看| 亚洲欧洲在线观看av| 国产精品1区2区| 久久综合九色综合97_久久久| 日韩国产欧美视频| 欧美日韩免费电影| 亚洲午夜视频在线| 色婷婷综合五月| 亚洲激情成人在线| 色嗨嗨av一区二区三区| 亚洲乱码国产乱码精品精98午夜| 成人手机在线视频| 国产精品拍天天在线| 成人av一区二区三区| 国产精品美女一区二区三区| 国产不卡在线一区| 国产精品久久看| eeuss国产一区二区三区| 中文字幕在线一区二区三区| 成人三级在线视频| 亚洲欧洲日韩综合一区二区| 欧美丰满高潮xxxx喷水动漫 | 国产在线一区二区| 精品国产百合女同互慰| 国产原创一区二区| 久久免费电影网| 成人开心网精品视频| 136国产福利精品导航| 色综合久久99| 亚洲妇熟xx妇色黄| 91精品国产高清一区二区三区| 日韩av电影免费观看高清完整版 | 久久久久久电影| 成人美女视频在线观看18| 亚洲四区在线观看| 欧美日韩午夜在线| 看国产成人h片视频| 久久久精品日韩欧美| 成a人片亚洲日本久久| 亚洲特黄一级片| 69av一区二区三区| 极品少妇xxxx精品少妇| 国产日韩欧美麻豆| 色婷婷精品大在线视频| 婷婷综合五月天| 久久久久国产精品人| 99视频在线观看一区三区| 亚洲一级二级在线| 日韩女优制服丝袜电影| 成人教育av在线| 午夜精品久久久| 久久夜色精品国产噜噜av| 99久久久精品免费观看国产蜜| 亚洲一区二区不卡免费| 欧美成人一级视频| 91免费视频大全| 美国一区二区三区在线播放| 中文字幕制服丝袜成人av| 欧美伦理视频网站| 国产高清久久久| 污片在线观看一区二区| 91精品国产91久久综合桃花| 国产欧美一区二区精品秋霞影院 | 高清免费成人av| 亚洲男人的天堂在线aⅴ视频| 宅男噜噜噜66一区二区66| 成人精品视频.| 日韩高清在线观看| 国产精品国产三级国产aⅴ中文 | 欧美一级一区二区| 成人午夜又粗又硬又大| 性感美女久久精品| 国产精品久久久久7777按摩| 欧美日本在线观看| av中文一区二区三区| 免费成人小视频| 亚洲男人电影天堂| 国产日韩精品久久久| 欧美高清精品3d| 色综合中文综合网| 亚洲视频精选在线| 精品国产91久久久久久久妲己| 欧美亚洲尤物久久| 成人黄色软件下载| 国产乱一区二区| 奇米色777欧美一区二区|