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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? poscontrol.~pas

?? 小票樣式打印模板設(shè)計(jì),和管家婆的pos收銀系統(tǒng)小票樣式設(shè)計(jì)差不多
?? ~PAS
?? 第 1 頁 / 共 3 頁
字號(hào):
  FSysVars.AddVar('行數(shù)','[@.行數(shù)]','');
  FSysVars.AddVar('開發(fā)商','[@.開發(fā)商]','');
end;

destructor TPosReport.Destroy;
begin
  FTitleVars.Free;
  FSysVars.Free;
  FFont.Free;
  inherited;
end;

function TPosReport.FilterVar(S: String;Out outS:String):Boolean;
Var
  I:integer;
begin
  OutS:=S;
  For I:=0 to FSysVars.Count-1 do
  begin
   OutS:=StringReplace(OutS,FSysVars.Items[I].Name,FSysVars.Items[I].Value,[rfReplaceAll{,rfIgnoreCase}]);
  end;
  For I:=0 To FTitleVars.Count-1 do
  begin
   OutS:=StringReplace(OutS,'[!.' + FTitleVars.Items[I].Name + ']',FTitleVars.Items[I].Value,[rfReplaceAll{,rfIgnoreCase}]);
  end;
  Result:=true;
end;

Function tPosReport.FilterFields(S:String;Row:integer;Out OutS:String):Boolean;
var
  I,J:integer;
begin
  OutS:=S;
  if (FBodyType=btGrid) and (Assigned(FGrid)) then
  begin
    For J:=0 to FGrid.ColCount-1 do
    begin
      OutS:=StringReplace(S,'[#.'+FGrid.Columns[J].Title.Caption +']',FGrid.Cells[J,Row],[rfReplaceAll]);
      S:=OutS;
    end;
  end;
  if (FBodyType=btDataSet) and (Assigned(FDataSet)) and (FDataSet.Active) then
  begin
    For J:=0 to FDataSet.Fields.Count-1 do
    begin
      OutS:=stringReplace(S,'[#.'+FDataSet.Fields[J].Name +']',FDataSet.Fields[J].AsString,[rfReplaceAll]);
      S:=OutS;
    end;
  end;
end;

function TPosReport.GetTitleVars: TReportVars;
begin
  if Assigned(FTitleVars) then
    Result:=FTitleVars;
end;

function TPosReport.GetVarValue(VarType: char; VarName: String): String;
begin
  {由變量名及類型獲取變量值}
  if VarType in ['@','!','#'] then
  begin
    if VarType='@' then    //系統(tǒng)變量
    begin
      InitSysValues;
      Result:=FSysVars.GetValueByCaption(VarName);
    end;
    if VarType='!' then
    begin
      Result:=VarName;
    end;
    if VarType='#' then
    begin
      Result:=VarName;
    end;

  end else
  begin
    Result:=VarName;
  end;
end;

function TPosReport.GetPrintData:TStringList;
var
  I,J,K:integer;
  RetS:String;
  BodyRow:Array of Integer;  //保存表體行數(shù)
  OutMemo:TStringList;
  Procedure GetBodyRow;
  Var
    I:integer;
    ArrayLen:integer;
  begin
    ArrayLen:=0;
    For I:=0 to FReportLines.Count-1 do
    begin
      if Pos('[#.',FReportLines[I])>0 then
      begin
         inc(ArrayLen);
         setLength(BodyRow,ArrayLen);
         BodyRow[ArrayLen-1]:=I;
      end;
    end;
  end;
begin
  OutMemo:=TStringList.Create;
  if not assigned(OutMemo) then exit;
  OutMemo.Clear;
  //OutMemo.Font.Assign(FFont);
  FilterVar(FReportLines.Text,RetS);      //表頭及系統(tǒng)變量
  FReportLines.Text:=RetS;
  K:=0;
  while K<FReportLines.Count do
  begin
    if Pos('[#.',FReportLines[K])<=0 then
    begin
      OutMemo.Add(FReportLines[K]);
      inc(k);
    end else
    begin
      //如果是表格
      GetBodyRow;
      if (FBodyType=btGrid) and (Assigned(FGrid)) then
      begin
        For I:=FGrid.FixedRows to FGrid.RowCount-FGrid.FixedRows do
        begin
          For J:=BodyRow[low(BodyRow)] to BodyRow[High(BodyRow)] do
          begin
            FilterFields(FReportLines[J],I,RetS);
            if trim(RetS)<>'' then
              OutMemo.Add(RetS);
          end;
        end;
      end;
      //如果是記錄集
      if (FBodyType=btDataSet) and (Assigned(FDataSet)) and (FDataSet.Active) then
      begin
        For I:=0 to FDataSet.RecordCount-1 do
        begin
          For J:=BodyRow[low(BodyRow)] to BodyRow[High(BodyRow)] do
          begin
            FilterFields(FReportLines[J],I,RetS);
            OutMemo.Add(RetS);
            if trim(RetS)<>'' then
              FDataSet.Next;
          end;
        end;
      end;
      K:=BodyRow[high(BodyRow)]+1;
    end;
  end;
  Result:=TStringList.Create;
  Result.Assign(OutMemo); 
  OutMemo.Free;
end;

Function TPosReport.PrintReport(OutMemo:TMemo):Boolean;
begin
  OutMemo.Font.Assign(Font);
  OutMemo.Lines.Assign(TStrings(GetPrintData));
  Result:=true;
end;

procedure TPosReport.InitSysValues;
begin
  FSysVars.SetValueByCaption('日期',FormatDateTime('YYYY-MM-DD',Now));
  FSysVars.SetValueByCaption('長(zhǎng)日期',FormatDateTime('YYYY-MM-DD HH:MM:SS',Now));
  FSysVars.SetValueByCaption('時(shí)間',FormatDateTime('HH:MM:SS',now));
  FSysVars.SetValueByCaption('頁碼',intToStr(FPageNo));
  FSysVars.SetValueByCaption('頁數(shù)',intToStr(FPageCount));
  FSysVars.SetValueByCaption('行數(shù)',intToStr(FDetailRowCount));
  FSysVars.SetValueByCaption('開發(fā)商','貴陽欣安博科技');
end;

procedure TPosReport.LoadFromFile(FileName: String);
var
  FileFlag:Word;
  PosFile:TFileStream;
  I:integer;
  RowCount:Integer;
  tmpLine:String;
  tmpPChar:Array[0..3000] of Char;
  J,charCount:integer;
begin
  if not fileExists(fileName) then exit;
  PosFile:=TFileStream.Create(FileName,fmOpenRead);
  try
    with PosFile do
    begin
      Read(FileFlag,SizeOf(FileFlag));
      if FileFlag<>FileVersion then
      begin
        Raise Exception.Create('打開的文件不是有效的小票文件或已不支持該版本!');
        Exit;
      end;

      Read(FDriveMode,SizeOf(FDriveMode));
      Read(CharCount,sizeOf(CharCount));
      for J:=0 to CharCount-1 do
        Read(tmpPChar[J],1);
      tmpPChar[CharCount]:=#0;
      FComName:=strPas(tmpPChar);

      Read(FComByte,SizeOf(FComByte));

      Read(charCount,sizeOf(CharCount));
      For J:=0 to CharCount-1 do
        Read(tmpPChar[J],1);
      tmpPChar[CharCount]:=#0;
      FOpenBoxCode:=strPas(tmpPChar);

      Read(FAutoOpenBox,SizeOf(FAutoOpenBox));
      Read(FFootSpaceRow,SizeOf(FFootSpaceRow));
      Read(FPageWidth,SizeOf(FPageWidth));
      Read(FTitleRowCount,SizeOf(FTitleRowCount));
      Read(FQuantityDiciaLength,SizeOf(FQuantityDiciaLength));
      Read(FMoneyDiciaLength,SizeOf(FMoneyDiciaLength));
      Read(RowCount,SizeOf(RowCount));
      FReportLines.Clear;
      For I:=0 to RowCount-1 do
      begin
        Read(CharCount,sizeOf(CharCount));
        for J:=0 to CharCount-1 do
          Read(tmpPChar[J],1);
        tmpPChar[CharCount]:=#0;
        FReportLines.Add(strPas(tmpPChar));
      end;
      Read(FFontSize,sizeOf(FFontSize));
    end;
    FOpenFlag:=True;
    FFilePathName:=FileName;
    FFont.Size:=FFontSize;
  Finally
    PosFile.Free;
  end;
end;


procedure TPosReport.SaveToFile(FileName: String);
var
  FileFlag:Word;
  PosFile:TFileStream;
  I:integer;
  RowCount:integer;
  tmpPChar:Array[0..3000] of Char;
  J,charCount:integer;
begin
  FFontSize:=FFont.Size;
  PosFile:=TFileStream.Create(FileName,fmOpenWrite Or fmCreate);
  try
    with PosFile do
    begin
      FileFlag:=FileVersion;
      Write(FileFlag,SizeOf(FileFlag));   //保存文件版本類型

      
      {保存小票參數(shù)}
      Write(FDriveMode,SizeOf(FDriveMode));

      CharCount:=length(FComName);
      strPCopy(tmpPchar,FComName);
      write(CharCount,sizeOf(charCount));
      for J:=0 to CharCount-1 do
        Write(tmpPchar[J],1);

      Write(FComByte,SizeOf(FComByte));

      CharCount:=length(FOpenBoxCode);
      write(CharCount,sizeOf(CharCount));
      strPCopy(tmpPChar,FOpenBoxCode);
      For J:=0 to CharCount-1 do
        Write(TmpPChar[J],1);

      Write(FAutoOpenBox,SizeOf(FAutoOpenBox));
      Write(FFootSpaceRow,SizeOf(FFootSpaceRow));
      Write(FPageWidth,SizeOf(FPageWidth));
      Write(FTitleRowCount,SizeOf(FTitleRowCount));
      Write(FQuantityDiciaLength,SizeOf(FQuantityDiciaLength));
      Write(FMoneyDiciaLength,SizeOf(FMoneyDiciaLength));
      RowCount:=FReportLines.Count;
      Write(RowCount,SizeOf(RowCount));
      For I:=0 to RowCount-1 do
      begin
        CharCount:=length(FReportLines[i]);
        write(charCount,SizeOf(CharCount));
        strPCopy(tmpPChar,FReportLines[I]);
        For J:=0 to CharCount-1 do
          Write(tmpPChar[J],1);
      end;
      Write(FFontSize,sizeOf(FFontSize));
    end;
    FOpenFlag:=True;
    FFilePathName:=FileName;
  Finally
    PosFile.Free;
  end;
end;

procedure TPosReport.SetBodyFields(AValue: TDataSet);
begin
  FBodyType:=btDataSet;
  FDataSet:=AValue;
end;

procedure TPosReport.SetBodyFields(AValue: TYTXStringGridEh);
begin
  FBodyType:=btGrid;
  FGrid:=AValue;
end;

procedure TPosReport.SetTitleVars(TitleVars: TReportVars);
begin
  if FTitleVars<>TitleVars then
    FTitleVars:=TitleVars;
end;

procedure TPosReport.ShowVarList(VarType: TDataType;
  out ListFields: TListBox);
var
  I:integer;
  ListVars:TReportVars;
begin
  ListFields.Clear;
  if VarType<>DtBodyFields then  //系統(tǒng)及表頭字段處理
  begin
    if VarType=DtSysFields then
      ListVars:=FSysVars;
    if VarType=DtTitleFields then
      ListVars:=FTitleVars;
    ListFields.Clear;
    if Assigned(ListVars) then
    begin
      for I:=0 to ListVars.ItemCount-1 do
      begin
        ListFields.Items.AddObject(ListVars.Items[i].Caption,TObject(ListVars.Items[i]));
      end;
    end;
  end else     //表體處理
  begin
    if (FBodyType=btGrid) and assigned(FGrid) then
    begin
      For I:=1 to FGrid.ColCount-1 do
      begin
        if FGrid.Columns[I].Visible then
        begin
          ListFields.Items.AddObject(FGrid.Columns[i].Title.Caption,TObject(FGrid.Columns[I]));
        end;
      end;
    end;
    if (FBodyType=btDataSet) and assigned(FDataSet) then
    begin
      if TDataSet(FDataSet).Fields[i].Visible then
      begin
        ListFields.Items.AddObject(TDataSet(FDataSet).Fields[I].DisplayName,TObject(TDataSet(FDataSet).Fields[I]));
      end;
    end;
  end;
end;



function TPosReport.GetFont: TFont;
begin
  Result:=FFont;  
end;

procedure TPosReport.SetFont(Value: TFont);
begin
  if FFont<>Value then
    FFont.Assign(Value); 
end;

function TPosReport.UpcaseCurrency(Value: extended): string;
begin
  Result:=CurrencyToStr(Value);
end;

{不用Windows驅(qū)動(dòng)打印}
function TPosReport.PrintNoDrive(Source: TStringList): Boolean;
var
  PrtFile:TextFile;
  I:integer;
  Pstr:string;
  PHandle:THandle;
  FileHandle:integer;
begin
  try
    //查檢端口是否可用
    PHandle:=Createfile(PChar(ComName),0,0,nil,OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
    if PHandle=INVALID_HANDLE_VALUE then
    begin
        ShowMessage(ComName + ' 端口不可用,打印將被取消!');
        exit;
    end;
    //檢查是否有打印機(jī)
    {filehandle:=fileopen(ComName,fmopenwrite);
    fileclose(filehandle);
    if filehandle>=0  then
    begin
      showmessage('在端口[' + ComName + ']上沒有安裝打印機(jī),打印將被取消!');
      exit;
    end;}

    Assignfile(PrtFile,ComName);
    Rewrite(PrtFile);
    for I:=0 to Source.Count-1 do
    begin
      Pstr:=Source.Strings[I] + char(10); //打印的數(shù)量源
      write(PrtFile,Pstr);
    end;
    if AutoOpenBox then
    begin
      Rewrite(PrtFile);
      Write(PrtFile,OpenBoxCode);       //如果啟用打印后開錢箱,則自動(dòng)打開錢箱
    end;
    write(PrtFile,'眾智金軟 13668510783');
  except
    On E:Exception do
    begin
      showMessage(E.Message);
      Result:=false;
    end;
  end;
  CloseFile(PrtFile);
end;

function TPosReport.PrintWithDrive(Source: TStringList): boolean;
var
  txtWidth:integer;
  txtHeight:integer;
  Row:integer;
  RowHeight:Integer;
  PosY:integer;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国精产品一区一区三区mba视频 | 久久嫩草精品久久久久| 欧美影院一区二区三区| 一本色道**综合亚洲精品蜜桃冫 | 欧美一区二区三区四区高清 | 亚洲欧美成人一区二区三区| 亚洲国产成人在线| 国产精品福利影院| 1024亚洲合集| 91污在线观看| av中文字幕不卡| 亚洲免费观看高清完整版在线观看熊| 亚洲国产精品t66y| 亚洲欧美日韩在线播放| 亚洲精品日韩综合观看成人91| 亚洲色图清纯唯美| 一区二区三区中文字幕| 亚洲一区在线播放| 日日骚欧美日韩| 久久精品国产亚洲a| 久久精品噜噜噜成人88aⅴ| 激情五月激情综合网| 国产麻豆精品在线| 99亚偷拍自图区亚洲| 91久久精品国产91性色tv| 欧美自拍偷拍午夜视频| 欧美一卡2卡3卡4卡| 精品久久久久久久久久久久包黑料| 久久综合九色综合97婷婷女人 | 精品久久久久久最新网址| 久久这里只有精品首页| 国产精品毛片久久久久久| 亚洲色图丝袜美腿| 日本成人在线网站| 国产精品77777| 色婷婷综合五月| 日韩午夜av一区| 国产色产综合色产在线视频| ...中文天堂在线一区| 亚洲成人一区在线| 91精品国产综合久久久蜜臀图片| 91国内精品野花午夜精品| 久久成人免费日本黄色| 国产91对白在线观看九色| 一本大道久久a久久综合婷婷 | 国产午夜精品一区二区| 亚洲欧美一区二区三区久本道91 | 波多野结衣在线一区| 色婷婷av一区二区三区gif| 91精品欧美久久久久久动漫 | 丝袜亚洲另类欧美| 国产精品综合网| 欧美三级视频在线观看| 国产清纯美女被跳蛋高潮一区二区久久w | 亚洲精品国产精华液| 免费的成人av| 94-欧美-setu| 日韩精品中文字幕一区| 亚洲老妇xxxxxx| 狠狠色丁香婷婷综合| 色乱码一区二区三区88| 久久综合久久99| 无码av免费一区二区三区试看| 国产在线视频一区二区| 欧美视频一区二区三区四区 | 日本欧洲一区二区| 99久久精品一区| 久久综合九色综合97_久久久| 亚洲资源中文字幕| 丁香网亚洲国际| 欧美不卡视频一区| 午夜精品久久久久久不卡8050| 成人国产精品免费观看| 日韩精品自拍偷拍| 亚洲国产一区二区在线播放| 成人福利电影精品一区二区在线观看| 欧美一区二区视频免费观看| 亚洲一区二区在线免费看| 成人性生交大片| 久久久国产精品麻豆| 蜜臀av性久久久久蜜臀aⅴ| 欧美无乱码久久久免费午夜一区| 国产精品视频线看| 国产乱码精品一区二区三区av| 欧美最猛黑人xxxxx猛交| 夜夜揉揉日日人人青青一国产精品| 成人v精品蜜桃久久一区| 精品裸体舞一区二区三区| 精品亚洲porn| 日韩亚洲欧美成人一区| 亚洲国产视频在线| 欧美精品xxxxbbbb| 日韩精品福利网| 欧美xxxxx牲另类人与| 精品一区二区三区在线播放| 2023国产精品| 国产白丝精品91爽爽久久| 中文字幕的久久| 久久久久国产精品厨房| 国产a视频精品免费观看| 中文字幕永久在线不卡| 99久久精品国产一区二区三区| 日本v片在线高清不卡在线观看| 26uuu精品一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲专区一二三| 亚洲一区二区三区在线| 麻豆中文一区二区| 自拍av一区二区三区| 99久久99久久精品免费看蜜桃| 国产精品福利一区| 91丝袜美女网| 亚洲国产乱码最新视频| 欧美性欧美巨大黑白大战| 亚洲1区2区3区视频| 欧美日韩精品一区二区天天拍小说 | 精品国产一二三区| 激情综合色综合久久综合| 精品成人私密视频| 国产+成+人+亚洲欧洲自线| 国产精品欧美一级免费| 91同城在线观看| 午夜精品久久久久久久| 日韩欧美亚洲国产另类| 国产一区二区三区| 中文欧美字幕免费| 在线免费一区三区| 免费在线看成人av| 久久精品视频网| 91精品办公室少妇高潮对白| 天天色图综合网| 亚洲精品在线观看网站| 成人综合日日夜夜| 一区二区三区日本| 欧美一区午夜视频在线观看| 国产精品一区二区视频| 亚洲日本丝袜连裤袜办公室| 欧美日韩你懂得| 国产乱国产乱300精品| 亚洲婷婷综合色高清在线| 欧美日韩国产综合视频在线观看 | 精品制服美女丁香| 一区在线中文字幕| 欧美日韩国产小视频| 激情综合色丁香一区二区| 国产精品不卡在线观看| 欧美日韩一二三区| 国产成人高清在线| 亚洲国产精品久久久男人的天堂| 日韩一区二区麻豆国产| 高清不卡一区二区| 婷婷中文字幕综合| 中日韩av电影| 在线观看91av| 亚洲精品一区二区三区四区高清| 国产精品久久久久毛片软件| 综合色天天鬼久久鬼色| 欧美剧情片在线观看| 国产精品一级在线| 亚洲福利一区二区| 国产精品女人毛片| 91精品久久久久久久91蜜桃| 欧美高清视频一二三区| 国产精品综合二区| 日日摸夜夜添夜夜添国产精品| 中文av一区二区| 日韩精品一区二区在线| 欧洲日韩一区二区三区| 国产美女久久久久| 婷婷成人激情在线网| 国产精品乱人伦| 日韩精品一区二区三区三区免费| 91蝌蚪porny| 激情五月婷婷综合网| 性感美女极品91精品| 日韩码欧中文字| 久久精品视频在线看| 日韩一区二区三区免费观看| 在线观看视频一区二区| 国产69精品久久99不卡| 精品亚洲成a人| 日韩制服丝袜av| 亚洲综合一区二区三区| 久久精品一区二区三区四区| 欧美精品久久天天躁| 日本韩国一区二区三区视频| 成人综合婷婷国产精品久久| 极品少妇xxxx精品少妇偷拍| 亚洲mv在线观看| 亚洲美女视频在线| 国产精品久久一卡二卡| 久久久午夜电影| 精品盗摄一区二区三区| 这里只有精品免费| 欧美日韩免费一区二区三区视频 | 欧美成人国产一区二区| 337p亚洲精品色噜噜噜| 欧美日韩中文另类| 欧美性做爰猛烈叫床潮| 一本一本大道香蕉久在线精品 |