home *** CD-ROM | disk | FTP | other *** search
- {* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- (c) TechInsite Pty. Ltd.
- PO Box 429, Abbotsford, Melbourne. 3067 Australia
- Phone: +61 3 9419 6456
- Fax: +61 3 9419 1682
- Web: www.techinsite.com.au
- EMail: peter_hinrichsen@techinsite.com.au
-
- Created: October 1999
-
- Notes: View the subject in a grid (using a TListView)
-
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *}
- unit FObserver_Grid;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- ComCtrls, Grids, FObserver_Edit, Menus,
- FObserver_Abstract ;
-
- type
-
- //--------------------------------------------------------
- TFormObserverGrid = class(TFormObserverAbstract)
- LV: TListView;
- MainMenu1: TMainMenu;
- PopupMenu1: TPopupMenu;
- Edit1: TMenuItem;
- Edit2: TMenuItem;
- Edit3: TMenuItem;
- // When the ListView is double clicked, popup an
- // edit dialog (which is also an observer)
- procedure LVDblClick(Sender: TObject);
- // When the form is created, assign the subject pointer
- procedure FormCreate(Sender: TObject);
- private
- public
- // Override the vitrual abstract DataToObserver method
- procedure DataToObserver ; override ;
- end;
-
- var
- FormObserverGrid: TFormObserverGrid;
-
- implementation
- uses
- Subject_Portfolio
- ;
-
- {$R *.DFM}
-
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- // *
- // * TFormObserver1
- // *
- // * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- procedure TFormObserverGrid.DataToObserver;
- var
- i : integer ;
- lListItem : TListItem ;
- lStockTrans : TStockTrans ;
- begin
- LV.Items.Clear ;
- with ( Subject as TPortfolio ) do begin
- // Scan the subject, reading rows of data
- // into the ListView
- for i := 0 to Stocks.Count - 1 do begin
- lStockTrans := Stocks.Items[ i ] ;
- lListItem := LV.Items.Add ;
- lListItem.Caption := lStockTrans.StockCode ;
- lListItem.SubItems.Add( lStockTrans.StockName ) ;
- lListItem.SubItems.Add( IntToStr( lStockTrans.Qty )) ;
- lListItem.SubItems.Add( Format( '%M',
- [lStockTrans.Price] )) ;
- lListItem.SubItems.Add( Format( '%M',
- [lStockTrans.Value] )) ;
- lListItem.Data := lStockTrans ;
- end ;
-
- // Add the Total row
- lListItem := LV.Items.Add ;
- lListItem.Caption := 'Total' ;
- lListItem.SubItems.Add( '' ) ;
- lListItem.SubItems.Add( '' ) ;
- lListItem.SubItems.Add( '' ) ;
- lListItem.SubItems.Add( Format( '%M', [Total] )) ;
-
- end ;
- end;
-
- // When the ListView is bouble clicked, popup an edit
- // dialog, which is also an observer.
- //----------------------------------------------------------
- procedure TFormObserverGrid.LVDblClick(Sender: TObject);
- var
- lFormObserverEdit : TFormObserverEdit ;
- begin
- inherited;
- if LV.Selected = nil then
- exit ; //==>
-
- if TObject( LV.Selected.Data ) = nil then
- exit ; //==>
-
- lFormObserverEdit := TFormObserverEdit.Create( self ) ;
- lFormObserverEdit.Data := ( TObject( LV.Selected.Data ) as TStockTrans ) ;
- lFormObserverEdit.Show ;
- end;
-
- // Attach to the subject when the form is created
- //----------------------------------------------------------
- procedure TFormObserverGrid.FormCreate(Sender: TObject);
- begin
- inherited;
- Subject := gPortfolio ;
- end;
-
- end.
-