| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 | 
							- unit BookmarkFme;
 
- interface
 
- uses
 
-   ProjectData, sdDB,
 
-   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 
-   Dialogs, JimPages, ZJGrid, StdCtrls, JimLabels, ExtCtrls, sdGridDBA,
 
-   ActnList, dxBar;
 
- type
 
-   TBookmarkType = (bmtCompile, bmtMeasure);
 
-   TBookmarkFrame = class(TFrame)
 
-     jpsBookmark: TJimPages;
 
-     jpsBookmarkBills: TJimPage;
 
-     jpsBookmarkStage: TJimPage;
 
-     zgBillsBmk: TZJGrid;
 
-     labBillsBmkTitle: TJimGradLabel;
 
-     labStageBmkTitle: TJimGradLabel;
 
-     zgStageBmk: TZJGrid;
 
-     saBillsBMK: TsdGridDBA;
 
-     saStageBMK: TsdGridDBA;
 
-     pnlBillsMarkMemo: TPanel;
 
-     lblBillsMarkMemo: TLabel;
 
-     pnlStageMarkMemo: TPanel;
 
-     lblStageMarkMemo: TLabel;
 
-     mBillsMarkMemo: TMemo;
 
-     mStageMarkMemo: TMemo;
 
-     dxpmBookmark: TdxBarPopupMenu;
 
-     alBookmark: TActionList;
 
-     actnLocateBookmark: TAction;
 
-     procedure zgBillsBmkCurrentChanged(Sender: TObject; Col, Row: Integer);
 
-     procedure zgStageBmkCurrentChanged(Sender: TObject; Col, Row: Integer);
 
-     procedure mBillsMarkMemoExit(Sender: TObject);
 
-     procedure mStageMarkMemoExit(Sender: TObject);
 
-     procedure actnLocateBookmarkUpdate(Sender: TObject);
 
-     procedure actnLocateBookmarkExecute(Sender: TObject);
 
-     procedure zgBillsBmkMouseDown(Sender: TObject; Button: TMouseButton;
 
-       Shift: TShiftState; X, Y: Integer);
 
-     procedure dxpmBookmarkPopup(Sender: TObject);
 
-   private
 
-     FProjectData: TProjectData;
 
-     FBMType: TBookmarkType;
 
-     procedure AssignedBillsMarkMemo(ARow: Integer);
 
-     procedure AssignedStageMarkMemo(ARow: Integer);
 
-     procedure LocateLedgerBookmark;
 
-     procedure LocateMeasureBookmark;
 
-     function GetMemoText(AMemo: TMemo): string;
 
-     procedure SetBMType(const Value: TBookmarkType);
 
-   public
 
-     constructor Create(AProjectFrame: TFrame; AProjectData: TProjectData);
 
-     destructor Destroy; override;
 
-     procedure RefreshMarkMemo;
 
-     property BMType: TBookmarkType read FBMType write SetBMType;
 
-   end;
 
- implementation
 
- uses
 
-   Math, PhaseData, MainFrm, UtilMethods;
 
- {$R *.dfm}
 
- { TBookmarkFrame }
 
- constructor TBookmarkFrame.Create(AProjectFrame: TFrame;
 
-   AProjectData: TProjectData);
 
- begin
 
-   inherited Create(AProjectFrame);
 
-   FProjectData := AProjectData;
 
-   saBillsBMK.DataView := FProjectData.BillsBookmarkData.sdvBillsBookmark;
 
-   AssignedBillsMarkMemo(zgBillsBmk.CurRow);
 
-   saStageBMK.DataView := FProjectData.BillsBookmarkData.sdvStageBookmark;
 
-   AssignedStageMarkMemo(zgStageBmk.CurRow);
 
- end;
 
- destructor TBookmarkFrame.Destroy;
 
- begin
 
-   inherited;
 
- end;
 
- procedure TBookmarkFrame.zgBillsBmkCurrentChanged(Sender: TObject; Col,
 
-   Row: Integer);
 
- begin
 
-   AssignedBillsMarkMemo(Row);
 
- end;
 
- function TBookmarkFrame.GetMemoText(AMemo: TMemo): string;
 
- var
 
-   i: Integer;
 
- begin
 
-   Result := '';
 
-   for i := 0 to AMemo.Lines.Count - 1 do
 
-     Result := Result + AMemo.Lines.Strings[i];
 
- end;
 
- procedure TBookmarkFrame.AssignedBillsMarkMemo(ARow: Integer);
 
- var
 
-   Rec: TsdDataRecord;
 
- begin
 
-   Rec := saBillsBMK.DataView.Records[ARow - 1];
 
-   if (ARow > 0) and Assigned(Rec) then
 
-     mBillsMarkMemo.Text := Rec.ValueByName('MarkMemo').AsString
 
-   else
 
-     mBillsMarkMemo.Text := '';
 
-   mBillsMarkMemo.ReadOnly := not ((ARow > 0) and Assigned(Rec));
 
- end;
 
- procedure TBookmarkFrame.AssignedStageMarkMemo(ARow: Integer);
 
- var
 
-   Rec, StageRec: TsdDataRecord;
 
- begin
 
-   Rec := saStageBMK.DataView.Records[ARow - 1];
 
-   if (ARow > 0) and Assigned(Rec) then
 
-   begin
 
-     StageRec := FProjectData.PhaseData.StageData.StageRecord(Rec.ValueByName('ID').AsInteger);
 
-     mStageMarkMemo.Text := StageRec.ValueByName('MarkMemo').AsString;
 
-   end
 
-   else
 
-     mStageMarkMemo.Text := '';
 
-   mStageMarkMemo.ReadOnly := not ((ARow > 0) and Assigned(Rec));
 
- end;
 
- procedure TBookmarkFrame.zgStageBmkCurrentChanged(Sender: TObject; Col,
 
-   Row: Integer);
 
- begin
 
-   AssignedStageMarkMemo(Row);
 
- end;
 
- procedure TBookmarkFrame.RefreshMarkMemo;
 
- begin
 
-   AssignedBillsMarkMemo(zgBillsBmk.CurRow);
 
-   AssignedStageMarkMemo(zgStageBmk.CurRow);
 
- end;
 
- procedure TBookmarkFrame.mBillsMarkMemoExit(Sender: TObject);
 
- var
 
-   Rec: TsdDataRecord;
 
- begin
 
-   if zgBillsBmk.CurRow = 0 then Exit;
 
-   Rec := saBillsBMK.DataView.Records[zgBillsBmk.CurRow - 1];
 
-   if Assigned(Rec) then
 
-     Rec.ValueByName('MarkMemo').AsString := GetMemoText(mBillsMarkMemo);
 
- end;
 
- procedure TBookmarkFrame.mStageMarkMemoExit(Sender: TObject);
 
- var
 
-   Rec, StageRec: TsdDataRecord;
 
- begin
 
-   if zgStageBmk.CurRow = 0 then Exit;
 
-   Rec := saStageBMK.DataView.Records[zgStageBmk.CurRow - 1];
 
-   if Assigned(Rec) then
 
-   begin
 
-     StageRec := FProjectData.PhaseData.StageData.StageRecord(Rec.ValueByName('ID').AsInteger);
 
-     StageRec.ValueByName('MarkMemo').AsString := GetMemoText(mStageMarkMemo);
 
-   end;
 
- end;
 
- procedure TBookmarkFrame.SetBMType(const Value: TBookmarkType);
 
- begin
 
-   FBMType := Value;
 
-   jpsBookmark.ActivePageIndex := Integer(FBMType);
 
- end;
 
- procedure TBookmarkFrame.actnLocateBookmarkUpdate(Sender: TObject);
 
- begin
 
-   if FBMType = bmtCompile then
 
-     TAction(Sender).Caption := '定位至台账分解'
 
-   else if FBMType = bmtMeasure then
 
-     TAction(Sender).Caption := '定位至计量台账';
 
- end;
 
- procedure TBookmarkFrame.actnLocateBookmarkExecute(Sender: TObject);
 
- begin
 
-   if FBMType = bmtCompile then
 
-     LocateLedgerBookmark
 
-   else if FBMType = bmtMeasure then
 
-     LocateMeasureBookmark;
 
- end;
 
- procedure TBookmarkFrame.LocateLedgerBookmark;
 
- var
 
-   Rec: TsdDataRecord;
 
- begin
 
-   Rec := saBillsBMK.DataView.Current;
 
-   TProjectData(FProjectData).BillsCompileData.sdvBillsCompile.LocateInControl(Rec);
 
- end;
 
- procedure TBookmarkFrame.LocateMeasureBookmark;
 
- var
 
-   Rec: TsdDataRecord;
 
- begin
 
-   Rec := saStageBMK.DataView.Current;
 
-   TProjectData(FProjectData).BillsMeasureData.sdvBillsMeasure.LocateInControl(Rec);
 
- end;
 
- procedure TBookmarkFrame.zgBillsBmkMouseDown(Sender: TObject;
 
-   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 
- begin
 
-   if Button = mbRight then
 
-     dxpmBookmark.PopupFromCursorPos;
 
- end;
 
- procedure TBookmarkFrame.dxpmBookmarkPopup(Sender: TObject);
 
- begin
 
-   SetDxBtnAction(actnLocateBookmark, MainForm.dxbtnLocateBookmark);
 
- end;
 
- end.
 
 
  |