📄 ubasic.pas
字号:
unit uBasic;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, jpeg, ExtCtrls, StdCtrls, cxStyles,
cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB,
cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid,
DBClient, FR_Class;
type
TfrmBasic = class(TForm)
Shape1: TShape;
Image1: TImage;
ToolBar1: TToolBar;
lbLittle: TLabel;
lbLittle1: TLabel;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton15: TToolButton;
ToolButton16: TToolButton;
Panel3: TPanel;
Panel4: TPanel;
GridItem: TcxGridDBTableView;
cxGrid4Level1: TcxGridLevel;
cxGrid4: TcxGrid;
cdItem: TClientDataSet;
cdMaster: TClientDataSet;
dsItem: TDataSource;
dsMaster: TDataSource;
procedure FormCreate(Sender: TObject);
procedure ToolButton13Click(Sender: TObject);
procedure ToolButton12Click(Sender: TObject);
procedure ToolButton11Click(Sender: TObject);
procedure ToolButton9Click(Sender: TObject);
procedure ToolButton10Click(Sender: TObject);
procedure dsMasterStateChange(Sender: TObject);
procedure cxGrid4Enter(Sender: TObject);
procedure GridItemFocusedItemChanged(Sender: TcxCustomGridTableView;
APrevFocusedItem, AFocusedItem: TcxCustomGridTableItem);
procedure cdItemBeforePost(DataSet: TDataSet);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
protected
procedure init();virtual;
//数据操作
procedure CloseDestory();virtual;
procedure CloseCm();virtual;
procedure InsertData();virtual;
function ApplyData():boolean;virtual;abstract;
procedure cancelData();virtual;
procedure deleteData();virtual;
//界面控制
procedure ToolButtonEnable(b: boolean);virtual;
procedure GridEnterColNilToDo(col: TcxCustomGridTableItem);virtual;abstract;
function CheckOperation(sender :Tobject):integer;virtual;abstract;
//客户获取
function GetClientData(SField,sFieldT: String):integer;virtual;//在父类实现而在子类调用
procedure ClientToMaster;virtual;
//产品获取
function GridItemChange(col1,col2: TcxCustomGridTableItem):boolean;virtual;abstract;
function GetCpData():boolean;virtual;abstract; //在子类实现而 在父类调用
function SetGritItemFocused(B:Boolean):boolean;virtual;abstract;
procedure CpToItem;virtual;abstract;
//打印准备
function fcGetJeTotal(cdTem: TclientDataSet):real;virtual;
procedure UpperCasePrint(fje:real);virtual;
{ Private declarations }
public
{ Public declarations }
end;
var
frmBasic: TfrmBasic;
implementation
uses
uGlobal, uPublic, uMain;
{$R *.dfm}
{ TfrmBasic }
procedure TfrmBasic.CloseCm;
begin
close;
end;
procedure TfrmBasic.CloseDestory;
begin
end;
procedure TfrmBasic.init;
begin
Top := frmMain.Top + iTop;
Left := frmMain.Left + iLeft;
width := frmMain.Width - iWidth;
height := frmMain.Height - iHeight;
toolBar1.Images := frmMain.Images16;
ToolButtonEnable(false);
with frmMain.cdPub do begin
close;
commandText := 'select * from T_masterZBTem';
open;
cdMaster.Data := data;
close;
commandText := 'select * from T_itemZBTem';
open;
cdItem.Data := data;
close;
end;
cdMaster.Append;
end;
procedure TfrmBasic.FormCreate(Sender: TObject);
begin
init;
end;
procedure TfrmBasic.ToolButton13Click(Sender: TObject);
begin
CloseDestory;
CloseCm;
end;
procedure TfrmBasic.cancelData;
begin
cdMaster.EmptyDataSet;
cdMaster.MergeChangeLog;
cdItem.EmptyDataSet;
cdItem.MergeChangeLog;
end;
procedure TfrmBasic.deleteData;
begin
deleteRecordData(cdItem);
end;
procedure TfrmBasic.InsertData;
begin
cancelData;
end;
procedure TfrmBasic.ToolButton12Click(Sender: TObject);
begin
cancelData;
end;
procedure TfrmBasic.ToolButton11Click(Sender: TObject);
begin
deleteData;
end;
procedure TfrmBasic.ToolButton9Click(Sender: TObject);
begin
cancelData;
end;
procedure TfrmBasic.ToolButton10Click(Sender: TObject);
begin
IF ApplyData THEN
CancelData;
end;
procedure TfrmBasic.ToolButtonEnable(b: boolean);
begin
toolButton10.Enabled := b;
toolButton11.Enabled := b;
toolButton12.Enabled := b;
end;
procedure TfrmBasic.dsMasterStateChange(Sender: TObject);
begin
If (cdMaster.ChangeCount > 0) or (cdItem.ChangeCount > 0) Then
ToolButtonEnable(true)
else
ToolButtonEnable(false);
If cdItem.State in [dsInsert] then
If cdItem.RecordCount >= 6 then //由于打单时最大6行
cdItem.Cancel;
end;
procedure TfrmBasic.cxGrid4Enter(Sender: TObject);
begin
insertRecordData(cdItem);
end;
procedure TfrmBasic.GridItemFocusedItemChanged(
Sender: TcxCustomGridTableView; APrevFocusedItem,
AFocusedItem: TcxCustomGridTableItem);
begin
{is facous go to last then append}
GridEnterColNilToDo(AFocusedItem);
if not (cdItem.State in [dsedit,dsinsert]) then exit;
if GridItemChange(APrevFocusedItem,AFocusedItem) then
SetGritItemFocused(GetCpData); {移焦点}
{if (APrevFocusedItem=cxGrid1DBTableView1.Columns[5])and
(AFocusedItem = cxGrid1DBTableView1.Columns[6])then
if getStoc_bm(false) then
{移焦点}
{ GetStoc_mb_thenDo
else
unGetStoc_mb_thenDo;
fcSet_color(APrevFocusedItem);
fcSet_danwei(APrevFocusedItem); }
end;
function TfrmBasic.GetClientData(SField, sFieldT: String): integer;
begin
with frmMain.cdPub do begin
close;
commandText := 'select IKey,CCode 客户编号,CName 客户名称,cPost_Dz,cTel From T_pubClient'+#13+
'where ' + sfield +' like ''%'+sfieldT+'%''';
open;
fieldbyname('IKEY').Visible := False;
fieldbyname('cPost_Dz').Visible := False;
fieldbyname('cTel').Visible := False;
Result := recordCount;
end;
end;
procedure TfrmBasic.ClientToMaster;
begin
with frmMain.cdPub do Begin
cdMaster.Edit;
cdMaster.FieldByName('IkeyClient').Value := fieldbyname('IKey').Value;
cdMaster.FieldByName('CCodeClient').Value := fieldbyname('客户编号').Value;
cdMaster.FieldByName('CNameClient').Value := fieldbyname('客户名称').Value;
cdMaster.FieldByName('cPostDz').Value := fieldbyname('cPost_Dz').Value;
cdMaster.FieldByName('cTel').Value := fieldbyname('cTel').Value;
end;
end;
procedure TfrmBasic.cdItemBeforePost(DataSet: TDataSet);
begin
cdItem.FieldByName('fje').Value := cdItem.fieldbyname('fsl').Value *
cdItem.fieldbyname('fdj').Value;
IF cdItem.FieldByName('IKeyCp').AsInteger <= 0 Then Begin
infoWnd('提示:没有该编码的材料,请检查!');
Abort;
end;
end;
procedure TfrmBasic.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
IF (ssCtrl in Shift) and (key = vk_return) then
ToolButton10Click(nil);
CASE KEY OF
VK_F2: ToolButton9Click(nil);
VK_F3: ToolButton10Click(nil);
VK_F4: ToolButton11Click(nil);
VK_F5: ToolButton12Click(nil);
END;
end;
function TfrmBasic.fcGetJeTotal(cdTem: TclientDataSet):real;
var curren_re: TbookMark;
fje: real;
begin
fje := 0;
with cdTem do begin
curren_re :=getBookMark;
disablecontrols;
first;
try
while not eof do begin
fje := fje + fieldbyname('fsl').AsFloat *
fieldbyname('fdj').AsFloat;
next;
end;
finally
gotobookmark(curren_re);
freebookmark(curren_re);
enablecontrols;
end;
end;
result := fje;
end;
procedure TfrmBasic.UpperCasePrint(fje:real);
var i,n,j: integer;
s_je: string;
dx_je: array[1..8] of string;
begin
j := 0;
for i := 1 to 8 do
dx_je[i] := '';
s_je :=intTostr(round(fje * 100));
if length(s_je) > 8 then
exit;
for i := length(s_je) downTo 1 do
begin
j := j+1;
n := strToint(s_je[i]);
case n of
0: dx_je[j] := '零';
1: dx_je[j] := '壹';
2: dx_je[j] := '贰';
3: dx_je[j] := '叁';
4: dx_je[j] := '肆';
5: dx_je[j] := '伍';
6: dx_je[j] := '陆';
7: dx_je[j] := '柒';
8: dx_je[j] := '捌';
9: dx_je[j] := '玖';
end;
end;
frVariables['vdx8'] := dx_je[8];
frVariables['vdx7'] := dx_je[7];
frVariables['vdx6'] := dx_je[6];
frVariables['vdx5'] := dx_je[5];
frVariables['vdx4'] := dx_je[4];
frVariables['vdx3'] := dx_je[3];
frVariables['vdx2'] := dx_je[2];
frVariables['vdx1'] := dx_je[1];
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -