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

📄 teegried.pas

📁 BCB第三方组件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{**********************************************}
{   TGrid3DSeries Editor Dialog                }
{   Copyright (c) 1996-2007 by David Berneda   }
{**********************************************}
unit TeeGriEd;
{$I TeeDefs.inc}

interface

uses {$IFNDEF LINUX}
     Windows, Messages,
     {$ENDIF}
     SysUtils, Classes,
     {$IFDEF CLX}
     QGraphics, QControls, QForms, QDialogs, QStdCtrls, QExtCtrls, QComCtrls,
     QGrids, QMenus,
     {$ELSE}
     Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, Buttons,
     Grids, Menus,
     {$ENDIF}
     TeeProcs, TeEngine, Chart, TeeSurfa, TeCanvas, TeePenDlg, TeeChartGrid;

type
  TGrid3DSeriesEditor = class(TForm,ITeeEventListener)
    PageControl1: TPageControl;
    TabSingle: TTabSheet;
    BColor: TButtonColor;
    TabRange: TTabSheet;
    BFromColor: TButtonColor;
    BMidColor: TButtonColor;
    BToColor: TButtonColor;
    CheckBox1: TCheckBox;
    Button1: TButton;
    TabPalette: TTabSheet;
    BRemove: TButton;
    Timer1: TTimer;
    Button2: TButton;
    PageControl2: TPageControl;
    TabPaletteSteps: TTabSheet;
    TabSheet2: TTabSheet;
    Label4: TLabel;
    Label3: TLabel;
    Label6: TLabel;
    SEPalette: TEdit;
    UDPalette: TUpDown;
    CBUseMin: TCheckBox;
    EPaletteMin: TEdit;
    EPaletteStep: TEdit;
    Edit1: TEdit;
    UDLegendEvery: TUpDown;
    Panel1: TPanel;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label5: TLabel;
    LDepth: TLabel;
    SEXGrid: TEdit;
    UDXGrid: TUpDown;
    SEZGrid: TEdit;
    UDZGrid: TUpDown;
    EDepth: TEdit;
    UDDepth: TUpDown;
    CBIrreg: TCheckBox;
    ChartGrid1: TChartGrid;
    Label8: TLabel;
    Panel2: TPanel;
    Label2: TLabel;
    CBPalStyle: TComboFlat;
    Label7: TLabel;
    CBPalettes: TComboFlat;
    Button3: TButton;
    PopupMenu1: TPopupMenu;
    Invert1: TMenuItem;
    Button4: TButton;
    procedure FormShow(Sender: TObject);
    procedure SEZGridChange(Sender: TObject);
    procedure SEPaletteChange(Sender: TObject);
    procedure EDepthChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure CBIrregClick(Sender: TObject);
    procedure CBPalStyleChange(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure CBUseMinClick(Sender: TObject);
    procedure EPaletteMinChange(Sender: TObject);
    procedure EPaletteStepChange(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure BMidColorClick(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure BRemoveClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure CBPalettesChange(Sender: TObject);
    procedure ChartGrid1ChangeColor(Sender: TObject);
    procedure ChartGrid1EditingCell(Sender: TCustomChartGrid; ACol,
      ARow: Integer; var Allow: Boolean);
    procedure Button3Click(Sender: TObject);
    procedure Invert1Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
    PaletteSeries : TChartSeries;
    Grid3D        : TCustom3DPaletteSeries;

    procedure CheckMidColor;
    function EditGradientColors(var AStart,AMid,AEnd:TColor;
                                HideTabColors:Boolean):Boolean;
    procedure SetCustomPalette;
    procedure UpdatePalette;

  {$IFDEF CLR}
  protected
  {$ENDIF}
    procedure TeeEvent(Event: TTeeEvent);  { interface }
  protected
    Creating : Boolean;
  public
    { Public declarations }
    class procedure ApplyPalette(Series:TCustom3DPaletteSeries; Index:Integer);
    procedure RefreshControls(AGrid:TCustom3DPaletteSeries);
  end;

Function TeeInsertGrid3DForm(AParent:TControl; AGrid3D:TCustom3DPaletteSeries):TCustomForm;

implementation

{$IFNDEF CLX}
{$IFNDEF LCL}
{$R *.DFM}
{$ENDIF}
{$ELSE}
{$R *.xfm}
{$ENDIF}

Uses
  TeeBrushDlg, TeeConst, TeeProCo, TeeEdiSeri, TeeEdiGrad;

Function TeeInsertGrid3DForm(AParent:TControl; AGrid3D:TCustom3DPaletteSeries):TCustomForm;
begin
  result:=TFormTeeSeries.InsertSeriesForm(AParent,TGrid3DSeriesEditor,
                                                     1,TeeMsg_Grid3D,
                                                     AGrid3D);
end;

{$IFNDEF CLR}
type
  TCustom3DGridSeriesAccess=class(TCustom3DGridSeries);
  TTeePanelAccess=class(TCustomTeePanel);
{$ENDIF}

procedure TGrid3DSeriesEditor.RefreshControls(AGrid:TCustom3DPaletteSeries);
var tmp : Boolean;
begin
  Grid3D:=AGrid;

  if Grid3D is TCustom3DGridSeries then
  With {$IFDEF CLR}Grid3D as TCustom3DGridSeries{$ELSE}TCustom3DGridSeriesAccess(Grid3D){$ENDIF} do
  begin
    UDXGrid.Position:=NumXValues;
    UDZGrid.Position:=NumZValues;
    CBIrreg.Checked :=IrregularGrid;

    // LCL workaround
    tmp:={$IFDEF LCL}TCustom3DGridSeriesAccess(Grid3D).{$ENDIF}CanCreateValues;

    EnableControls(tmp,[UDXGrid,UDZGrid,SEXGrid,SEZGrid]);
  end
  else
  begin
    EnableControls(False,[SEXGrid,SEZGrid,UDXGrid,UDZGrid]);
    CBIrreg.Visible:=False;
  end;

  if Assigned(Grid3D) then
  begin
    With Grid3D do
    begin
      UDDepth.Position:=TimesZOrder;
      UDPalette.Position:=PaletteSteps;

      CBPalStyle.ItemIndex:=Ord(PaletteStyle);
      UpdatePalette;

      if UseColorRange then
         PageControl1.ActivePage:=TabRange
      else
      if UsePalette then
      begin
        PageControl1.ActivePage:=TabPalette;
        PageControl2.ActivePage:=TabPaletteSteps;
      end
      else
         PageControl1.ActivePage:=TabSingle;

      CBUseMin.Checked:=UsePaletteMin;
      EPaletteMin.Text:=FloatToStr(PaletteMin);
      EPaletteMin.Enabled:=UsePaletteMin;
      EPaletteStep.Text:=FloatToStr(PaletteStep);

      UDLegendEvery.Position:=LegendEvery;

      CheckMidColor;
    end;

    BRemove.Enabled:=HasColors(Grid3D);

    BColor.LinkProperty(Grid3D,'SeriesColor'); // Do not localize
    BFromColor.LinkProperty(Grid3D,'StartColor'); // Do not localize
    BMidColor.LinkProperty(Grid3D,'MidColor'); // Do not localize
    BToColor.LinkProperty(Grid3D,'EndColor'); // Do not localize

    if Assigned(Grid3D.ParentChart) then
       {$IFNDEF CLR}TTeePanelAccess{$ENDIF}(Grid3D.ParentChart).Listeners.Add(Self);
  end;
end;

procedure TGrid3DSeriesEditor.FormShow(Sender: TObject);
begin
  RefreshControls(TCustom3DPaletteSeries(Tag));
  Creating:=False;

  // Hack.
  Timer1.Enabled:=True;
end;

procedure TGrid3DSeriesEditor.SEZGridChange(Sender: TObject);
begin
  if not Creating then
  if Grid3D is TCustom3DGridSeries then
  With TCustom3DGridSeries(Grid3D) do
     if (UDXGrid.Position<>NumXValues) or (UDZGrid.Position<>NumZValues) then
        CreateValues(UDXGrid.Position,UDZGrid.Position);
end;

procedure TGrid3DSeriesEditor.SEPaletteChange(Sender: TObject);
begin
  if (not Creating) and UDPalette.Showing then
  begin
    Grid3D.PaletteSteps:=UDPalette.Position;
    UpdatePalette;
  end;
end;

procedure TGrid3DSeriesEditor.EDepthChange(Sender: TObject);
begin
  if not Creating then Grid3D.TimesZOrder:=UDDepth.Position;
end;

procedure TGrid3DSeriesEditor.FormCreate(Sender: TObject);
begin
  Creating:=True;
  Align:=alClient;

  ColorPalettes.AddTo(CBPalettes.Items);

  PaletteSeries:=TChartSeries.Create(nil);
  PaletteSeries.MandatoryValueList.Name:=TeeMsg_UpToValue;

  ChartGrid1.Series:=PaletteSeries;
  ChartGrid1.ShowFields:=False;
  ChartGrid1.EditorMode:=False;
  ChartGrid1.AllowAppend:=False;

  {$IFNDEF CLR}
  ChartGrid1.ColWidths[2]:=90;
  {$ELSE}
  {$IFDEF D10}
  ChartGrid1.ColWidths[2]:=90;
  {$ENDIF}
  {$ENDIF}
end;

procedure TGrid3DSeriesEditor.CBIrregClick(Sender: TObject);
begin
  TCustom3DGridSeries(Grid3D).IrregularGrid:=CBIrreg.Checked
end;

procedure TGrid3DSeriesEditor.CBPalStyleChange(Sender: TObject);
begin
  Grid3D.PaletteStyle:=TTeePaletteStyle(CBPalStyle.ItemIndex);
  UpdatePalette;
end;

procedure TGrid3DSeriesEditor.UpdatePalette;
var t : Integer;
begin
  CBPalettes.Enabled:=Grid3D.PaletteStyle=psCustom;
  ChartGrid1.ReadOnly:=not CBPalettes.Enabled;

  if (Grid3D.PaletteStyle<>psCustom) and (Length(Grid3D.Palette)=0) then
     Grid3D.CreateDefaultPalette;

  PaletteSeries.Clear;
  for t:=0 to Length(Grid3D.Palette)-1 do
      PaletteSeries.Add(Grid3D.Palette[t].UpToValue,'',Grid3D.Palette[t].Color);

  ChartGrid1.RecalcDimensions;
  ChartGrid1.Invalidate;
end;

procedure TGrid3DSeriesEditor.FormDestroy(Sender: TObject);
begin
  PaletteSeries.Free;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -