我的一个Unit,可惜不能贴图。//调拨的管理窗体。
//实现了查询,报表,编辑修改,新增。
//
//
unit HarManagerUnt;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, Grids, DBGrids, StdCtrls,Dbclient, DBCtrls,Buttons, ExtCtrls,w_basewindow,
ComCtrls, Menus, Mask;
type
TFrmHarManager = class(TfrmBaseWindow)
Panel6: TPanel;
Bevel5: TBevel;
Bevel2: TBevel;
sbt3: TSpeedButton;
sbt4: TSpeedButton;
sbt5: TSpeedButton;
sbt6: TSpeedButton;
sbt7: TSpeedButton;
Panel3: TPanel;
PanelM: TPanel;
Dbn: TDBNavigator;
ScrollBox1: TScrollBox;
Label1: TLabel;
Label2: TLabel;
DBGrid1: TDBGrid;
dsM: TDataSource;
Sbt1: TSpeedButton;
Bevel1: TBevel;
GroupBox1: TGroupBox;
Splitter1: TSplitter;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label7: TLabel;
Label8: TLabel;
edtGoodsID: TEdit;
cmbUser: TComboBox;
dtpfrom: TDateTimePicker;
dtpTo: TDateTimePicker;
Bevel3: TBevel;
cmbinChkFlag: TComboBox;
edtoperNO: TEdit;
Label6: TLabel;
pomedit: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
sbt2: TSpeedButton;
cmbOutDepartNo: TComboBox;
Panel1: TPanel;
Label9: TLabel;
Label10: TLabel;
cmbInDepartNo: TComboBox;
cmbOutChkFlag: TComboBox;
procedure FormActivate(Sender: TObject);
procedure sbt7Click(Sender: TObject);
procedure sbt3Click(Sender: TObject);
procedure Sbt1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure sbt5Click(Sender: TObject);
procedure sbt6Click(Sender: TObject);
procedure sbt4Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure sbt2Click(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure DBGrid1EditButtonClick(Sender: TObject);
private
{ Private declarations }
fINFlag,fOutFlag:Tfield;
procedure GetUserName(Var cmb:Tcombobox);
procedure GetDepartNo(var cmb:Tcombobox);
procedure InitFace;
function ChechData():Boolean;
procedure GetText(Sender: TField;
var Text: String; DisplayText: Boolean);
public
{ Public declarations }
end;
var
FrmHarManager: TFrmHarManager;
implementation
uses DmStorageUnt, GlobalUnit, HarmonicUnt, RptHarmonicUnt, CheckUnitxhb,
RptSelectDepUnt;
{$R *.DFM}
{ TFrmDispenseManager }
{把部门的信息加到combobox中}
procedure TFrmHarManager.GetDepartNo(var cmb: Tcombobox);
const
str='select * from POSTLEASE.DEPARTMENT';
var P
DepartInfo;
begin
with dmstorage.cdsGlobal do begin
commandText:=str;
close;
open;
cmb.Items.Clear;
cmb.Items.Add('所有网点');
while not eof do begin
New(P);
P^.DepartName:=FieldByname('DepartName').asstring;
P^.DepartNo:=FieldByname('DepartID').asstring;
cmb.Items.AddObject(P^.DepartNo+'--'+P^.DepartName,Tobject(P));
next;
end;
cmb.ItemIndex:=0;
end;
end;
{把用户的信息加到combobox中}
procedure TFrmHarManager.GetUserName(var cmb: Tcombobox);
const str='select * from userinfo';
begin
with dmstorage.cdsGlobal do begin
close;
commandText:=str;
open;
cmb.Items.Clear;
cmb.items.Add('所有用户');
while not eof do begin
cmb.Items.Add(FieldByname('UserName').asstring);
next;
end;
cmb.ItemIndex:=0;
end;
end;
{初始化窗口}
procedure TFrmHarManager.InitFace;
begin
edtGoodsId.text:='';
dtpfrom.date:=date-7;
dtpto.date:=date;
label1.Caption:=caption;
label2.Caption:=caption;
edtoperNo.Text:='';
label1.Left:=Trunc((panelM.Width-label1.Width)/2);
label2.Left:=label1.Left-1;
end;
procedure TFrmHarManager.FormActivate(Sender: TObject);
begin
InitFace;
GetUserName(cmbUser);
GetDepartNO(cmbOutDepartNo);
cmbInDepartNo.Items.Assign(cmbOutDepartNo.Items);
cmbInDepartNo.ItemIndex:=0;
end;
{关闭窗口}
procedure TFrmHarManager.sbt7Click(Sender: TObject);
begin
close;
end;
{把两个日期控件的日期作为条件}
function TFrmHarManager.ChechData: boolean;
begin
result:=False;
if dtpTo.Date<dtpFrom.date then begin
gf_warn('结束日期要小于开始日期!');
result:=False;
abort;
end;
result:=true;
end;
{查询}
procedure TFrmHarManager.sbt3Click(Sender: TObject);
const
str=' AND TO_char(A.ATTDATE,''YYYY-MM-DD'') BETWEEN ''%S'' AND ''%S''';
msg='共 %D 条记录,分配总量合计为:%S';
var s:string;
begin
if not ChechData then exit;
strSQl:=Format(str,[formatdatetime('yyyy-mm-dd',dtpFrom.date),Formatdatetime('yyyy-mm-dd',dtpTo.date)]);
if trim(edtGoodsID.Text)<>'' then
strSql:=strSQl+' and goodsid like ''%'+trim(edtgoodsid.text)+'%''';
with cmbOutdepartNO DO BEGIN
if ItemIndex>0 then
strSql:=strsql+' and OutDepNO like '''+
PdepartInfo(Items.Objects[itemindex])^.departNO+'''';
end;
with cmbIndepartNO DO BEGIN
if ItemIndex>0 then
strSql:=strsql+' and InDepNO like '''+
PdepartInfo(Items.Objects[itemindex])^.departNO+'''';
end;
if cmbuser.ItemIndex>0 then
strsql:=strsql+' and attman like '''+cmbuser.items.Strings[cmbuser.itemindex]+'''';
if cmbInChkFlag.ItemIndex=1 then
strsql:=strsql+' and INflag like ''T''';
if cmbInchkflag.ItemIndex=2 then
strsql:=strsql+' and INflag like ''F''';
if cmbOutChkFlag.ItemIndex=1 then
strsql:=strsql+' and Outflag like ''T''';
if cmbOutchkflag.ItemIndex=2 then
strsql:=strsql+' and Outflag like ''F''';
if Length(Trim(edtoperNO.text))>0 then
strsql:=strsql+' and OPERATORNO='''+edtoperno.Text+'''';
strsql:=strsql+' order by OutdepNO';
with dsM.DataSet as tclientdataset do begin
//showmessage(strsql);
Data:=DataRequest(strSQL);
Filter:='';
Panel1.Caption:=Format(msg,[RecordCount,vartostr(FieldByname('sumAttnum').value)]);
//关联OngetText到DM的已有事件//
fInflag:=Fields.FindField('InFlag');
fOutflag:=Fields.FindField('OutFlag');
if assigned(fInflag) then
fInFlag.OnGetText:=GetText;//dmstorage.cdsCheckStorageMCHECKFLAGGetText;
if assigned(fOutflag) then
fOutFlag.OnGetText:=GetText;//dmstorage.cdsCheckStorageMCHECKFLAGGetText;
end;
end;
{新增一张调拔单}
procedure TFrmHarManager.Sbt1Click(Sender: TObject);
begin
with TFrmHarmonic.Create(self) do
Try
caption:=TBitbtn(sender).caption;
ShowModal;
Finally
free;
end;
end;
procedure TFrmHarManager.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
with dsM.dataset as Tclientdataset do
begin
if state in [dsedit,dsinsert] then
post;
if ChangeCount> 0 then
if gf_Question('目前有未更新的数据,要更新吗?') then
begin
ApplyUpdates (0);
end else
close
else
close;
end;
dbgrid1.ReadOnly:=True;
dbgrid1.Color:=$00E4FCEF;
Action:=caFree;
end;
{保存}
procedure TFrmHarManager.sbt5Click(Sender: TObject);
begin
with dsM.dataset as Tclientdataset do
begin
if state in [dsedit,dsinsert] then
post;
if ChangeCount> 0 then
ApplyUpdates (0);
end;
dbgrid1.ReadOnly:=True;
dbgrid1.PopupMenu:=nil;
dbgrid1.Color:=$00E4FCEF;
end;
{取消更新}
procedure TFrmHarManager.sbt6Click(Sender: TObject);
begin
with dsM.dataset as Tclientdataset do
if ChangeCount>0 then
CancelUpdates ;
end;
{打印调拔单}
procedure TFrmHarManager.sbt4Click(Sender: TObject);
var sFilter:string;
D:TClientDataset;
begin
D:=(Dbgrid1.DataSource.DataSet as TClientDataSet);
if (Not D.Active)or (D.IsEmpty) then exit;
if not Assigned(FrmRptSelectDep) then
FrmRptSelectDep:=TFrmRptSelectDep.Create(nil);
Try
sFilter:=D.Filter;
D.DisableControls;
if FrmRptSelectDep.ShowModal=mrOK then begin
D.Filter:=FrmRptSelectDep.GetSelectStr;
D.Filtered:=True;
with TFrmRptHarmonic.Create(self) do begin
Try
if FrmRptSelectDep.NeedPrv then QuickRep1.Preview else QuickRep1.Print;
Finally
free;
End;
End;
End;
Finally
D.Filter:=sFilter;
D.Filtered:=True;
D.EnableControls;
End;
end;
procedure TFrmHarManager.GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if Sender.AsString='F' then text:='未确认' else
if Sender.AsString='T' then text:='已确认' else
Text:=Sender.AsString;
end;
{修改编辑}
procedure TFrmHarManager.N2Click(Sender: TObject);
begin
inherited;
with dsM.DataSet as TClientdataset do begin
if (FieldByname('OutFlag').asstring='T')or(FieldByname('InFlag').asstring='T') then begin
gf_warn('该记录已经审核,不能修改!');
abort;
end;
if FieldByname('AttMan').asstring<>userinfo.UserName then begin
gf_warn(' 只能修改本人调拨的记录!');
abort;
end;
dbgrid1.ReadOnly:=False;
//if dgRowSelect in Dbgrid1.Options then
// dbgrid1.Options:=dbgrid1.Options-[dgRowSelect];
//if dgEditing in Dbgrid1.Options then
// dbgrid1.Options:=dbgrid1.Options+[dgEditing];
if TMenuItem(sender).name='N1' then edit else delete;
//Post;
end;
end;
procedure TFrmHarManager.sbt2Click(Sender: TObject);
var i:integer;
begin
inherited;
with dbgrid1 do begin
Color:=$00FAECE7;
PopupMenu:=pomedit;
{for i:=0 to Columns.Count -1 do begin
if not ((i=1)or(i=5)) then dbgrid1.Columns
.ReadOnly:=True;
end;}
end;
end;
procedure TFrmHarManager.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
{TODO : 设置工具条的快键}
case key of
{vk_HOME: Sbt1.Click ;
vk_Up: Sbt2.Click ;
vk_DOWN: Sbt3.Click ;
vk_END: Sbt4.Click ;
vk_F2: SBt6.click;}
vk_F3: SBt1.click;
VK_F4: SBt2.Click;
//vk_f5: Sbt9.Click ;
//vk_f6: Sbt10.click;
//vk_F7: SBt11.Click;
vk_F9: SBt3.Click;
vk_F10: SBt4.Click;
vk_F11: SBt5.Click;
vk_F12: SBt6.Click;
vk_ESCAPE: Sbt7.Click ;
end;
end;
procedure TFrmHarManager.DBGrid1EditButtonClick(Sender: TObject);
var fGG,fPZMC,fLBMC,fPM,fDW,fDJ,fYXGSMC:TFIeld;
begin
inherited;
if Dbgrid1.ReadOnly then exit;
with TFrmcheckxhb.Create(self) do begin
Try
if ShowModal=MROK Then
if dsM.DataSet<> Nil then
with dsM.DataSet as TClientdataset do begin
fGG:=Fields.FindField('GG');
fPZMC:=Fields.FindField('PZMC');
fLBMC:=Fields.FindField('LBMC');
fPM:=Fields.FindField('PM');
fDW:=Fields.FindField('DW');
fDJ:=Fields.FindField('DJ');
fYXGSMC:=Fields.FindField('YXGSMC');
edit;
if Assigned(fGG) then
FieldByname('GG').asstring:=Dmstorage.cdsItem.fieldbyname('GG').asstring;
if Assigned(fPZMC) then
FieldByname('PZMC').asstring:=Dmstorage.cdsItem.fieldbyname('PZMC').asstring;
if Assigned(fLBMC) then
FieldByname('LBMC').asstring:=Dmstorage.cdsItem.fieldbyname('LBMC').asstring;
if Assigned(fPM) then
FieldByname('PM').asstring:=Dmstorage.cdsItem.fieldbyname('PM').asstring;
if Assigned(fDW) then
FieldByname('DW').asstring:=Dmstorage.cdsItem.fieldbyname('DW').asstring;
if Assigned(fDJ) then
FieldByname('DJ').asFloat:=Dmstorage.cdsItem.fieldbyname('DJ').asFloat;
if Assigned(fYXGSMC) then
FieldByname('YXGSMC').asstring:=Dmstorage.cdsItem.fieldbyname('YXGSMC').asstring;
FieldByname('GOODSID').asstring:=Dmstorage.cdsItem.fieldbyname('YXID').asstring;
end;
Finally
Frmcheckxhb.Free;
end;
end;
end;
end.