⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mdparent.pas.~9~

📁 delphi制作表格的控件
💻 ~9~
📖 第 1 页 / 共 2 页
字号:
  //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 + -