home *** CD-ROM | disk | FTP | other *** search
- unit Cstchart;
-
- interface
-
- uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Buttons,
- StdCtrls, ExtCtrls, VBXCtrl, Chart2fx, DBTables, DB, DBCtrls;
-
- type
- TfmCustChart = class(TForm)
- Panel1: TPanel;
- BtnPort: TSpeedButton;
- Panel4: TPanel;
- BtnArea: TSpeedButton;
- SpeedButton3: TSpeedButton;
- BtnPie: TSpeedButton;
- SpeedButton6: TSpeedButton;
- SpeedButton7: TSpeedButton;
- SpeedButton8: TSpeedButton;
- Btn3D: TSpeedButton;
- BtnPrint: TSpeedButton;
- Panel2: TPanel;
- Chart: TChartFX;
- DataSrcCust: TDataSource;
- TableCust: TTable;
- ComboName: TComboBox;
- QMaster: TQuery;
- BtnInfo: TSpeedButton;
- BtnBHS: TSpeedButton;
- BtnHML: TSpeedButton;
- BtnABC: TSpeedButton;
- QHoldings: TQuery;
- procedure Btn3DClick(Sender: TObject);
- procedure BtnPrintClick(Sender: TObject);
- procedure GButtonClick(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure BtnPortClick(Sender: TObject);
- procedure BtnInfoClick(Sender: TObject);
- procedure BtnBHSClick(Sender: TObject);
- procedure BtnHMLClick(Sender: TObject);
- procedure BtnABCClick(Sender: TObject);
- procedure ComboNameChange(Sender: TObject);
- private
- AcntNums: TStringList;
- procedure DisplayPortfolio;
- procedure DisplayCategory(const Fld,Cat1,Cat2,Cat3:string);
- procedure QueryHoldings;
- procedure QueryMaster(const Field,Val:string);
- public
- procedure ShowCharts;
- end;
-
- var
- fmCustChart: TfmCustChart;
-
- implementation
-
- {$R *.DFM}
-
- uses Dialogs, CustText, SysUtils, ChartFX;
-
- procedure TfmCustChart.QueryHoldings;
- {gets all records which match the selected customer}
- begin
- QHoldings.Close;
- QHoldings.SQL.Clear;
- QHoldings.SQL.Add('select * from holdings');
- QHoldings.SQL.Add('where Acct_Nbr='+AcntNums[ComboName.ItemIndex]);
- QHoldings.Open;
- end;
-
- procedure TfmCustChart.QueryMaster(const Field,Val:string);
- {gets all records which match the selected customer}
- begin
- QMaster.Close;
- QMaster.SQL.Clear;
- QMaster.SQL.Add('select * from Master');
- QMaster.SQL.Add('where '+Field+'="'+Val+'"');
- QMaster.Open;
- end;
-
-
- procedure TfmCustChart.DisplayPortfolio;
- var Counter: integer;
- begin
- Screen.Cursor := CrHourGlass;
- QueryHoldings;
- with Chart do
- begin
- Visible := false;
- BtnPie.Down := true;
- ChartType := BtnPie.Tag;
- { COD_VALUES defined in ChartFX }
- OpenData[COD_VALUES] := MakeLong(1,QHoldings.RecordCount);
- ThisSerie := 0;
- Counter := 0;
- fmChartText.ClearText;
- fmChartText.AddLine('Current portfolio by company showing');
- fmChartText.AddLine('number of shares and current price');
- fmChartText.AddLine('');
- while not QHoldings.Eof do
- begin
- QueryMaster('SYMBOL',QHoldings.FieldByname('SYMBOL').AsString);
- if QMaster.EOF then
- continue; {symbol not found}
- try
- Value[Counter] := QHoldings.FieldbyName('SHARES').AsInteger
- * QMaster.FieldByname('CUR_Price').AsFloat;
- fmChartText.AddLine(QMaster.FieldByname('CO_NAME').AsString + ' ('+
- QHoldings.FieldByname('SYMBOL').AsString + ') '+
- QHoldings.FieldbyName('SHARES').AsString + ' @ '+
- QMaster.FieldByname('CUR_Price').AsString);
- except
- Value[Counter] := 0;
- end;
- Legend[Counter] := QMaster.FieldByname('CO_NAME').AsString;
- inc(Counter);
- QHoldings.Next;
- end;
- CloseData[COD_VALUES] := 0;
- LegendWidth := 150;
- Title[CHART_TOPFT] := 'Portfolio by Company';
- Visible := true;
- end;
- Screen.Cursor := CrDefault;
- end;
-
- procedure TfmCustChart.DisplayCategory(const Fld,Cat1,Cat2,Cat3:string);
- var
- Count1,Count2,Count3: integer;
- StatusStr: string;
- begin
- Screen.Cursor := CrHourGlass;
- QueryHoldings;
- Count1 := 0;
- Count2 := 0;
- Count3 := 0;
- fmChartText.ClearText;
- fmChartText.AddLine('Current portfolio rated by '+Fld);
- fmChartText.AddLine('');
- while not QHoldings.Eof do
- begin
- try
- QueryMaster('Symbol',QHoldings.FieldByname('SYMBOL').AsString);
- if QMaster.EOF then
- continue; {symbol not found}
- StatusStr := Uppercase(QMaster.FieldByname(FLD).AsString);
- if StatusStr = Cat1 then
- inc(Count1)
- else if StatusStr = Cat2 then
- inc(Count2)
- else if StatusStr = Cat3 then
- inc(Count3);
- fmChartText.AddLine(QMaster.FieldByname('CO_NAME').AsString + ' ('+
- QHoldings.FieldByname('SYMBOL').AsString + ') '+' status '+
- QMaster.FieldByname(FLD).AsString);
- except
- MessageDlg('Error reading stock status',mtError,[mbOK],0);
- end;
- QHoldings.Next;
- end;
- with Chart do
- begin
- Visible := false;
- OpenData[COD_VALUES] := MakeLong(1,3);
- ThisSerie := 0;
- Value[0] := Count1;
- Value[1] := Count2;
- Value[2] := Count3;
- Legend[0] := Cat1;
- Legend[1] := Cat2;
- Legend[2] := Cat3;
- LegendWidth := 150;
- Title[CHART_TOPFT] := 'Holdings by '+Fld;
- CloseData[COD_VALUES] := 0;
- LegendWidth := 75;
- Visible := true;
- end;
- Screen.Cursor := CrDefault;
- end;
-
- procedure TfmCustChart.ShowCharts;
- begin
- AcntNums.Clear;
- ComboName.Items.Clear;
- try
- TableCust.Open;
- while not TableCust.Eof do
- begin
- ComboName.Items.Add(TableCust.Fields[1].AsString+' '+TableCust.Fields[0].AsString);
- AcntNums.Add(TableCust.Fields[2].AsString);
- TableCust.Next;
- end;
- TableCust.First;
- except
- MessageDlg('Error loading customer names',mtError,[mbOk],0);
- end;
- ComboName.ItemIndex := 0;
- DisplayPortfolio;
- BtnPort.Down := true;
- Show;
- end;
-
- procedure TfmCustChart.Btn3DClick(Sender: TObject);
- begin
- Chart.Chart3D := Btn3d.Down;
- end;
-
- procedure TfmCustChart.BtnPrintClick(Sender: TObject);
- begin
- if MessageDlg(' Print this chart?',mtConfirmation,[mbYes,mbNo],0) = mrYes then
- Chart.PrintIt := 0;
- end;
-
- procedure TfmCustChart.GButtonClick(Sender: TObject);
- begin
- Chart.ChartType := (Sender as TSpeedButton).Tag;
- end;
-
- procedure TfmCustChart.FormCreate(Sender: TObject);
- begin
- BtnArea.Down := true;
- Btn3d.Down := true;
- Btn3DClick(nil);
- Chart.ChartType := 6;
- AcntNums := TStringList.Create;
- end;
-
- procedure TfmCustChart.FormDestroy(Sender: TObject);
- begin
- AcntNums.Free;
- end;
-
- procedure TfmCustChart.BtnPortClick(Sender: TObject);
- begin
- DisplayPortfolio;
- end;
-
- procedure TfmCustChart.BtnInfoClick(Sender: TObject);
- begin
- fmChartText.Show;
- end;
-
- procedure TfmCustChart.BtnBHSClick(Sender: TObject);
- begin
- DisplayCategory('RCMNDATION','BUY','HOLD','SELL');
- end;
-
- procedure TfmCustChart.BtnHMLClick(Sender: TObject);
- begin
- DisplayCategory('RISK','HI','MED','LOW');
- end;
-
- procedure TfmCustChart.BtnABCClick(Sender: TObject);
- begin
- DisplayCategory('RATING','A','B','C');
- end;
-
- procedure TfmCustChart.ComboNameChange(Sender: TObject);
- begin
- if BtnPort.Down then
- BtnPortClick(nil)
- else if BtnBHS.Down then
- BtnBHSClick(nil)
- else if BtnHML.Down then
- BtnHMLClick(nil)
- else
- BtnABCClick(nil)
- end;
-
- end.
-