📄 billmanager.pas
字号:
unit BillManager;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MDIBase, FR_DSet, FR_DBSet, FR_Class, Menus, ActnList, DB,
DBClient, Grids, DBGridEh, StdCtrls, ExtCtrls;
Const
WM_USER_GETDATA = WM_USER+1024;
type
TfrmBillManager = class(TfrmMDIBase)
Panel1: TPanel;
FormTitle: TLabel;
Panel3: TPanel;
btnExit: TButton;
Panel2: TPanel;
btnadd: TButton;
btncopy: TButton;
btnedit: TButton;
btndelete: TButton;
Panel4: TPanel;
btnrefresh: TButton;
btnsearch: TButton;
grid: TDBGridEh;
CDSBaseinfo: TClientDataSet;
DSbaseinfo: TDataSource;
ActionList2: TActionList;
acrefresh: TAction;
acsearch: TAction;
acfieldproperty: TAction;
acexit: TAction;
acfirst: TAction;
acprior: TAction;
acnext: TAction;
aclast: TAction;
popupgrid: TPopupMenu;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
N18: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
procedure gridDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
procedure FormDestroy(Sender: TObject);
procedure acexitExecute(Sender: TObject);
procedure acfirstExecute(Sender: TObject);
procedure acpriorExecute(Sender: TObject);
procedure acnextExecute(Sender: TObject);
procedure aclastExecute(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure acrefreshExecute(Sender: TObject);
procedure acfieldpropertyExecute(Sender: TObject);
procedure acsearchExecute(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure gridDblClick(Sender: TObject);
private
Maintable:String;
KeyField:String;
procedure Getdata(var getdata:Tmessage);Message WM_USER_GETDATA;
function GetGridTitle(TableName:String):Boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
frmBillManager: TfrmBillManager;
implementation
uses Global, DataProcess, Binterface, BillLookup, SellOrderStatus,
ContractStatus;
{$R *.dfm}
procedure TfrmBillManager.gridDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumnEh;
State: TGridDrawState);
begin
inherited;
if CDSBaseinfo.RecNo mod 2 = 0 then
begin
Grid.Canvas.Brush.Color:=$00EAEFED;
Grid.Canvas.Font.Color:=clBlack;
end
else
begin
Grid.Canvas.Brush.Color:=clWhite;
Grid.Canvas.Font.Color:=clBlack;
end;
if gdselected in state then
begin
grid.Canvas.Brush.Color:=clBackground;
grid.Canvas.Font.Color:=clWhite;
end;
grid.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
procedure TfrmBillManager.FormDestroy(Sender: TObject);
begin
inherited;
frmBillManager:=nil;
end;
procedure TfrmBillManager.acexitExecute(Sender: TObject);
begin
inherited;
Close;
end;
procedure TfrmBillManager.acfirstExecute(Sender: TObject);
begin
inherited;
CDSbaseinfo.First;
end;
procedure TfrmBillManager.acpriorExecute(Sender: TObject);
begin
inherited;
CDSBaseinfo.Prior;
end;
procedure TfrmBillManager.acnextExecute(Sender: TObject);
begin
inherited;
CDSBaseinfo.Next;
end;
procedure TfrmBillManager.aclastExecute(Sender: TObject);
begin
inherited;
CDSBaseinfo.Last;
end;
procedure TfrmBillManager.Getdata(var getdata: Tmessage);
var
tiao:String;
begin
tiao:=KeyField+'>='+vartosql(GetMaxid(Maintable,KeyField)-20);
ClearCDSDATA(CDSBaseinfo);
CDSBaseinfo.Data:=GetBillStatus(Tiao);
GetGridTitle(MainTable);
end;
function TfrmBillManager.GetGridTitle(TableName: String): Boolean;
var
i:integer;
TMPCDS:TclientDataset;
begin
Result:=True;
if TableName='' then
Exit;
try
CDSbaseinfo.DisableControls;
TMPCDS:=Tclientdataset.Create(nil);
TMPCDS.FetchOnDemand:=False;
GetsqlData(TMPCDS,'TTablefield','fid','ftableName='+vartosql(TableName),20);
if TMPCDS.RecordCount > 0 then
begin
for i:=0 to CDSBaseinfo.Fields.Count - 1 do
begin
TMPCDS.First;
while not TMPCDS.Eof do
begin
if UpperCase(CDSbaseinfo.fields[i].FieldName)=UpperCase(TMPCDS.FieldByName('fname').AsString) then
begin
CDSbaseinfo.Fields[i].DisplayLabel:=TMPCDS.fieldbyname('fdesc').AsString;
if (TMPCDS.FieldByName('ftype').AsString='int') or
(TMPCDS.FieldByName('ftype').AsString='bit') or
(TMPCDS.FieldByName('ftype').AsString='datetime') or
(TMPCDS.FieldByName('ftype').AsString='numeric') then
CDSbaseinfo.Fields[i].DisplayWidth := 8
else
CDSbaseinfo.Fields[i].DisplayWidth:=Trunc(TMPCDS.fieldbyname('flength').AsInteger/1.5);
if not TMPCDS.FieldByName('fisVisible').AsBoolean then
begin
CDSbaseinfo.Fields[i].Visible:=False;
end;
end;
TMPCDS.Next;
end;
CDSBaseinfo.Next;
end;
end;
finally
TMPCDS.Close;
TMPCDS.Free;
CDSbaseinfo.EnableControls;
end;
end;
procedure TfrmBillManager.FormShow(Sender: TObject);
begin
inherited;
postmessage(handle,WM_USER_GETDATA,0,0);
application.ProcessMessages;
end;
procedure TfrmBillManager.acrefreshExecute(Sender: TObject);
begin
inherited;
postmessage(handle,WM_USER_GETDATA,0,0);
application.ProcessMessages;
end;
procedure TfrmBillManager.acfieldpropertyExecute(Sender: TObject);
begin
inherited;
FromInterface:=MainTable;
ShowModalForm(TfrmInterface,Self,Tform(frminterface));
postmessage(handle,WM_USER_GETDATA,0,0);
application.ProcessMessages;
end;
procedure TfrmBillManager.acsearchExecute(Sender: TObject);
begin
inherited;
Searchtiao:='';
ShowModalForm(TfrmBillLookup,Self,Tform(frmBillLookup));
if Searchtiao<>'' then
Begin
try
ClearCDSDATA(CDSBaseinfo);
CDSBaseinfo.Data:=GetBillStatus(Searchtiao);
GetGridTitle(MainTable);
except
messagedlg('琩高兵ン砞竚Τ粇 ! ',mtWarning,[mbok],0);
postmessage(handle,WM_USER_GETDATA,0,0);
application.ProcessMessages;
end;
end;
end;
procedure TfrmBillManager.FormCreate(Sender: TObject);
begin
inherited;
Maintable:='TDraft';
KeyField:='fid';
end;
procedure TfrmBillManager.gridDblClick(Sender: TObject);
begin
inherited;
if CDSBaseinfo.RecordCount > 0 then
begin
UserSelectBillNo:=CDSBaseinfo.fieldbyname('fBillNo').AsString;
if Copy(UserSelectBillNo,1,2)='HT' then
begin
ShowModalForm(TfrmContractStatus,self,Tform(frmContractStatus));
end;
if Copy(UserSelectBillNo,1,2)='XS' then
begin
ShowModalForm(TfrmSellOrderStatus,self,Tform(frmSellOrderStatus));
end;
end
else
Exit;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -