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

📄 frmmain.~pas

📁 发票管理系统其中包括: 1.租凭业发票 2.建筑业发票 3.固定资产发票 4.服务行业发票 5.无形资产发票
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
  end;
  if UpperCase(aSelectMenu) = UpperCase('TaxWxzc') then
  begin
    CurrentFP := 'FP05';
    SpeedButton4.Click;
  end;
  if UpperCase(aSelectMenu) = UpperCase('UserManager') then
  begin
    SpeedButton10.Click;
  end;
  if UpperCase(aSelectMenu) = UpperCase('GenManager') then
  begin
    SpeedButton1.Click;
  end;
  if UpperCase(aSelectMenu) = UpperCase('CompactDB') then
  begin
    Backup.AdvTabSheet3.Show;
    Backup.ShowModal;
  end;
  if UpperCase(aSelectMenu) = UpperCase('DataBackup') then
  begin
    Backup.AdvTabSheet1.Show;
    Backup.ShowModal;
  end;
  if UpperCase(aSelectMenu) = UpperCase('DataRestore') then
  begin
    Backup.AdvTabSheet2.Show;
    Backup.ShowModal;
  end;
end;

procedure TMain.FormShow(Sender: TObject);
begin
  ShowInitialization;
end;

procedure TMain.InVoiceTableClickCell(Sender: TObject; ARow,
  ACol: Integer);
begin
//  Main.Caption := ' ACol:' + Inttostr(ACol) + ' ARow:' + Inttostr(ARow);
end;

procedure TMain.SpeedButton11Click(Sender: TObject);
begin
  Close;
end;

procedure TMain.InVoiceTableCanEditCell(Sender: TObject; ARow,
  ACol: Integer; var CanEdit: Boolean);
begin
  if TaxPubReadOnly then
    CanEdit := False;
  if CurrentFP = 'FP01' then
  begin
    if (ARow <= 2) and (ACol <= 12) then
    begin
      CanEdit := False;
    end;
    if (ARow = 6) then
      CanEdit := False;
    if (ARow = 7) and (ACol = 0) then
      CanEdit := False;
    if (ARow = 9) and ((ACol = 0) or (ACol = 4) or (ACol = 8)) then
      CanEdit := False;
    if (ARow = 10) then
      CanEdit := False;
  end;
  if CurrentFP = 'FP02' then
  begin
    if (ARow = 0) and ((ACol = 0) or (ACol = 4) or (ACol = 8)) then
      CanEdit := False;
    if (ARow = 1) then
      CanEdit := False;
    if (ARow = 7) and ((ACol = 0) or (ACol = 8)) then
      CanEdit := False;
    if (ARow = 8) and ((ACol = 0) or (ACol = 3) or (ACol = 8)) then
      CanEdit := False;
    if (ARow = 9) then
      CanEdit := False;
  end;
  if CurrentFP = 'FP03' then
  begin
    if (ARow = 0) and ((ACol = 0) or (ACol = 7)) then
      CanEdit := False;
    if (ARow = 1) or ((ACol = 7) and (ARow = 2)) then
      CanEdit := False;
    if (ARow = 6) then
      CanEdit := False;
    if (ARow = 7) and ((ACol = 3) or (ACol = 0) or (ACol = 8)) then
      CanEdit := False;
    if (ARow = 8) then
      CanEdit := False;
  end;
  if CurrentFP='FP04' then
  begin
    if (ARow=0) or (ARow=5) or (ARow=9) then
      CanEdit:=False;
    if (ARow=1) and (ACol=9) then
      CanEdit:=False;
    if (ARow=6) and (ACol=0)  then
      CanEdit:=False;
    if (ARow=8) and ((ACol=0) or (ACol=3) or (ACol=8)) then
      CanEdit:=False;
  end;
  if CurrentFP='FP05' then
  begin
    if (ACol=0) and (ARow=0) then
      CanEdit:=False;
    if (ACol=0) and (ARow=2) then
      CanEdit:=False;
    if (ARow=4) or ((ACol=9) and (ARow=5)) then
      CanEdit:=False;
    if (ARow=9) or ((ARow=10) and (ACol=0))  then
      CanEdit:=False;
    if (ARow=11) and ((ACol=0) or (ACol=3) or (ACol=8)) then
      CanEdit:=False;
  end;
end;

procedure TMain.InVoiceTableDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  DrawMoney, DrawOne: string;
  i, CurrentIndex, MoneyDiv: Integer;
  MoneyWidth, MoneyLeft, MoneyTop, aLineTop: Integer;
  DrawMoneyCp: string;
begin
  PubRect := InVoiceTable.ClientRect; ;
  PubCanvas := InVoiceTable.Canvas;
  if CurrentFP = 'FP01' then
  begin
    if (ARow = 1) and (ACol = 9) then
    begin
      with InVoiceTable do
      begin
        MoneyDiv := Length(MoneyCaStr) div 2;
        for i := 1 to MoneyDiv do
        begin
          CurrentIndex := (MoneyDiv - i + 1);
          DrawMoneyCp := Copy(MoneyCaStr, CurrentIndex * 2 - 1, 2);
          MoneyWidth := Canvas.TextWidth('4') + 8;
          if I = 3 then
            Canvas.Pen.Color := 3637448
          else
            Canvas.Pen.Color := 8684164;
          aLineTop := Rect.Right - (MoneyWidth * i) + 12;
          MoneyLeft := aLineTop - (MoneyWidth);
          MoneyTop := Rect.Top + (Rect.Bottom - Rect.Top - MoneyWidth) div 2;
          Canvas.TextOut(MoneyLeft, MoneyTop, DrawMoneyCp);
          if i <> 1 then
          begin
            Canvas.MoveTo(aLineTop - 2, Rect.Top);
            Canvas.LineTo(aLineTop - 2, Rect.Bottom);
          end;
        end;
      end;
    end;
    if (ACol >= 9) and ((ARow >= 3) and (ARow <= 7)) then
    begin
      with InVoiceTable do
      begin
        DrawMoney := InVoiceTable.Cells[ACol, ARow];
        if DrawMoney <> '' then
          DrawMoney := FormatFloat('0.00', StrToFloat(DrawMoney));
        DrawMoney := StringReplace(DrawMoney, '.', '', []);
        Canvas.FillRect(Rect);
        for i := 1 to 12 do
        begin
          case i of
            3:
              Canvas.Pen.Color := clGreen;
            1, 5, 9:
              Canvas.Pen.Color := clGreen;
          else
            Canvas.Pen.Color := 8684164;
          end;
          MoneyWidth := Canvas.TextWidth('4') + 8;
          if i > Length(DrawMoney) then
            DrawOne := ''
          else
            DrawOne := Copy(DrawMoney, Length(DrawMoney) - i + 1, 1);
          if I = 3 then
            Canvas.Pen.Color := 3637448
          else
            Canvas.Pen.Color := 8684164;
          aLineTop := Rect.Right - MoneyWidth * (i - 1);
          MoneyLeft := aLineTop - MoneyWidth + 6;
          MoneyTop := Rect.Top + (Rect.Bottom - Rect.Top - MoneyWidth) div 2;
          Canvas.TextOut(MoneyLeft - 5, MoneyTop, DrawOne);
          if i <> 1 then
          begin
            Canvas.MoveTo(aLineTop - 4, Rect.Top);
            Canvas.LineTo(aLineTop - 4, Rect.Bottom);
          end;
        end;
      end;
    end;
  end;
  if CurrentFP = 'FP02' then
  begin
    if (ARow = 2) and (ACol = 8) then
    begin
      with InVoiceTable do
      begin
        MoneyDiv := Length(MoneyCaStr) div 2;
        for i := 1 to MoneyDiv do
        begin
          CurrentIndex := (MoneyDiv - i + 1);
          DrawMoneyCp := Copy(MoneyCaStr, CurrentIndex * 2 - 1, 2);
          MoneyWidth := Canvas.TextWidth('4') + 8;
          if I = 3 then
            Canvas.Pen.Color := 3637448
          else
            Canvas.Pen.Color := 8684164;
          aLineTop := Rect.Right - (MoneyWidth * i) + 12;
          MoneyLeft := aLineTop - (MoneyWidth);
          MoneyTop := Rect.Top + (Rect.Bottom - Rect.Top - MoneyWidth) div 2;
          Canvas.TextOut(MoneyLeft, MoneyTop, DrawMoneyCp);
          if i <> 1 then
          begin
            Canvas.MoveTo(aLineTop - 2, Rect.Top);
            Canvas.LineTo(aLineTop - 2, Rect.Bottom);
          end;
        end;
      end;
    end;
    if (ACol >= 8) and ((ARow >= 3) and (ARow <= 7)) then
    begin
      with InVoiceTable do
      begin
        DrawMoney := InVoiceTable.Cells[ACol, ARow];
        if DrawMoney <> '' then
          DrawMoney := FormatFloat('0.00', StrToFloat(DrawMoney));
        DrawMoney := StringReplace(DrawMoney, '.', '', []);
        Canvas.FillRect(Rect);
        for i := 1 to 12 do
        begin
          case i of
            3:
              Canvas.Pen.Color := clGreen;
            1, 5, 9:
              Canvas.Pen.Color := clGreen;
          else
            Canvas.Pen.Color := 8684164;
          end;
          MoneyWidth := Canvas.TextWidth('4') + 8;
          if i > Length(DrawMoney) then
            DrawOne := ''
          else
            DrawOne := Copy(DrawMoney, Length(DrawMoney) - i + 1, 1);
          if I = 3 then
            Canvas.Pen.Color := 3637448
          else
            Canvas.Pen.Color := 8684164;
          aLineTop := Rect.Right - MoneyWidth * (i - 1);
          MoneyLeft := aLineTop - MoneyWidth + 6;
          MoneyTop := Rect.Top + (Rect.Bottom - Rect.Top - MoneyWidth) div 2;
          Canvas.TextOut(MoneyLeft - 5, MoneyTop, DrawOne);
          if i <> 1 then
          begin
            Canvas.MoveTo(aLineTop - 4, Rect.Top);
            Canvas.LineTo(aLineTop - 4, Rect.Bottom);
          end;
        end;
      end;
    end;
  end;
  if CurrentFP = 'FP03' then
  begin
    if (ARow = 2) and (ACol = 7) then
    begin
      with InVoiceTable do
      begin
        MoneyDiv := Length(MoneyCaStr) div 2;
        for i := 1 to MoneyDiv do
        begin
          CurrentIndex := (MoneyDiv - i + 1);
          DrawMoneyCp := Copy(MoneyCaStr, CurrentIndex * 2 - 1, 2);
          MoneyWidth := Canvas.TextWidth('4') + 8;
          if I = 3 then
            Canvas.Pen.Color := 3637448
          else
            Canvas.Pen.Color := 8684164;
          aLineTop := Rect.Right - (MoneyWidth * i) + 12;
          MoneyLeft := aLineTop - (MoneyWidth);
          MoneyTop := Rect.Top + (Rect.Bottom - Rect.Top - MoneyWidth) div 2;
          Canvas.TextOut(MoneyLeft, MoneyTop, DrawMoneyCp);
          if i <> 1 then
          begin
            Canvas.MoveTo(aLineTop - 2, Rect.Top);
            Canvas.LineTo(aLineTop - 2, Rect.Bottom);
          end;
        end;
      end;
    end;
    if (ACol >= 7) and (ACol < 11) and ((ARow >= 3) and (ARow <= 6)) then
    begin
      with InVoiceTable do
      begin
        DrawMoney := InVoiceTable.Cells[ACol, ARow];
        if DrawMoney <> '' then
          DrawMoney := FormatFloat('0.00', StrToFloat(DrawMoney));
        DrawMoney := StringReplace(DrawMoney, '.', '', []);
        Canvas.FillRect(Rect);
        for i := 1 to 12 do
        begin
          case i of
            3:
              Canvas.Pen.Color := clGreen;
            1, 5, 9:
              Canvas.Pen.Color := clGreen;
          else
            Canvas.Pen.Color := 8684164;
          end;
          MoneyWidth := Canvas.TextWidth('4') + 8;
          if i > Length(DrawMoney) then
            DrawOne := ''
          else
            DrawOne := Copy(DrawMoney, Length(DrawMoney) - i + 1, 1);
          if I = 3 then
            Canvas.Pen.Color := 3637448
          else
            Canvas.Pen.Color := 8684164;
          aLineTop := Rect.Right - MoneyWidth * (i - 1);
          MoneyLeft := aLineTop - MoneyWidth + 6;
          MoneyTop := Rect.Top + (Rect.Bottom - Rect.Top - MoneyWidth) div 2;
          Canvas.TextOut(MoneyLeft - 5, MoneyTop, DrawOne);
          if i <> 1 then
          begin
            Canvas.MoveTo(aLineTop - 4, Rect.Top);
            Canvas.LineTo(aLineTop - 4, Rect.Bottom);
          end;
        end;
      end;
    end;
  end;
 if CurrentFP = 'FP04' then
  begin
    if (ARow = 1) and (ACol = 9) then
    begin
      with InVoiceTable do
      begin
        MoneyDiv := Length(MoneyCaStr) div 2;
        for i := 1 to MoneyDiv do
        begin
          CurrentIndex := (MoneyDiv - i + 1);
          DrawMoneyCp := Copy(MoneyCaStr, CurrentIndex * 2 - 1, 2);
          MoneyWidth := Canvas.TextWidth('4') + 8;
          if I = 3 then
            Canvas.Pen.Color := 3637448
          else
            Canvas.Pen.Color := 8684164;
          aLineTop := Rect.Right - (MoneyWidth * i) + 12;
          MoneyLeft := aLineTop - (MoneyWidth);
          MoneyTop := Rect.Top + (Rect.Bottom - Rect.Top - MoneyWidth) div 2;
          Canvas.TextOut(MoneyLeft, MoneyTop, DrawMoneyCp);
          if i <> 1 then
          begin
            Canvas.MoveTo(aLineTop - 2, Rect.Top);
            Canvas.LineTo(aLineTop - 2, Rect.Bottom);
          end;
        end;
      end;
    end;
    if (ACol >= 9) and (ACol <= 12) and ((ARow >= 2) and (ARow <= 5)) then
    begin
      with InVoiceTable do
      begin
        DrawMoney := InVoiceTable.Cells[ACol, ARow];
        if DrawMoney <> '' then
          DrawMoney := FormatFloat('0.00', StrToFloat(DrawMoney));
        DrawMoney := StringReplace(DrawMoney, '.', '', []);
        Canvas.FillRect(Rect);
        for i := 1 to 12 do
        begin
          case i of
            3:
              Canvas.Pen.Color := clGreen;
            1, 5, 9:
              Canvas.Pen.Color := clGreen;
          else
            Canvas.Pen.Color := 8684164;
          end;
          MoneyWidth := Canvas.TextWidth('4') + 8;
          if i > Length(DrawMoney) then
            DrawOne := ''
          else
            DrawOne := Copy(DrawMoney, Length(DrawMoney) - i + 1, 1);
          if I = 3 then
            Canvas.Pen.Color := 3637448
          else
            Canvas.Pen.Color := 8684164;
          aLineTop := Rect.Right - MoneyWidth * (i - 1);
          MoneyLeft := aLineTop - MoneyWidth + 6;

⌨️ 快捷键说明

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