📄 teeexpform.pas
字号:
{********************************************}
{ TeeChart Wizard }
{ Copyright (c) 1995-2004 by David Berneda }
{ All Rights Reserved }
{********************************************}
unit TeeExpForm;
{$I TeeDefs.inc}
interface
{$IFNDEF D6}
{$UNDEF TEEENTERPRISE} { Less than Delphi 6, No ADO ! }
{$ENDIF}
{$IFDEF KYLIXOPEN}
{$DEFINE NOUSE_BDE} // No Database in Kylix Open Edition
{$ENDIF}
{$IFDEF NOUSE_BDE}
{$UNDEF TEEENTERPRISE} { No ADO in Delphi or BCB Standard versions! }
{$ENDIF}
{$IFDEF D6}
{$WARN SYMBOL_PLATFORM OFF}
{$WARN UNIT_PLATFORM OFF}
{$ENDIF}
uses
{$IFNDEF LINUX}
Windows, Messages,
{$ENDIF}
SysUtils, Classes,
{$IFDEF CLX}
QGraphics, QControls, QForms, QDialogs, QExtCtrls, QStdCtrls, QComCtrls,
QButtons,
{$ELSE}
Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ComCtrls,
Buttons,
FileCtrl,
{$IFNDEF NOUSE_BDE}
{$IFNDEF TEELITE}
DBCtrls,
{$ENDIF}
DBTables,
{$IFDEF CLX}
QDBCtrls,
{$ENDIF}
{$ENDIF}
{$ENDIF}
TeEngine, Chart,
{$IFNDEF NOUSE_BDE}
DBChart, DB,
{$IFDEF TEEENTERPRISE}
ADODB, ADOInt, { 5.01 }
{$ENDIF}
{$ENDIF}
TeeGalleryPanel, TeeProcs, TeeConst, TeeSelectList, TeCanvas;
type
TTeeDlgWizard = class(TForm)
PageControl: TPageControl;
TabStyle: TTabSheet;
TableName: TTabSheet;
Label3: TLabel;
Buttons: TTabSheet;
Label2: TLabel;
TabSheet1: TTabSheet;
Label4: TLabel;
TabSheet2: TTabSheet;
Panel1: TPanel;
Panel2: TPanel;
Label6: TLabel;
cbLabelsFields: TComboFlat;
PageControl1: TPageControl;
TabPreviewChart: TTabSheet;
Panel7: TPanel;
CB3DOption: TCheckBox;
CBShowLegendOption: TCheckBox;
CBShowMarksOption: TCheckBox;
Panel8: TPanel;
Panel4: TPanel;
Image2: TImage;
LabelURL: TLabel;
Panel5: TPanel;
PrevButton: TButton;
NextButton: TButton;
CancelBtn: TButton;
tmpGallery: TChartGalleryPanel;
RGDatabase: TRadioGroup;
CBAlias: TComboFlat;
Label5: TLabel;
CBTables: TComboFlat;
Image1: TImage;
HelpButton: TButton;
LabelDBStyle: TLabel;
SpeedButton1: TSpeedButton;
CBColorEach: TCheckBox;
LabelAlias: TLabel;
CBDBStyle: TComboFlat;
TabFile: TTabSheet;
BBrowse: TSpeedButton;
RBFile: TRadioButton;
EFile: TEdit;
RBWeb: TRadioButton;
EWeb: TEdit;
Label1: TLabel;
OpenDialog1: TOpenDialog;
Panel3: TPanel;
RG3D: TRadioGroup;
CBSmooth: TCheckBox;
BTheme: TButton;
procedure FormCreate(Sender: TObject);
procedure CancelClick(Sender: TObject);
procedure PrevClick(Sender: TObject);
procedure NextClick(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure CB3DOptionClick(Sender: TObject);
procedure CBShowLegendOptionClick(Sender: TObject);
procedure CBShowMarksOptionClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure HelpButtonClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure LabelURLClick(Sender: TObject);
procedure RG3DClick(Sender: TObject);
procedure tmpGallerySelectedChart(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure CBTablesChange(Sender: TObject);
procedure CBAliasChange(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure CBDBStyleChange(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure CBColorEachClick(Sender: TObject);
procedure BBrowseClick(Sender: TObject);
procedure RBFileClick(Sender: TObject);
procedure EFileChange(Sender: TObject);
procedure FormResize(Sender: TObject);
procedure CBSmoothClick(Sender: TObject);
procedure BThemeClick(Sender: TObject);
private
{ Private declarations }
LastFolder,
BackupDir : String;
IFields : TSelectListForm;
ThemeClass : TChartThemeClass;
{$IFNDEF NOUSE_BDE}
procedure ChangedList(Sender:TObject);
{$ENDIF}
procedure CheckPreviewOptions;
procedure CreatePreviewChart;
Procedure RefreshAlias;
procedure RefreshButtons;
procedure TryChangeFolder(const S:String);
public
{ Public declarations }
{$IFNDEF NOUSE_BDE}
PreviewChart : TDBChart;
{$IFNDEF CLX}
Table1 : TTable;
{$ENDIF}
{$ELSE}
PreviewChart : TChart;
{$ENDIF}
{$IFNDEF NOUSE_BDE}
{$IFDEF TEEENTERPRISE}
ADOConn : TADOConnection;
ADOQuery : TADOQuery;
{$ENDIF}
{$ENDIF}
procedure CopyPreviewChart(var Chart:TCustomChart);
Procedure CreateSeries( AOwner:TComponent;
AChart:TCustomChart;
{$IFNDEF NOUSE_BDE}
ATable:TDataSet;
{$ENDIF}
ShowData:Boolean );
procedure LoadChart(var Chart:TCustomChart);
Function StyleBDE:Boolean;
end;
const
TeeMsg_WizardTable1 = 'Table1'; { <-- dont translate }
Function TeeSelectFolder(const Caption,Root:String; var Folder:String):Boolean;
implementation
uses {$IFNDEF NOUSE_BDE}
{$IFDEF TEEENTERPRISE}
ADOConEd,
{$ENDIF}
{$ENDIF}
{$IFNDEF LINUX}
Registry,
{$ENDIF}
TeeAbout, TeeStore, TeeURL, Series, TeePenDlg, Math;
{$IFNDEF CLX}
{$R *.DFM}
{$ELSE}
{$R *.xfm}
{$ENDIF}
{ page numbers }
const
pgStyle = 0; { Database vs. Non-Database }
pgTable = 1; { Table name }
pgFields = 2; { Fields }
pgGallery = 3; { Chart Type }
pgPreviewChart= 4; { Preview }
pgFile = 5; { *.tee file selection }
procedure TTeeDlgWizard.CreatePreviewChart;
begin
PreviewChart.Free;
{ Create the Preview Chart }
{$IFNDEF NOUSE_BDE}
PreviewChart:=TDBChart.Create(Self);
{$ELSE}
PreviewChart:=TChart.Create(Self);
{$ENDIF}
with PreviewChart do
begin
Align:=alClient;
AllowPanning:=pmNone;
BackWall.Brush.Color:=clWhite;
Foot.Frame.Hide;
Title.Frame.Hide;
Title.Text.Add({$IFNDEF NOUSE_BDE}'TDBChart'{$ELSE}'TChart'{$ENDIF});
Chart3DPercent:=35;
Zoom.Allow:=False;
BevelOuter:=bvNone;
Parent:=TabPreviewChart;
end;
if Assigned(ThemeClass) then
with ThemeClass.Create(PreviewChart) do
try
Apply;
finally
Free;
end;
end;
Const
TeeMsg_WizardKey='SOFTWARE\Steema Software\TeeChart Pro\Wizard';
{ TTeeDlgWizard }
procedure TTeeDlgWizard.FormCreate(Sender: TObject);
begin
GetDir(0,BackupDir);
CBAlias.Text:=BackupDir;
PageControl.ActivePage:=TabStyle;
RefreshButtons;
Constraints.MinHeight:=Height;
Constraints.MinWidth:=Width;
OpenDialog1.Filter:=TeeMsg_NativeFilter;
CreatePreviewChart;
{ get aboutbox images }
With TTeeAboutForm.Create(Self) do
try
Self.Image1.Picture.Assign(Image2.Picture);
Self.Image2.Picture.Assign(Image1.Picture);
Self.Image1.Transparent:=True;
finally
Free;
end;
{$IFDEF NOUSE_BDE}
RGDatabase.Items.Delete(0);
{$ELSE}
{$IFNDEF CLX}
Table1:=TTable.Create(Self);
{$ENDIF}
{$ENDIF}
SpeedButton1.Visible:=True;
{$IFDEF TEEENTERPRISE}
LabelDBStyle.Visible:=True;
CBDBStyle.Visible:=True;
ADOConn:=TADOConnection.Create(Self);
ADOConn.LoginPrompt:=False;
ADOQuery:=TADOQuery.Create(Self);
ADOQuery.Connection:=ADOConn;
{$ELSE}
LabelDBStyle.Visible:=False;
CBDBStyle.Visible:=False;
{$ENDIF}
CBDBStyle.ItemIndex:=0;
TeeTranslateControl(Self);
{$IFNDEF LINUX}
// Load last file path and url from registry
with TRegistry.Create do
try
if OpenKeyReadOnly(TeeMsg_WizardKey) then
begin
if ValueExists('LastFile') then EFile.Text:=ReadString('LastFile');
if ValueExists('LastURL') then EWeb.Text:=ReadString('LastURL');
if ValueExists('LastFolder') then
begin
LastFolder:=ReadString('LastFolder');
TryChangeFolder(LastFolder);
end;
end;
finally
Free;
end;
{$ENDIF}
CBSmooth.Checked:=tmpGallery.Smooth;
BTheme.Visible:=Assigned(TeeThemeSelectorHook);
end;
procedure TTeeDlgWizard.CancelClick(Sender: TObject);
begin
Close;
end;
procedure TTeeDlgWizard.PrevClick(Sender: TObject);
begin
With PageControl do
case ActivePage.PageIndex of
pgStyle : Exit;
pgFile,
pgTable : ActivePage := Pages[pgStyle];
pgFields : ActivePage := Pages[pgTable];
pgGallery: {$IFNDEF NOUSE_BDE}
if RGDatabase.ItemIndex=0 then ActivePage := Pages[pgFields]
else
{$ENDIF}
ActivePage := Pages[pgStyle];
pgPreviewChart:
if RGDatabase.ItemIndex<>2 then ActivePage := Pages[pgGallery]
else ActivePage := Pages[pgFile];
end;
RefreshButtons;
end;
procedure TTeeDlgWizard.NextClick(Sender: TObject);
Procedure ActiveGallery;
begin
{ basic chart types... }
With tmpGallery do
if Charts.Count=0 then
begin
FunctionsVisible:=False;
CreateChartList([ TLineSeries,
TBarSeries,
THorizBarSeries,
TAreaSeries,
THorizAreaSeries,
TPointSeries,
TPieSeries,
TFastLineSeries ]);
end;
PageControl.ActivePage:=PageControl.Pages[pgGallery];
if PreviewChart.View3D then RG3D.ItemIndex:=1
else RG3D.ItemIndex:=0;
end;
{$IFNDEF NOUSE_BDE}
var t : Integer;
tmpData : TDataSet;
{$ENDIF}
{$IFDEF CLR}
var tmpChart : TCustomChart;
{$ENDIF}
begin
case PageControl.ActivePage.PageIndex of
pgStyle: {$IFNDEF NOUSE_BDE}
if RGDatabase.ItemIndex=0 then { init table selection }
begin
PageControl.ActivePage := PageControl.Pages[pgTable];
RefreshAlias;
CBAliasChange(Self);
end
else
if RGDatabase.ItemIndex=1 then
{$ELSE}
if RGDatabase.ItemIndex=0 then
{$ENDIF}
ActiveGallery
else
PageControl.ActivePage := PageControl.Pages[pgFile];
pgTable: begin
{$IFNDEF NOUSE_BDE}
PageControl.ActivePage := PageControl.Pages[pgFields];
{$IFDEF CLX}
tmpData:=nil;
{$ELSE}
if StyleBDE then tmpData:=Table1 else
{$IFDEF TEEENTERPRISE}
tmpData:=ADOQuery
{$ELSE}
tmpData:=nil
{$ENDIF}
;
{$ENDIF}
tmpData.Close;
if StyleBDE then
begin
{$IFNDEF CLX}
Table1.DatabaseName:=CBAlias.Text;
Table1.TableName:=CBTables.Text;
{$ENDIF}
end
{$IFDEF TEEENTERPRISE}
else
begin
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('select * from ['+CBTables.Text+'];');
ADOConn.Open;
end
{$ENDIF}
;
tmpData.FieldDefs.Update;
if not Assigned(IFields) then
begin
IFields:=TSelectListForm.Create(Self);
IFields.OnChange:=ChangedList;
AddFormTo(IFields,Panel1,0);
end;
IFields.FromList.Clear;
IFields.ToList.Clear;
CBLabelsFields.Clear;
for t:=0 to tmpData.FieldDefs.Count-1 do
With tmpData.FieldDefs[t] do
Case TeeFieldType(DataType) of
tftNumber,
tftDateTime: begin
IFields.FromList.Items.Add(Name);
CBLabelsFields.Items.Add(Name);
end;
tftText: CBLabelsFields.Items.Add(Name);
end;
IFields.EnableButtons;
for t:=0 to PreviewChart.SeriesCount-1 do
PreviewChart.Series[t].DataSource:=nil;
tmpData.Open;
{$ENDIF}
end;
pgFields : ActiveGallery;
pgGallery: tmpGallerySelectedChart(Self);
pgPreviewChart: begin
ModalResult := mrOK;
Exit;
end;
pgFile : begin
CreatePreviewChart;
{$IFDEF CLR}
tmpChart:=TCustomChart(PreviewChart);
LoadChart(tmpChart);
{$ELSE}
LoadChart(TCustomChart(PreviewChart));
{$ENDIF}
PageControl.ActivePage := PageControl.Pages[pgPreviewChart];
CheckPreviewOptions;
end;
end;
RefreshButtons;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -