unit ZJJLFme; interface uses ZJJLDm, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, DBCtrls, Mask, JimLabels, DB, ComCtrls, ToolWin, ActnList, ZjGridDBA, ZJGrid, dxBar; type TZJJLFrame = class(TFrame) labTitle: TJimGradLabel; alBGL: TActionList; actnGenerate: TAction; pnlTop: TPanel; pnlButton: TPanel; tobaTop: TToolBar; tobtnGenerate: TToolButton; lePreText: TLabeledEdit; zaZJJL: TZjGridDBA; pnlZJJL: TPanel; zgZJJL: TZJGrid; pnlListTitle: TPanel; pnlListBar: TPanel; lblListTitle: TLabel; pnlZJJLProperty: TPanel; pnlDataTitle: TPanel; lblDataTiel: TLabel; pnlDataBar: TPanel; dxpmZJJL: TdxBarPopupMenu; rgType: TRadioGroup; actnLocateBills: TAction; procedure actnGenerateExecute(Sender: TObject); procedure lePreTextExit(Sender: TObject); procedure zgZJJLMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure dxpmZJJLPopup(Sender: TObject); procedure actnLocateBillsExecute(Sender: TObject); procedure actnLocateBillsUpdate(Sender: TObject); private FZJJLData: TZJJLData; FDataReadOnly: Boolean; procedure SetDataReadOnly(const Value: Boolean); public constructor Create(AParent: TFrame; AZJJLData: TZJJLData); destructor Destroy; override; procedure ResetFrameLink(AZJJLData: TZJJLData); property DataReadOnly: Boolean read FDataReadOnly write SetDataReadOnly; end; implementation uses MergeTextFrm, PhaseData, MainFrm, ProjectData, UtilMethods; {$R *.dfm} { TZJJLFrame } constructor TZJJLFrame.Create(AParent: TFrame; AZJJLData: TZJJLData); begin inherited Create(AParent); ResetFrameLink(AZJJLData); with TProjectData(TPhaseData(FZJJLData.PhaseData).ProjectData) do lePreText.Text := ProjProperties.ZJJLPreText; end; destructor TZJJLFrame.Destroy; begin inherited; end; procedure TZJJLFrame.ResetFrameLink(AZJJLData: TZJJLData); begin FZJJLData := AZJJLData; zaZJJL.DataSet := FZJJLData.cdsZJJLView; AlignControl(FZJJLData.DetailGrid, pnlZJJLProperty, alClient); end; procedure TZJJLFrame.actnGenerateExecute(Sender: TObject); begin with TProjectData(TPhaseData(FZJJLData.PhaseData).ProjectData) do ProjProperties.ZJJLPreText := lePreText.Text; if rgType.ItemIndex = 0 then FZJJLData.GenerateAll else if rgType.ItemIndex = 1 then FZJJLData.GenerateAllByB_Code; FZJJLData.AssignedCurData; end; procedure TZJJLFrame.lePreTextExit(Sender: TObject); begin with TProjectData(TPhaseData(FZJJLData.PhaseData).ProjectData) do ProjProperties.ZJJLPreText := lePreText.Text; end; procedure TZJJLFrame.SetDataReadOnly(const Value: Boolean); begin FDataReadOnly := Value; actnGenerate.Enabled := not FDataReadOnly; lePreText.Enabled := not FDataReadOnly; rgType.Enabled := not FDataReadOnly; zaZJJL.Column('Code').ReadOnly := FDataReadOnly; zaZJJL.Column('CertificateCode').ReadOnly := FDataReadOnly; end; procedure TZJJLFrame.zgZJJLMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbRight then dxpmZJJL.PopupFromCursorPos else if (ssDouble in Shift) and (zgZJJL.CurCol = 3) then begin if FZJJLData.cdsZJJLView.RecordCount > 0 then FZJJLData.LocateBills; end; end; procedure TZJJLFrame.dxpmZJJLPopup(Sender: TObject); begin SetDxBtnAction(actnLocateBills, MainForm.dxbtnLocateBills); end; procedure TZJJLFrame.actnLocateBillsExecute(Sender: TObject); begin FZJJLData.LocateBills; end; procedure TZJJLFrame.actnLocateBillsUpdate(Sender: TObject); begin TAction(Sender).Enabled := FZJJLData.cdsZJJLView.RecordCount > 0; end; end.