⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 teeexpform.pas

📁 TeeChart7Source 控件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{********************************************}
{  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 + -