home *** CD-ROM | disk | FTP | other *** search
- unit UFlDemo;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
- StdCtrls, ComCtrls, ExtCtrls, ActnList, ImgList, ToolWin, TemplateStore,
- XLSAdapter, UExcelAdapter, OLEAdapter, UFlexCelImport, UFlexcelReport,
- UReport, UFlDemoData, ShellApi, Grids, DBCtrls,
- UFlDemoEdit, UWaitCursor;
-
- type
- TMain = class(TForm)
- ActionList: TActionList;
- ActionClose: TAction;
- ActionReport: TAction;
- ActionUseOle: TAction;
- ActionUseNative: TAction;
- ActionHtml: TAction;
- ActionProtect: TAction;
- ActionViewTemplate: TAction;
- ActionUseTStore: TAction;
- Panel1: TPanel;
- Splitter1: TSplitter;
- ListDemos: TTreeView;
- Tabs: TPageControl;
- TabSheet1: TTabSheet;
- Panel2: TPanel;
- TxtWelcome: TRichEdit;
- TabSheet2: TTabSheet;
- Panel3: TPanel;
- Label3: TLabel;
- TabSheet3: TTabSheet;
- Panel4: TPanel;
- Label2: TLabel;
- TxtSimpleDemo: TRichEdit;
- TabSheet4: TTabSheet;
- Panel5: TPanel;
- Label1: TLabel;
- TxtVarArr: TRichEdit;
- Panel6: TPanel;
- Label4: TLabel;
- TabSheet5: TTabSheet;
- Panel7: TPanel;
- Label5: TLabel;
- TxtDbDemo: TRichEdit;
- Panel8: TPanel;
- Label6: TLabel;
- DBLookupComboBox1: TDBLookupComboBox;
- TabSheet6: TTabSheet;
- Panel9: TPanel;
- Label7: TLabel;
- TxtMultMast: TRichEdit;
- TabSheet7: TTabSheet;
- Panel10: TPanel;
- Label8: TLabel;
- TxtSheets: TRichEdit;
- TabSheet8: TTabSheet;
- TabSheet9: TTabSheet;
- TabSheet10: TTabSheet;
- TabSheet11: TTabSheet;
- TabSheet12: TTabSheet;
- TabSheet13: TTabSheet;
- ToolBar: TToolBar;
- BtnUseNative: TToolButton;
- BtnUseOle: TToolButton;
- ToolButton5: TToolButton;
- BtnHTML: TToolButton;
- BtnProtect: TToolButton;
- BtnUseTStore: TToolButton;
- ToolButton2: TToolButton;
- BtnReport: TToolButton;
- BtnViewTemplate: TToolButton;
- BtnClose: TToolButton;
- StatusBar: TStatusBar;
- Panel11: TPanel;
- Label9: TLabel;
- TxtFishFacts: TRichEdit;
- PageControl1: TPageControl;
- TabSheet15: TTabSheet;
- TabSheet16: TTabSheet;
- GridVarArray1: TStringGrid;
- GridVarArray2: TStringGrid;
- Panel12: TPanel;
- Label10: TLabel;
- TxtPivot: TRichEdit;
- Panel13: TPanel;
- Label11: TLabel;
- TxtEvents: TRichEdit;
- Panel14: TPanel;
- Label12: TLabel;
- TxtCustom: TRichEdit;
- Label13: TLabel;
- edSQL: TMemo;
- Panel15: TPanel;
- Label14: TLabel;
- TxtReadFile: TRichEdit;
- ToolButton1: TToolButton;
- TabSheet17: TTabSheet;
- Panel16: TPanel;
- Label15: TLabel;
- TxtCharts: TRichEdit;
- Panel17: TPanel;
- Label16: TLabel;
- TxtImport: TRichEdit;
- TxtReport: TRichEdit;
- BtnPreview: TToolButton;
- ActionPreview: TAction;
- TabSheet14: TTabSheet;
- Panel18: TPanel;
- Label17: TLabel;
- TxtImgDemo: TRichEdit;
- Panel19: TPanel;
- Label18: TLabel;
- edMyImage: TEdit;
- btnOpenMyImage: TButton;
- procedure FormCreate(Sender: TObject);
- procedure ListDemosChange(Sender: TObject; Node: TTreeNode);
- procedure ActionCloseExecute(Sender: TObject);
- procedure ActionReportUpdate(Sender: TObject);
- procedure ActionUseOleExecute(Sender: TObject);
- procedure ActionHtmlUpdate(Sender: TObject);
- procedure ActionViewTemplateUpdate(Sender: TObject);
- procedure ActionUseTStoreExecute(Sender: TObject);
- procedure ActionUseNativeExecute(Sender: TObject);
- procedure ActionViewTemplateExecute(Sender: TObject);
- procedure ActionReportExecute(Sender: TObject);
- procedure ActionPreviewUpdate(Sender: TObject);
- procedure ActionPreviewExecute(Sender: TObject);
- procedure btnOpenMyImageClick(Sender: TObject);
- private
- DemoEdit: TDemoEdit;
- DlgReport: TReport;
-
- procedure FillGridVarArray(const GridVarArray: TStringGrid);
- procedure DoReport(const Preview: boolean);
- procedure DoImport;
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Main: TMain;
-
- implementation
-
- {$R *.DFM}
-
- procedure TMain.FillGridVarArray(const GridVarArray: TStringGrid);
- var
- i,k: integer;
- begin
- for i:=1 to GridVarArray.ColCount-1 do GridVarArray.Cells[ i , 0]:= chr(ord('A')+i-1);
- for i:=1 to GridVarArray.RowCount-1 do GridVarArray.Cells[ 0 , i]:= IntToStr(i+3);
- for i:=1 to GridVarArray.ColCount-1 do
- for k:=1 to GridVarArray.RowCount-1 do
- GridVarArray.Cells[ i , k]:= IntToStr(Random(5));
- GridVarArray.Cells[3,2]:='FlexCel';
- end;
-
- procedure TMain.FormCreate(Sender: TObject);
- var
- i:integer;
- ExePath: string;
- begin
- try
- for i:=0 to Tabs.PageCount-1 do Tabs.Pages[i].TabVisible:=false;
- ListDemos.FullExpand;
-
- ExePath:=ExtractFilePath(ParamStr(0));
- for i:=0 to ComponentCount-1 do if (Components[i] is TRichEdit) and (copy(Components[i].Name,1,3)='Txt') then
- (Components[i] as TRichEdit).Lines.LoadFromFile( ExePath + copy(Components[i].Name,4,length(Components[i].Name))+'.rtf');
-
-
- FillGridVarArray(GridVarArray1);
- FillGridVarArray(GridVarArray2);
-
- edMyImage.Text:= ExePath+'FlexCel.bmp';
- except
- on e: Exception do
- begin
- Application.ShowException(e);
- ShowMessage('Make sure you have unzipped all the files');
- Application.Terminate;
- end;
- end;//Except
- end;
-
- procedure TMain.ListDemosChange(Sender: TObject; Node: TTreeNode);
- begin
- Tabs.ActivePageIndex:= Node.AbsoluteIndex;
- if Tabs.ActivePage.Tag=4 then DemoData.Cust.Open else DemoData.Cust.Close;
- end;
-
- procedure TMain.ActionCloseExecute(Sender: TObject);
- begin
- Close;
- end;
-
- procedure TMain.DoReport(const Preview: boolean);
- var
- Dlg: TSaveDialog;
- StartTime, EndTime: TDateTime;
- begin
- StatusBar.SimpleText:='';
- //Process Options
- if BtnUseNative.Down then
- DemoData.SetAdapter(DemoData.XLSAdapter) else
- DemoData.SetAdapter(DemoData.OLEAdapter);
-
- DemoData.Protect:= BtnProtect.Down;
-
- //if it's native or HTML, ask the user for a filename
- Dlg:=nil;
- if BtnUseNative.Down then Dlg:=DemoData.XlsSaveDialog
- else if BtnHTML.Down then Dlg:=DemoData.HTMLSaveDialog;
-
- if Dlg<>nil then
- begin
- if not Dlg.Execute then exit;
- DemoData.SetFileName(Dlg.FileName);
- if FileExists(Dlg.FileName) then DeleteFile(Dlg.FileName);
- end;
- Application.ProcessMessages;
-
- if Tabs.ActivePage.Tag=2 then DemoData.FillArrayDemo([GridVarArray1, GridVarArray2]);
- if Tabs.ActivePage.Tag=3 then DemoData.MyImageFilename:=edMyImage.Text;
- if Tabs.ActivePage.Tag=6 then DemoData.Cust.Open;
- DemoData.Cust.Filtered:= Tabs.ActivePage.Tag=6; //So we dont use so many records
- if BtnUseNative.Down then DemoData.RepPivot.Template:='Templates\PivotDemo AutoOpen.xls' else DemoData.RepPivot.Template:='Templates\PivotDemo.xls';
- if Tabs.ActivePage.Tag=11 then DemoData.Ds.SQL:= edSQL.Lines;
-
- {$IFNDEF Excel97}
- DemoData.OLEAdapter.SaveFormatBasic:=[saHtml];
- DemoData.GetReport(Tabs.ActivePage.Tag).AutoClose:= BtnHTML.Down and BtnHTML.Enabled;
- {$ENDIF}
-
-
- //Run the report
- StartTime:=Now;
- DemoData.GetReport(Tabs.ActivePage.Tag).Run;
- EndTime:=Now;
- StatusBar.SimpleText:=Format('Last Report took: %f seconds', [(EndTime-StartTime)*24*3600]);
-
- if Dlg<>nil then
- begin
- if Preview then
- begin
- if DlgReport= nil then DlgReport:=TReport.Create(Self);
- DlgReport.WB.Navigate(Dlg.FileName);
- try
- DlgReport.ShowModal;
- finally
- FreeAndNil(DlgReport); //only way I've seen to free document
- end; //finally
- end
- else
- ShellExecute( Handle,'open', PCHAR(Dlg.FileName), NIL,NIL, SW_SHOW);
- end;
- end;
-
- procedure TMain.DoImport;
- begin
- if not DemoData.OpenDialog.Execute then exit;
- Application.ProcessMessages;
- if BtnUseNative.Down then
- DemoData.SetAdapter(DemoData.XLSAdapter) else
- DemoData.SetAdapter(DemoData.OLEAdapter);
-
- DemoData.XLSAdapter.TemplateStore:=nil;
- try
- DemoData.FlexCelImport.OpenFile(DemoData.OpenDialog.FileName);
- finally
- ActionUseTStore.Execute;
- end;//finally
- try
- if DemoEdit=nil then DemoEdit:=TDemoEdit.Create(Self);
- DemoEdit.FillData;
- DemoEdit.ShowModal;
- finally
- DemoData.FlexCelImport.CloseFile;
- end; //finally
-
- end;
-
- procedure TMain.ActionReportUpdate(Sender: TObject);
- begin
- ActionReport.Enabled:= Tabs.ActivePage.Tag>0;
- if Tabs.ActivePage.Tag<100 then
- begin
- ActionReport.ImageIndex:= 13;
- ActionReport.Caption:='Report !';
- end else
- begin
- ActionReport.ImageIndex:= 0;
- ActionReport.Caption:='Import !';
- end;
- end;
-
- procedure TMain.ActionUseOleExecute(Sender: TObject);
- begin
- //
- end;
-
- procedure TMain.ActionHtmlUpdate(Sender: TObject);
- begin
- ActionUseNative.Checked:= BtnUseNative.Down;
- ActionUseOle.Checked:= BtnUseOle.Down and (Tabs.ActivePage.Tag<100);
- ActionProtect.Enabled:=ActionUseOle.Checked and (Tabs.ActivePage.Tag<100);
- ActionUseTStore.Enabled:=ActionUseNative.Checked and (Tabs.ActivePage.Tag<100);
-
- {$IfDef Excel97}
- ActionHTML.Enabled:=false;
- {$Else}
- ActionHtml.Enabled:=ActionUseOle.Checked and (Tabs.ActivePage.Tag<100);
- {$Endif}
-
- end;
-
- procedure TMain.ActionViewTemplateUpdate(Sender: TObject);
- begin
- ActionViewTemplate.Enabled:=ActionReport.Enabled and (Tabs.ActivePage.Tag<100);
- end;
-
- procedure TMain.ActionUseTStoreExecute(Sender: TObject);
- begin
- if BtnUseTStore.Down then
- DemoData.XLSAdapter.TemplateStore:=DemoData.XlsTemplateStore
- else DemoData.XLSAdapter.TemplateStore:=nil;
- end;
-
- procedure TMain.ActionUseNativeExecute(Sender: TObject);
- begin
- //
- end;
-
- procedure TMain.ActionViewTemplateExecute(Sender: TObject);
- var
- WaitCursor: IWaitCursor;
- begin
- WaitCursor:=TWaitCursor.Create;
- ShellExecute( Handle,'open', PCHAR(ExtractFilePath(Paramstr(0))+DemoData.GetReport(Tabs.ActivePage.Tag).Template), NIL,NIL, SW_SHOW);
- end;
-
- procedure TMain.ActionReportExecute(Sender: TObject);
- var
- WaitCursor: IWaitCursor;
- begin
- WaitCursor:=TWaitCursor.Create;
- if Tabs.ActivePage.Tag<100 then DoReport(false) else DoImport;
- end;
-
- procedure TMain.ActionPreviewUpdate(Sender: TObject);
- begin
- ActionPreview.Enabled:= ActionViewTemplate.Enabled and
- (not BtnUseOle.Down or BtnHTML.Down);
- end;
-
- procedure TMain.ActionPreviewExecute(Sender: TObject);
- var
- WaitCursor: IWaitCursor;
- begin
- WaitCursor:=TWaitCursor.Create;
- DoReport(true);
- end;
-
- procedure TMain.btnOpenMyImageClick(Sender: TObject);
- begin
- if not DemoData.OpenPictureDialog.Execute then exit;
- edMyImage.Text:= DemoData.OpenPictureDialog.FileName;
- end;
-
- end.
-