cmoney.pas

来自「Delphi深度探索,Delphi深度探索(第二版)」· PAS 代码 · 共 143 行

PAS
143
字号
{-----------------------------------------------------------------------------
 Unit Name: CMoney
 Author:    hubdog(陈省)
 Email:     hubdog@263.net
 Purpose:   演示Bold开发的高级功能
 History:
            2003-6-28 创建本单元  
-----------------------------------------------------------------------------}


unit CMoney;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BoldAFPDefault, StdCtrls, BoldSubscription, BoldHandles,
  BoldRootedHandles, BoldAbstractListHandle, BoldCursorHandle,
  BoldListHandle, ExtCtrls, BoldNavigatorDefs, BoldNavigator, Grids,
  BoldGrid, Menus, BoldImage;

type
  TFormMain = class(TForm)
    blhPerson: TBoldListHandle;
    lblPerson: TLabel;
    bnPerson: TBoldNavigator;
    bgPerson: TBoldGrid;
    lblAcct: TLabel;
    bnAcct: TBoldNavigator;
    bgAcct: TBoldGrid;
    blhAcct: TBoldListHandle;
    btnAmount: TButton;
    btnPaste: TButton;
    btnLoad: TButton;
    dlgOpen: TOpenDialog;
    biPhoto: TBoldImage;
    btnReport: TButton;
    blhConstraints: TBoldListHandle;
    lbl2: TLabel;
    bg1: TBoldGrid;
    btnQry: TButton;
    edtQry: TEdit;
    lbl1: TLabel;
    bnCategory: TBoldNavigator;
    bgCategory: TBoldGrid;
    blhCategory: TBoldListHandle;
    procedure bgAcctDrawCell(Sender: TObject; Canvas: TCanvas; ACol,
      ARow: Integer; Rect: TRect; State: TGridDrawState);
    procedure btnAmountClick(Sender: TObject);
    procedure btnPasteClick(Sender: TObject);
    procedure btnLoadClick(Sender: TObject);
    procedure btnReportClick(Sender: TObject);
    procedure btnQryClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure EditOCL(Handler:TBoldListHandle);
  end;

var
  FormMain: TFormMain;

implementation

uses CDataModule, MoneyClasses, CReport, BoldOclPropEditor;

{$R *.dfm}

procedure TFormMain.bgAcctDrawCell(Sender: TObject; Canvas: TCanvas; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
var
  AcctItem:TAcctItem;
begin
  if bgAcct.BoldList.Elements[ARow-1] is TAcctItem then
  begin
    AcctItem:=TAcctItem(bgAcct.BoldList.Elements[ARow-1]);
    Canvas.FillRect(rect);
    if AcctItem.Amount>100 then
      Canvas.Font.Color:=clred
    else
      Canvas.Font.Color:=clblue;
    Canvas.TextOut(Rect.Left,Rect.Top, FloatTostr(AcctItem.Amount));
  end;
end;

procedure TFormMain.btnAmountClick(Sender: TObject);
var
  AMount:Currency;
begin
  if blhPerson.CurrentElement is TPerson then
  begin
    AMount:=(blhPerson.CurrentElement as TPerson).GetMonthAmount(2002, 12);
    ShowMessage(floattostr(AMount));
  end;
end;

procedure TFormMain.btnPasteClick(Sender: TObject);
begin
  biPhoto.PasteFromClipboard;
end;

procedure TFormMain.btnLoadClick(Sender: TObject);
begin
   with dlgOpen do
  begin
    if Assigned(biPhoto.Viewer) then
      DefaultExt := biPhoto.Viewer.DefaultExtension;
    if Execute then
      biPhoto.LoadFromFile(FileName);
  end;
end;

procedure TFormMain.btnReportClick(Sender: TObject);
begin
  //打印报表
  ReportMoney.Preview;
end;

procedure TFormMain.btnQryClick(Sender: TObject);
begin
  //查询
  EditOCL(blhPerson);
end;

procedure TFormMain.EditOCL(Handler: TBoldListHandle);
begin
  with TBoldOclPropEditForm.Create(Self) do
  try
    Context := Handler.RootHandle.BoldType;
    OclExpr := Handler.Expression;
    if ShowModal = mrOK then
    begin
      Handler.Expression := OCLExpr;
      edtQry.Text:=OCLExpr;
    end;
  finally
    Free;
  end;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?