亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
在线免费观看日韩欧美| 亚洲国产精品久久久久秋霞影院| 六月婷婷色综合| 337p粉嫩大胆噜噜噜噜噜91av| 日韩在线一区二区| 日韩一区二区影院| 黄页网站大全一区二区| 国产午夜精品福利| 99久久99久久免费精品蜜臀| 亚洲人成网站影音先锋播放| 欧美日韩一区二区在线观看| 青青草伊人久久| 国产亚洲精品bt天堂精选| 成人黄色大片在线观看| 一二三四社区欧美黄| 欧美丰满美乳xxx高潮www| 老司机午夜精品| 国产精品免费av| 欧美日韩第一区日日骚| 国产麻豆成人传媒免费观看| 国产精品污污网站在线观看| 欧美亚洲愉拍一区二区| 日韩va亚洲va欧美va久久| 国产欧美日韩中文久久| 色国产精品一区在线观看| 奇米一区二区三区av| 国产午夜久久久久| 欧美日韩三级一区二区| 精东粉嫩av免费一区二区三区| 国产精品久久久久久久久快鸭 | 精品一区二区三区在线播放视频| 欧美激情在线一区二区| 欧美视频精品在线观看| 国产精品亚洲一区二区三区妖精| 日韩伦理av电影| 日韩一区二区电影在线| jizz一区二区| 精品一区二区三区在线播放| 亚洲美女淫视频| 久久久不卡网国产精品二区| 欧美亚洲综合久久| 成人va在线观看| 久久精品二区亚洲w码| 一区二区三区精密机械公司| 久久色在线观看| 欧美日韩国产一级| 色综合中文字幕国产 | 老司机免费视频一区二区| 亚洲视频图片小说| 精品国产乱码久久久久久免费| 色综合久久综合中文综合网| 国产成人av电影在线观看| 日韩激情视频在线观看| 一级精品视频在线观看宜春院 | 色综合天天在线| 国产福利精品导航| 久草精品在线观看| 亚洲福利一二三区| 自拍偷拍亚洲综合| 中文字幕的久久| 久久尤物电影视频在线观看| 欧美日韩国产系列| 欧洲av在线精品| 一本大道av一区二区在线播放| 国产精品影视网| 另类欧美日韩国产在线| 日本亚洲最大的色成网站www| 亚洲夂夂婷婷色拍ww47| 亚洲欧美日韩国产综合在线| 中国色在线观看另类| 国产日韩欧美一区二区三区乱码 | 91蜜桃免费观看视频| fc2成人免费人成在线观看播放| 国产在线播精品第三| 精品制服美女丁香| 久久91精品久久久久久秒播| 麻豆一区二区三| 免费看欧美女人艹b| 日本网站在线观看一区二区三区| 亚洲va韩国va欧美va精品| 一区二区三区资源| 亚洲已满18点击进入久久| 一区二区三区不卡视频| 一区二区三区四区中文字幕| 亚洲视频一区二区在线| 亚洲色图欧美激情| 夜夜精品浪潮av一区二区三区| 亚洲蜜臀av乱码久久精品| 亚洲猫色日本管| 亚洲成人动漫在线免费观看| 天堂久久久久va久久久久| 热久久一区二区| 国产一区二区三区在线观看免费| 黄页网站大全一区二区| 成人午夜av在线| 色综合视频在线观看| 欧美日韩激情一区二区三区| 欧美一级二级在线观看| 欧美精品一区二区三区视频| 久久久久国产精品麻豆| 最新热久久免费视频| 亚洲国产精品欧美一二99| 久久精品国产一区二区三 | 成人午夜激情影院| 91九色02白丝porn| 欧美一级精品大片| 日本一区二区免费在线观看视频| 亚洲视频在线观看一区| 午夜精品一区在线观看| 狠狠狠色丁香婷婷综合久久五月| 国产成人av电影在线观看| 在线观看一区日韩| 日韩精品一区二| 中文字幕人成不卡一区| 日韩中文字幕一区二区三区| 国产综合成人久久大片91| 99久久久久久99| 欧美成人欧美edvon| 亚洲欧美国产毛片在线| 日韩不卡手机在线v区| 不卡一区二区三区四区| 欧美一二三区在线观看| 18欧美亚洲精品| 久久99久久99| 欧美午夜影院一区| 国产日韩欧美综合在线| 日韩成人午夜电影| 91网页版在线| 精品久久久久久久久久久院品网 | 日日嗨av一区二区三区四区| 成人小视频在线观看| 日韩一区二区在线观看视频播放| 亚洲三级久久久| 国内精品在线播放| 欧美日韩精品免费观看视频| 国产精品日产欧美久久久久| 蜜桃精品在线观看| 在线观看欧美日本| 国产精品进线69影院| 另类中文字幕网| 欧美久久久久久久久久| 亚洲三级电影网站| 国产91对白在线观看九色| 在线播放亚洲一区| 亚洲成在人线免费| 99久久99久久精品免费观看| www久久精品| 久久精品国产精品青草| 欧美丝袜丝交足nylons图片| 亚洲欧洲精品一区二区三区| 国产成人在线观看| 精品国产乱码91久久久久久网站| 亚洲午夜影视影院在线观看| 成人av电影在线| 国产欧美日韩精品一区| 久久超碰97中文字幕| 91精品一区二区三区久久久久久 | 欧美aⅴ一区二区三区视频| 91国产丝袜在线播放| 亚洲女女做受ⅹxx高潮| 91在线码无精品| 亚洲欧洲精品天堂一级 | 欧美成va人片在线观看| 免费一区二区视频| 91麻豆精品国产91久久久久久久久 | 三级影片在线观看欧美日韩一区二区| 精品一区免费av| 精品精品国产高清a毛片牛牛 | 成人av中文字幕| 中文字幕一区二区三区四区| 99久久久久久99| 亚洲精品自拍动漫在线| 欧美在线999| 偷偷要91色婷婷| 制服丝袜亚洲网站| 美女看a上一区| 久久综合九色综合97婷婷女人 | 不卡欧美aaaaa| 亚洲色大成网站www久久九九| 一本久道久久综合中文字幕| 亚洲美腿欧美偷拍| 在线观看日韩高清av| 婷婷综合五月天| 日韩欧美成人激情| 国产成人在线观看免费网站| 国产精品第一页第二页第三页| 成人h版在线观看| 亚洲精品成人少妇| 欧美日韩一区在线观看| 理论电影国产精品| 国产欧美一区二区精品婷婷| 91亚洲国产成人精品一区二区三 | 国产精品久久久久久久浪潮网站| 91亚洲精品久久久蜜桃| 天涯成人国产亚洲精品一区av| 欧美一区二区三区四区五区 | 成人综合婷婷国产精品久久 | 91精品国产欧美一区二区成人| 精品一区二区三区在线视频| 国产亚洲综合在线|