unit StandardBillsFme; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMenu, ZjGridDBA, ZjGridTreeDBA, ZJGrid, StdCtrls, Buttons, ExtCtrls, StandardLibs, StandardLib, ActnList, dxBar, sdGridDBA, sdGridTreeDBA; type TBillsType = (btXm, btGcl); TStandardBillsFrame = class(TFrame) pnlTop: TPanel; spbtnLibs: TSpeedButton; edtLibName: TEdit; zgBills: TZJGrid; xpm: TXPMenu; ActionList1: TActionList; dxpmStandardBills: TdxBarPopupMenu; actnInsertBillsFromLib: TAction; stdBills: TsdGridTreeDBA; procedure actnInsertBillsFromLibExecute(Sender: TObject); procedure zgBillsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private FStandardLibs: TStandardLibs; FBillsType: TBillsType; procedure SetBillsType(const Value: TBillsType); function GetStandardLib: TStandardLib; procedure AdjustColumnType; public constructor Create(AStandardLibs: TStandardLibs); procedure ConnectStandardLib; property BillsType: TBillsType read FBillsType write SetBillsType; property StandardLib: TStandardLib read GetStandardLib; end; implementation uses SupportUnit, Globals; {$R *.dfm} { TStandBillsFrame } procedure TStandardBillsFrame.AdjustColumnType; procedure AdjustXmColumnType; begin stdBills.Columns.Delete(stdBills.ColumnIndex('B_Code')); end; procedure AdjustGclColumnType; begin stdBills.Columns.Delete(stdBills.ColumnIndex('Code')); end; begin if FBillsType = btXm then AdjustXmColumnType else if FBillsType = btGcl then AdjustGclColumnType; end; procedure TStandardBillsFrame.ConnectStandardLib; begin stdBills.IDTree := StandardLib.StandardBillsData.BillsTree; edtLibName.Text := StandardLib.LibName; end; constructor TStandardBillsFrame.Create(AStandardLibs: TStandardLibs); begin inherited Create(nil); FStandardLibs := AStandardLibs; stdBills.TopLevelBold := False; end; function TStandardBillsFrame.GetStandardLib: TStandardLib; begin case FBillsType of btXm: Result := FStandardLibs.StandardXmLib; btGcl: Result := FStandardLibs.StandardGclLib; end; end; procedure TStandardBillsFrame.SetBillsType(const Value: TBillsType); begin FBillsType := Value; AdjustColumnType; end; procedure TStandardBillsFrame.zgBillsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbRight then dxpmStandardBills.PopupFromCursorPos else if (Button = mbLeft) and (ssDouble in Shift) then actnInsertBillsFromLib.Execute; end; procedure TStandardBillsFrame.actnInsertBillsFromLibExecute( Sender: TObject); begin with OpenProjectManager.CurProjectData.BillsCompileData do if Assigned(stdBills.IDTree.Selected) then AddBillsFromLib(stdBills.IDTree.Selected, BillsType); end; end.