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

📄 sharebill.pas

📁 进销存·完整的·有数据库的·非常完整·只得参考
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit ShareBill;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  BaseForm, Db, ADODB, ImgList, StdCtrls,
  ExtCtrls, dxCntner, dxTL, dxDBCtrl, dxDBGrid, Buttons, dxEdLib,
  dxDBELib, dxEditor, dxExEdtr, DBData, dxGrClms, Menus, dxBar, KsControls,
  KsButtons, KsSkinButtons, KsHooks, KsForms, KsSkinForms, KsLabels,
  KsSkinLabels, KsPanels, KsSkinPanels;

type
  TfrmShareBill = class(TfrmBaseForm)
    bbOk: TSeSkinButton;
    bbExit: TSeSkinButton;
    pnlTop: TSeSkinPanel;
    lblCaption: TSeSkinLabel;
    pnlBillTop: TSeSkinPanel;
    imgTool: TImageList;
    dsMaster: TDataSource;
    dsList: TDataSource;
    lblBillDate: TSeSkinLabel;
    edtBillDate: TdxDBDateEdit;
    lblUserCode: TSeSkinLabel;
    edtUserCode: TdxDBEdit;
    LBL1: TSeSkinLabel;
    EDITB1: TdxButtonEdit;
    LBL2: TSeSkinLabel;
    EDITB2: TdxButtonEdit;
    LBL3: TSeSkinLabel;
    EDITB3: TdxButtonEdit;
    LBL4: TSeSkinLabel;
    EDITB4: TdxButtonEdit;
    EDIT1: TdxDBEdit;
    EDIT2: TdxDBEdit;
    EDIT3: TdxDBEdit;
    EDIT4: TdxDBEdit;
    LBL5: TSeSkinLabel;
    LBL6: TSeSkinLabel;
    EDITB5: TdxButtonEdit;
    EDITB6: TdxButtonEdit;
    EDIT5: TdxDBEdit;
    EDIT6: TdxDBEdit;
    ADOSetList: TADODataSet;
    ADOSetMaster: TADODataSet;
    gridMain: TdxDBGrid;
    pmPrint: TPopupMenu;
    mnPrint: TMenuItem;
    mnPrintView: TMenuItem;
    mnPrintCustom: TMenuItem;
    mnPrintInit: TMenuItem;
    dxBarManager1: TdxBarManager;
    bbPrev: TdxBarButton;
    bbNext: TdxBarButton;
    bbIns: TdxBarButton;
    bbEdit: TdxBarButton;
    bbDel: TdxBarButton;
    bbSetup: TdxBarButton;
    bbPrint: TdxBarButton;
    pbbPrint: TdxBarButton;
    pbbPrintView: TdxBarButton;
    pbbPrintCustom: TdxBarButton;
    pbbPrintInit: TdxBarButton;
    procedure bbExitClick(Sender: TObject);
    procedure EDITB1ButtonClick(Sender: TObject; AbsoluteIndex: Integer);
    procedure EDITB2ButtonClick(Sender: TObject; AbsoluteIndex: Integer);
    procedure EDITB3ButtonClick(Sender: TObject; AbsoluteIndex: Integer);
    procedure EDITB4ButtonClick(Sender: TObject; AbsoluteIndex: Integer);
    procedure EDITB5ButtonClick(Sender: TObject; AbsoluteIndex: Integer);
    procedure EDITB6ButtonClick(Sender: TObject; AbsoluteIndex: Integer);
    procedure ADOSetListAfterInsert(DataSet: TDataSet);
    procedure bbOkClick(Sender: TObject);
    procedure bbPrintClick(Sender: TObject);
    procedure gridMainCustomDrawCell(Sender: TObject; ACanvas: TCanvas;
      ARect: TRect; ANode: TdxTreeListNode; AColumn: TdxTreeListColumn;
      ASelected, AFocused, ANewItemRow: Boolean; var AText: string;
      var AColor: TColor; AFont: TFont; var AAlignment: TAlignment;
      var ADone: Boolean);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure edtBillDateKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
    {编辑框类型eText,eDate,eButton,eCombo}
    procedure LoadEdit;
    procedure LoadGrid;
    procedure SetEditType(lNo: Integer; sType: string);
    procedure EditShow;
    procedure LoadData;
    function ReturnSQL(lType, lBillID: Integer): string;
    procedure ToolShow;
    procedure FieldToEdit;
    procedure SaveData;
    procedure GridButtonClick(Sender: TObject; AbsoluteIndex: Integer);
  public
    sMasterSql, sListSql, sReturn: string;
    lMasterID, lPubMode: Integer;
    sEditField, sEditCaption, sEditType, sButton: string;
    sGridField, sGridCaption, sGridWidth: string;
    lButton1, lButton2, lButton3, lButton4, lButton5, lButton6: Integer;
    lPanelHeight: Integer;
    procedure MainShow;
    { Public declarations }

  end;
const
  PANEL_HEIGHT_1 = 80;
  PANEL_HEIGHT_2 = 105;
  PANEL_HEIGHT_3 = 135;
  PANEL_HEIGHT_4 = 165;
var
  frmShareBill: TfrmShareBill;

implementation

uses SysPublic;
{$R *.DFM}

procedure TfrmShareBill.MainShow;
begin
  LoadEdit;
  LoadGrid;
  EditShow;
  LoadData;
  ToolShow;
  ShowModal;
end;

procedure TfrmShareBill.LoadEdit;
var
  i: Integer;
  s1, s2: string;
begin
  lButton1 := 0;
  lButton2 := 0;
  lButton3 := 0;
  lButton4 := 0;
  lButton5 := 0;
  lButton6 := 0;

  s1 := sEditCaption + ',';
  i := 0;
  while pos(',', s1) <> 0 do
  begin
    s2 := copy(s1, 0, pos(',', s1) - 1);
    s1 := copy(s1, pos(',', s1) + 1, Length(s1));
    if s2 <> '' then
    begin
      inc(i);
      if i = 1 then
      begin
        LBL1.Caption := s2 + ':';
        LBL1.Visible := true;
      end
      else if i = 2 then
      begin
        LBL2.Caption := s2 + ':';
        LBL2.Visible := true;
      end
      else if i = 3 then
      begin
        LBL3.Caption := s2 + ':';
        LBL3.Visible := true;
      end
      else if i = 4 then
      begin
        LBL4.Caption := s2 + ':';
        LBL4.Visible := true;
      end
      else if i = 5 then
      begin
        LBL5.Caption := s2 + ':';
        LBL5.Visible := true;
      end
      else if i = 6 then
      begin
        LBL6.Caption := s2 + ':';
        LBL6.Visible := true;
      end;
    end;
  end;
  s1 := sEditType + ',';
  i := 0;
  while pos(',', s1) <> 0 do
  begin
    s2 := copy(s1, 0, pos(',', s1) - 1);
    s1 := copy(s1, pos(',', s1) + 1, Length(s1));
    if s2 <> '' then
    begin
      inc(i);
      SetEditType(i, s2);
    end;
  end;
  s1 := sEditField + ',';
  i := 0;
  while pos(',', s1) <> 0 do
  begin
    s2 := copy(s1, 0, pos(',', s1) - 1);
    s1 := copy(s1, pos(',', s1) + 1, Length(s1));
    if s2 <> '' then
    begin
      inc(i);
      if i = 1 then
        EDIT1.DataField := s2
      else if i = 2 then
        EDIT2.DataField := s2
      else if i = 3 then
        EDIT3.DataField := s2
      else if i = 4 then
        EDIT4.DataField := s2
      else if i = 5 then
        EDIT5.DataField := s2
      else if i = 6 then
        EDIT6.DataField := s2;
    end;
  end;
  s1 := sButton + ',';
  i := 0;
  while pos(',', s1) <> 0 do
  begin
    s2 := copy(s1, 0, pos(',', s1) - 1);
    s1 := copy(s1, pos(',', s1) + 1, Length(s1));
    if s2 <> '' then
    begin
      inc(i);
      if i = 1 then
        lButton1 := StrToInt2(s2)
      else if i = 2 then
        lButton2 := StrToInt2(s2)
      else if i = 3 then
        lButton3 := StrToInt2(s2)
      else if i = 4 then
        lButton4 := StrToInt2(s2)
      else if i = 5 then
        lButton5 := StrToInt2(s2)
      else if i = 6 then
        lButton6 := StrToInt2(s2);
    end;
  end;
end;

procedure TfrmShareBill.SetEditType(lNo: Integer; sType: string);
var
  wCont: TWinControl;
begin
  {编辑框类型eText,eDate,eButton,eCombo}
  wCont := nil;
  if lNo = 1 then
  begin
    if sType = 'eText' then
      wCont := EDIT1
    else if sType = 'eButton' then
      wCont := EDITB1;
  end
  else if lNo = 2 then
  begin
    if sType = 'eText' then
      wCont := EDIT2
    else if sType = 'eButton' then
      wCont := EDITB2;
  end
  else if lNo = 3 then
  begin
    if sType = 'eText' then
      wCont := EDIT3
    else if sType = 'eButton' then
      wCont := EDITB3;
  end
  else if lNo = 4 then
  begin
    if sType = 'eText' then
      wCont := EDIT4
    else if sType = 'eButton' then
      wCont := EDITB4;
  end
  else if lNo = 5 then
  begin
    if sType = 'eText' then
      wCont := EDIT5
    else if sType = 'eButton' then
      wCont := EDITB5;
  end
  else if lNo = 6 then
  begin
    if sType = 'eText' then
      wCont := EDIT6
    else if sType = 'eButton' then
      wCont := EDITB6;
  end;

  wCont.Visible := true;
end;

procedure TfrmShareBill.LoadGrid;
var
  btnColumn: TdxDBGridButtonColumn;
begin
  pnlTop.Height := lPanelHeight;
  gridMain.Top := pnlTop.Top + pnlTop.Height + 10;
  gridMain.Height := bbOk.Top - 10 - gridMain.Top;
  lblCaption.Caption := Caption;
  StrToGridField(gridMain, sGridField, sGridCaption, sGridWidth);
  gridMain.ColumnByFieldName('WareID').Visible := false;
  //设置[编号列]为Button方式,并对应单击事件.
  ChangColumnType(gridMain, gridMain.ColumnByFieldName('WareCode'),
    TdxDBGridButtonColumn);
  btnColumn := TdxDBGridButtonColumn(gridMain.ColumnByFieldName('WareCode'));
  btnColumn.OnButtonClick := GridButtonClick;
  btnColumn.ClickKey := VK_RETURN;
  //设置[商品名称列]为Button方式,并对应单击事件.
  ChangColumnType(gridMain, gridMain.ColumnByFieldName('WareName'),
    TdxDBGridButtonColumn);
  btnColumn := TdxDBGridButtonColumn(gridMain.ColumnByFieldName('WareName'));
  btnColumn.OnButtonClick := GridButtonClick;
  btnColumn.ClickKey := VK_RETURN;
end;

procedure TfrmShareBill.EditShow;
begin
end;

function TfrmShareBill.ReturnSQL(lType, lBillID: Integer): string;
begin
  if lType = 1 then
    Result := sMasterSql
  else if lType = 2 then
    Result := sListSql + 'WHERE el.IndexID = ' + IntToStr(lBillID);
end;

procedure TfrmShareBill.LoadData;
begin
  OpenDataSet(ADOSetMaster, ReturnSQL(1, lMasterID));
  OpenDataSet(ADOSetList, ReturnSQL(2, lMasterID));
  if lMasterID = 0 then
  begin
    ADOSetMaster.Last;
    ADOSetMaster.Insert;
    ADOSetMaster.FieldByName('BillDate').AsDateTime := SYSStartDate;

⌨️ 快捷键说明

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