unit fraBillsItemsFrame; interface uses Windows, SysUtils, Classes, Controls, Forms, ZjGridDBA, ExtCtrls, ZJGrid, DB; type TBillsItemsFrame = class(TFrame) zgItems: TZJGrid; Splitter1: TSplitter; Panel1: TPanel; zgDetailItems: TZJGrid; Splitter2: TSplitter; zgDrawQty: TZJGrid; zaDetailItems: TZjGridDBA; zaDrawQty: TZjGridDBA; zaItems: TZjGridDBA; procedure zgDetailItemsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private FDetailItemsDM: TObject; procedure SetDetailItemsDS(const Value: TDataSet); procedure SetDrawQtyDS(const Value: TDataSet); procedure SetItemsDS(const Value: TDataSet); { Private declarations } public { Public declarations } property ItemsDS: TDataSet write SetItemsDS; property DetailItemsDS: TDataSet write SetDetailItemsDS; property DrawQtyDS: TDataSet write SetDrawQtyDS; property DetailItemsDM: TObject read FDetailItemsDM write FDetailItemsDM; end; implementation {$R *.dfm} uses DetailItemsDM; { TBillsItemsFrame } procedure TBillsItemsFrame.SetDetailItemsDS(const Value: TDataSet); begin zaDetailItems.DataSet := Value; end; procedure TBillsItemsFrame.SetDrawQtyDS(const Value: TDataSet); begin zaDrawQty.DataSet := Value; end; procedure TBillsItemsFrame.SetItemsDS(const Value: TDataSet); begin zaItems.DataSet := Value; end; procedure TBillsItemsFrame.zgDetailItemsMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if (Button = mbLeft) and (ssDouble in Shift) then TDMDetailItems(FDetailItemsDM).LocateBills(zgDetailItems.Cells[1, zgDetailItems.CurRow].Text, zgItems.Cells[1, zgItems.CurRow].Text); end; end.