📄 mdparent.pas.~9~
字号:
//end;
//------------------------------------------------
{if MasterQuery.State=dsEdit then MasterQuery.Post;
SaveData;
MasterQuery.CommitUpdates;
DetailQuery.CommitUpdates;
RefreshBtn.Click;
t2:=GetTickCount;
//DM.SetPanel('保存数据耗时:'+IntToStr(t2-t1)+' 毫秒');
MessageBox(Handle,'数据保存成功!!','信息提示',MB_OK+MB_ICONINFORMATION); }
end;
procedure TMDParentForm.SaveData;
begin
{ if (DetailQuery.State in [dsInsert,dsEdit]) then DetailQuery.Post;
if (MasterQuery.State in [dsInsert,dsEdit]) then MasterQuery.Post;
if DetailQuery.UpdatesPending then SetDetailPKValue;
if DetailQuery.RecordCount<1 then
begin
MessageBox(Handle,'没有明细数据,请填写明细数据!!','信息提示',MB_OK+MB_ICONINFORMATION);
Abort;
end;
///////////////////////////////////////////////////////
try
DataBase.StartTransaction;
MasterQuery.ApplyUpdates;
DetailQuery.ApplyUpdates;
UpdateTable;
DataBase.Commit;
EditStatus:=0;
SetButtons;
except
on E: Exception do DataBase.Rollback;
end; }
end;
procedure TMDParentForm.InitForm;
begin
end;
procedure TMDParentForm.FormCreate(Sender: TObject);
var I,t1,t2:Integer;
S,TmpStr:String;
begin
//if FileExists('formfile.ffl') then
// EasyGrid1.LoadFromFile('formfile.ffl');
EasyGrid1.RunMode:=rmLinkDataSet;
{t1:=GetTickCount;
//Font.Size:=DM.FontSize;
//Font.Name:=DM.FontName;
//---------------------------------------------------
//MasterQuery:=TQuery(MasterSource.DataSet);
//DetailQuery:=TQuery(DetailSource.DataSet);
MasterQuery.AfterScroll:=MasterQueryAfterScroll;
//------------------------------------------------------
//MFieldsDefine.Params[0].AsString:=ClassName;
//MFieldsDefine.Open;
//DFieldsDefine.Params[0].AsString:=ClassName;
//DFieldsDefine.Open;
//t2:=GetTickCount;
//TmpStr:='打开数据集: '+FloatToStr((t2-t1)/1000)+' 秒';
//t1:=t2;
//if MasterQuery.Tag<1 then DM.InitFields(MasterQuery);
//if DetailQuery.Tag<1 then DM.InitFields(DetailQuery);
//CreateColumns(DetailQuery,ExDBGrid);
//t2:=GetTickCount;
//TmpStr:=TmpStr+'初始化数据集: '+FloatToStr((t2-t1)/1000)+' 秒';
//t1:=t2;
t1:=GetTickCount;
SetColumnsOrder(DFieldsDefine,ExDBGrid);
t2:=GetTickCount;
TmpStr:=TmpStr+'列排序: '+IntToStr(t2-t1)+' 秒';
//t1:=t2;
//------------------------------------------------------
MasterQuery.OnNewRecord:=MasterNewRecords;
DetailQuery.OnNewRecord:=DetailNewRecords;
MasterQuery.BeforePost:=MasterBeforePost;
DetailQuery.BeforePost:=DetailBeforePost;
///////////////////////////////////////////////////////
I:=ExDBGrid.GetColumnIndex('InvtCode');
if I>=0 then
ExDBGrid.ExColumns[I].ButtonStyle:=cbsEllipsis;
S:=DM.GetParmValue('InvtSchType');
InvtSchType:=StrToInt(IIF(S='','1',S));
///////////////////////////////////////////
InitForm; //最好备注掉!
EditStatus:=0;
SetButtons;
//t2:=GetTickCount;
//TmpStr:=TmpStr+'打开窗口总共耗时: '+IntToStr(t2-t1)+' 秒'; //FloatToStr((t2-t1)/1000)
DM.SetPanel(TmpStr); }
end;
procedure TMDParentForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
ADOQuery1.Close;
ADOQuery2.Close;
Action:=caFree;
end;
procedure TMDParentForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose:=True;
if EditStatus=0 then Exit;
if DataChanged then begin
if MessageBox(Handle,'数据已改变,是否保存数据?',
'系统提示',MB_YESNO+MB_ICONQUESTION)=IDYES then
SaveData;
end;
end;
procedure TMDParentForm.MasterQueryAfterScroll(DataSet: TDataSet);
var Value:Integer;
S:String;
begin
{Value:=MasterQuery.FieldByName(MPKCol).AsInteger;
DetailQuery.Params[0].AsInteger:=Value;
DetailQuery.Close;
DetailQuery.Open;}
{S:=MasterQuery.FieldByName('Status').AsString;
if S='2' then begin
DisableBillItem.Enabled:=false;
DisableBillItem.Caption:='单据关闭';
end else begin
DisableBillItem.Enabled:=False;
if S='9' then S:='取消作废' else S:='作废单据';
DisableBillItem.Caption:=S;
end; }
end;
procedure TMDParentForm.AddRowClick(Sender: TObject);
begin
//DetailQuery.Append;
end;
procedure TMDParentForm.DelRowClick(Sender: TObject);
begin
// if not DetailQuery.IsEmpty then DetailQuery.Delete;
end;
procedure TMDParentForm.DeleteBtnClick(Sender: TObject);
var I,Count:Integer;
TmpBook:TBookMark;
begin
{ if MasterQuery.IsEmpty then Exit;
if MessageBox(Handle,'数据删除后不能恢复,是否继续?',
'系统提示',MB_YESNO+MB_ICONQUESTION)=IDNO then Exit;
try
DataBase.StartTransaction;
MasterQuery.DisableControls;
MasterQuery.AfterScroll:=nil;
TmpBook:=MasterQuery.GetBookmark;
MasterQuery.Delete;
MasterQuery.ApplyUpdates;
DataBase.Commit;
MasterQuery.AfterScroll:=MasterQueryAfterScroll;
MasterQuery.EnableControls;
MasterQueryAfterScroll(nil);
MasterQuery.FreeBookmark(TmpBook);
MessageBox(Handle,'数据删除成功!!','信息提示',MB_OK+MB_ICONINFORMATION);
except
on E: Exception do
begin
MasterQuery.CancelUpdates;
MasterQuery.GotoBookmark(TmpBook);
MasterQuery.FreeBookmark(TmpBook);
MasterQuery.EnableControls;
MasterQuery.AfterScroll:=MasterQueryAfterScroll;
DataBase.Rollback;
//UpdateError(E,MasterQuery,'');
end
end }
end;
procedure TMDParentForm.ExDBGridEditButtonClick(Sender: TObject);
var S:String;
begin
{if EditStatus=0 then Exit;
if ExDBGrid.SelectedField.ReadOnly then Exit;
if ExDBGrid.ExColumns[ExDBGrid.SelectedIndex].ReadOnly then Exit;
if UpperCase(ExDBGrid.SelectedField.FieldName)='INVTCODE' then
begin
Application.CreateForm(TSelectInventForm,SelectInventForm);
SelectInventForm.ShowModal;
if SelectInventForm.ModalResult=MROK then
begin
S:=SelectInventForm.Master.FieldByName('InvtCode').AsString;
if DetailQuery.State=dsBrowse then DetailQuery.Edit;
DetailQuery.FieldByName('InvtCode').AsString:=S;
end;
end; }
end;
procedure TMDParentForm.RefreshBtnClick(Sender: TObject);
var Value,I,Count:Integer;
begin
{ MasterQuery.DisableControls;
MasterQuery.AfterScroll:=nil;
Value:=MasterQuery.FieldByName(MPKCol).AsInteger;
MasterQuery.Params[0].AsDate:=Today;
MasterQuery.Params[1].AsDate:=Today;
MasterQuery.Close;
MasterQuery.Open;
//-----------------------------------------
if Value<>0 then begin
Count:=MasterQuery.RecordCount;
MasterQuery.First;
for I:=1 to Count do
begin
if MasterQuery.FieldByName(MPKCol).AsInteger=Value then Break;
MasterQuery.Next;
end;
if I>Count then MessageBox(Handle,'当前单据已不存在!!','信息提示',MB_OK+MB_ICONINFORMATION);
end;
MasterQuery.AfterScroll:=MasterQueryAfterScroll;
MasterQueryAfterScroll(nil);
MasterQuery.EnableControls; }
end;
procedure TMDParentForm.EditItemChanged(FieldName:String);
begin
if (FieldName='QTY') or (FieldName='PRICE') or (FieldName='TAXRATE') or
(FieldName='DISRATE') then
begin
CalcDetailFieldsValue(nil);
end;
end;
procedure TMDParentForm.DesignFormatItemClick(Sender: TObject);
begin
{Application.CreateForm(TGridDesignerForm,GridDesignerForm);
GridDesignerForm.FromDataSet:=DetailQuery;
GridDesignerForm.FromGrid:=ExDBGrid;
GridDesignerForm.ShowModal; }
end;
procedure TMDParentForm.SaveFormatItemClick(Sender: TObject);
begin
//DM.SaveExDBGridFormat(ClassName,DetailQuery,ExDbGrid);
end;
procedure TMDParentForm.NewPropItemClick(Sender: TObject);
begin
{ Application.CreateForm(TSetLookupFieldForm,SetLookupFieldForm);
SetLookupFieldForm.Src_Source.DataSet:=DM.SelectInvent;
SetLookupFieldForm.Tar_Source.DataSet:=DetailQuery;
SetLookupFieldForm.KeyFields:='INVTCODE';
SetLookupFieldForm.FormName:=ClassName;
SetLookupFieldForm.ShowModal; }
end;
procedure TMDParentForm.ExDBGridItemChanged(Sender: TObject; Field: TField;
Value: String);
var cFieldName,S:String;
I,Count:Integer;
begin
{cFieldName:=UpperCase(Field.FieldName);
EditItemChanged(UpperCase(cFieldName));
/////////////////////////////////////////////////////////////////////////
if (cFieldName='INVTCODE') or (cFieldName='SNAME') then
begin
Value:=UpperCase(Value);
if InvtSchType=2 then begin //靠简码来定位的
if not DM.SelectInvent.Active then DM.SelectInvent.Open;
Count:=DM.SelectInvent.RecordCount;
DM.SelectInvent.First;
for I:=1 to Count do
begin
S:=UpperCase(DM.SelectInvent.FieldByName('SCHCODE').AsString);
if Value=S then begin
S:=DM.SelectInvent.FieldByName('INVTCODE').AsString;
DetailQuery.FieldByName('INVTCODE').AsString:=S;
Exit;
end;
DM.SelectInvent.Next;
end;
DetailQuery.FieldByName('INVTCODE').Clear;
end else if InvtSchType=1 then begin
if cFieldName<>'SNAME' then Exit;
if not DM.SelectInvent.Active then DM.SelectInvent.Open;
Count:=DM.SelectInvent.RecordCount;
DM.SelectInvent.First;
for I:=1 to Count do
begin
S:=UpperCase(DM.SelectInvent.FieldByName('SCHCODE').AsString);
if Value=S then begin
S:=DM.SelectInvent.FieldByName('INVTCODE').AsString;
DetailQuery.FieldByName('INVTCODE').AsString:=S;
Exit;
end;
DM.SelectInvent.Next;
end;
DetailQuery.FieldByName('INVTCODE').Clear;
end;
end;}
end;
procedure TMDParentForm.FirstItemClick(Sender: TObject);
begin
ADOQuery1.First;
end;
procedure TMDParentForm.LastItemClick(Sender: TObject);
begin
ADOQuery1.Last;
end;
procedure TMDParentForm.DisableBillItemClick(Sender: TObject);
var S:String;
begin
{S:=MasterQuery.FieldByName('Status').AsString;
if MasterQuery.State=dsBrowse then MasterQuery.Edit;
if S='9' then S:='1' else S:='9';
MasterQuery.FieldByName('Status').AsString:=S;
MasterQuery.Post;
if S='9' then S:='取消作废' else S:='作废单据';
DisableBillItem.Caption:=S;}
end;
procedure TMDParentForm.N1Click(Sender: TObject);
begin
ADOQuery1.Append;
end;
procedure TMDParentForm.N4Click(Sender: TObject);
begin
ADOQuery1.Delete;
end;
procedure TMDParentForm.SetPriceItemClick(Sender: TObject);
begin
{Application.CreateForm(TSetInvtPriceForm,SetInvtPriceForm);
SetInvtPriceForm.DataSource.DataSet:=DetailQuery;
SetInvtPriceForm.ShowModal;
if SetInvtPriceForm.ModalResult=MROK then
begin
end;}
end;
procedure TMDParentForm.GridMenuPopup(Sender: TObject);
begin
//DetailQuery.UpdateRecord;
//SetPriceItem.Enabled:=(DetailQuery.FieldByName('InvtCode').AsString<>'');
end;
procedure TMDParentForm.N13Click(Sender: TObject);
begin
//DetailQuery.RevertRecord;
end;
procedure TMDParentForm.BitBtn1Click(Sender: TObject);
begin
try
Application.CreateForm(TDesignGridForm,DesignGridForm);
DesignGridForm.GridForm:=TForm(GetParentForm(EasyGrid1));
DesignGridForm.CurGrid:=EasyGrid1;
DesignGridForm.ShowModal;
finally
DesignGridForm.Free;
end;
end;
procedure TMDParentForm.BitBtn2Click(Sender: TObject);
begin
//EasyGrid1.SaveToFile('formfile.ffl');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -