📄 sharebill.pas
字号:
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 + -