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

📄 teeeditcha.pas

📁 Delphi TeeChartPro.6.01的源代码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    tmpSeries:=Chart.GetASeries;
    With TFormTee3D(Tab3D.Controls[0]) do
    begin
      AllowRotation:=TheChart.Canvas.SupportsFullRotation or
                     (not Assigned(tmpSeries)) or
                     (not (tmpSeries is TPieSeries));
      CheckRotation;
    end;
  end;
end;

procedure TChartEditForm.BCloseClick(Sender: TObject);
begin
  ModalResult:=mrCancel;
end;

procedure TChartEditForm.BMoveUPClick(Sender: TObject);
begin
  LBSeries.MoveCurrentUp;
end;

procedure TChartEditForm.BMoveDownClick(Sender: TObject);
begin
  LBSeries.MoveCurrentDown;
end;

procedure TChartEditForm.BAddSeriesClick(Sender: TObject);
var tmpSeries : TChartSeries;
begin
  tmpSeries:=LBSeries.AddSeriesGallery;
  if Assigned(tmpSeries) and Assigned(tmpSeries.FunctionType) then
  begin
    TheSeries:=tmpSeries;
    MainPage.ActivePage:=TabSeries;
    SetTabSeries;
    With TheFormSeries do
    begin
      PageSeries.ActivePage:=TabDataSource;
      PageSeriesChange(Self);
      CBDataSourcestyleChange(Self);
    end;
  end;
end;

procedure TChartEditForm.BDeleteSeriesClick(Sender: TObject);
begin
  LBSeries.DeleteSeries;
  if Assigned(TheFormSeries) then
  begin
    TheFormSeries.TheSeries:=nil;
    TheFormSeries.DestroySeriesForms;
    TheFormSeries.TheSeries:=Self.LBSeries.SelectedSeries;
  end;
end;

procedure TChartEditForm.BRenameSeriesClick(Sender: TObject);
begin
  LBSeries.RenameSeries;
  if (Parent=nil) and LBSeries.CanFocus then ActiveControl:=LBSeries; { 5.01 }
end;

procedure TChartEditForm.BCloneSeriesClick(Sender: TObject);
begin
  LBSeries.CloneSeries;
end;

procedure TChartEditForm.SetTabSeries;
begin
  if Assigned(TheFormSeries) then
  begin
    TheFormSeries.TheSeries:=LBSeries.SelectedSeries;
  end
  else
  begin
    TheFormSeries:=TFormTeeSeries.Create(Self);
    With TheFormSeries do
    begin
      Self.LBSeries.OtherItems:=CBSeries.Items;
      TheListBox:=Self.LBSeries;
      BorderIcons:=[];
      BorderStyle:=TeeFormBorderStyle;
      Parent:=TabSeries;
      Align:=alClient;
      ShowTabDataSource:=ceDataSource in EditorOptions;
      ShowTabGeneral:=not (cetSeriesGeneral in TheHiddenTabs);
      ShowTabMarks:=not (cetSeriesMarks in TheHiddenTabs);
      IsDssGraph:=Self.IsDssGraph;
      TheSeries:=Self.LBSeries.SelectedSeries;
      Self.LBSeries.FillSeries(TheSeries);

      {$IFDEF CLX}
      TeeFixParentedForm(TheFormSeries);
      {$ENDIF}
      Show;
    end;

    TeeTranslateControl(TheFormSeries);
  end;
  TheFormSeries.SetCBSeries;
end;

procedure TChartEditForm.GridMouseDown(Sender: TObject;
                                Button: TMouseButton; Shift: TShiftState;
                                X, Y: Integer);
begin
  if (Button=mbRight) and (ssAlt in Shift) then
     if (Chart.SeriesCount>0) and Chart[0].HasZValues then
     with (Sender as TChartGrid) do
          Grid3DMode:=not Grid3DMode;
end;

procedure TChartEditForm.MainPageChange(Sender: TObject);

  Procedure SetTabPrint;
  begin
    if not Assigned(FPreview) then
    begin
      Screen.Cursor:=crHourGlass;
      try
        FPreview:=TChartPreview.Create(Self);
        with FPreview do
        begin
          GBMargins.Visible:=False;
          PanelMargins.Visible:=False;
          BClose.Visible:=False;
          Align:=alClient;
        end;
        AddFormTo(FPreview,TabPrint,Integer(Chart));
      finally
        Screen.Cursor:=crDefault;
      end;
    end
    else FPreview.TeePreviewPanel1.Invalidate; // 5.03
  end;

  Procedure SetTabTools;
  var tmp     : TFormTeeTools;
      tmpTool : Integer;
  begin
    if TabTools.ControlCount=0 then
    begin
      tmp:=TFormTeeTools.Create(Self);
      tmp.Align:=alClient;
      AddFormTo(tmp,TabTools,Integer(Chart));
      if Assigned(TheTool) then
      begin
        tmpTool:=tmp.LBTools.Items.IndexOfObject(TheTool);
        if tmpTool<>-1 then
        begin
          tmp.LBTools.ItemIndex:=tmpTool;
          tmp.LBToolsClick(Self);
        end;
        TheTool:=nil;
      end;
    end
    else  // Refresh the tool form, if any...
      TFormTeeTools(TabTools.Controls[0]).Reload;
  end;

  Procedure SetTabExport;
  var tmp : TTeeExportForm;
  begin
    if TabExport.ControlCount=0 then
    begin
      tmp:=TTeeExportForm.Create(Self);
      AddFormTo(tmp,TabExport,Integer(Chart));
      with tmp do
      begin
        Align:=alClient;
        BClose.Visible:=False;
      end;
    end
    else tmp:=TTeeExportForm(TabExport.Controls[0]);

    with tmp do
    begin
      CBFileSize.Checked:=False;
      EnableButtons;
    end;
  end;

  Procedure SetTabData;
  begin
    with ChartGrid1 do
    begin
      Chart:=Self.Chart;

      ShowColors:=(Chart.SeriesCount>0) and HasColors(Chart[0]);
      RecalcDimensions;

      SBGridCol.Down:=ShowColors;
      SBGridText.Down:=ShowLabels;
      SBGrid3D.Down:=Grid3DMode;
      SBGrid3D.Enabled:=(Chart.SeriesCount>0) and Chart[0].HasZValues;
      SBGridX.Down:=(Chart.SeriesCount>0) and HasNoMandatoryValues(Chart[0]);

      {$IFNDEF TEEOCX}
      SetFocus;
      {$ENDIF}
      OnMouseDown:=GridMouseDown;
    end;
  end;

begin
  {$IFDEF D5}
  if HighLightTabs then MainPage.ActivePage.HighLighted:=True;
  {$ENDIF}

  if MainPage.ActivePage=TabSeries then SetTabSeries
  else
  if MainPage.ActivePage=TabData then SetTabData
  else
  if MainPage.ActivePage=TabTools then SetTabTools
  else
  if MainPage.ActivePage=TabExport then SetTabExport
  else
  if MainPage.ActivePage=TabPrint then SetTabPrint
  {$IFDEF CLX}
  // Workaround for CLX ListBox MultiSelect + ItemIndex=-1 bug
  else
  if MainPage.ActivePage=TabChart then
    if (not LBSeries.Focused) and (LBSeries.CanFocus) then
    begin
      LBSeries.SetFocus;
      LBSeriesRefreshButtons(LBSeries);
    end;
  {$ENDIF}
end;

{$IFNDEF CLX}
procedure TChartEditForm.WMHelp(var Message: TWMHelp);
var Control : TWinControl;
begin
  if biHelp in BorderIcons then
  with Message.HelpInfo^ do
  begin
    if iContextType = HELPINFO_WINDOW then
    begin
      Control := FindControl(hItemHandle);
      while Assigned(Control) and (Control.HelpContext = 0) do
        Control := Control.Parent;
      if Assigned(Control) then
         Application.HelpContext(Control.HelpContext);
    end;
  end
  else inherited;
end;
{$ENDIF}

procedure TChartEditForm.SetChart(Value:TCustomChart);
begin
  TheChart:=Value;
  if Assigned(TheChart) then TheChart.FreeNotification(Self);
  LBSeries.Chart:=TheChart;
  MainPage.Enabled:=Assigned(TheChart);
  SubPage.Enabled:=Assigned(TheChart);

  {$IFNDEF LINUX}
  if Assigned(TheChart) then
  begin
    if not RememberPosition then
       RememberPosition:=(csDesigning in TheChart.ComponentState);

    if RememberPosition then
    begin
      with TRegistry.Create do
      try
        if OpenKeyReadOnly(TeeMsg_EditorKey) then
        if ValueExists('Left') then
        begin
          Self.Position:=poDesigned;
          Self.Left:=Math.Max(0,ReadInteger('Left'));
          Self.Top:=Math.Max(0,ReadInteger('Top'));
        end;
      finally
        Free;
      end;
    end;
  end;
  {$ENDIF}
end;

procedure TChartEditForm.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  {$IFNDEF LINUX}
  if Assigned(Chart) and RememberPosition then
  begin
    with TRegistry.Create do
    try
      if OpenKey(TeeMsg_EditorKey,True) then
      begin
        WriteInteger('Left',Self.Left);
        WriteInteger('Top',Self.Top);
      end;
    finally
      Free;
    end;
  end;
  {$ENDIF}

  if Assigned(TheFormSeries) then
  begin
    TheFormSeries.FormCloseQuery(Sender,CanClose);
    if CanClose then Close;
  end;
end;

procedure TChartEditForm.LBSeriesEditSeries(Sender: TChartListBox;
  Index: Integer);
begin
  if LBSeries.ItemIndex<>-1 then
  begin
    MainPage.ActivePage:=TabSeries;
    {$IFNDEF CLX}
    SetTabSeries;
    {$ENDIF}
  end;
end;

procedure TChartEditForm.LBSeriesOtherItemsChange(Sender: TObject);
begin
  if Assigned(TheFormSeries) then
     TheFormSeries.CBSeries.ItemIndex:=LBSeries.ItemIndex;
end;

procedure TChartEditForm.LBSeriesRefreshButtons(Sender: TObject);
var tmp          : Boolean;
    tmpInherited : Boolean;
    tmpSeries    : TChartSeries;
begin
  tmp:=(Chart.SeriesCount>0) and (LBSeries.ItemIndex<>-1);
  if tmp then tmpSeries:=Chart.Series[LBSeries.ItemIndex]
         else tmpSeries:=nil;
  tmpInherited:=tmp and (csAncestor in tmpSeries.ComponentState);
  BAddSeries.Enabled:=(ceAdd in EditorOptions);
  BDeleteSeries.Enabled:= tmp and
                          (not tmpInherited) and
                          (ceDelete in EditorOptions)
                          and
                          (not (tssIsTemplate in tmpSeries.Style)) and
                          (not (tssDenyDelete in tmpSeries.Style)) ;
  BRenameSeries.Enabled:=tmp and (LBSeries.SelCount<2) and (ceTitle in EditorOptions);
  BChangeTypeSeries.Enabled:= tmp and
                              (not tmpInherited) and
                              (ceChange in EditorOptions)
                              and
                              (not (tssDenyChangeType in tmpSeries.Style));
  BCloneSeries.Enabled:= tmp and
                         (LBSeries.SelCount<2) and
                         (ceClone in EditorOptions)
                         and
                         (not (tssIsTemplate in tmpSeries.Style)) and
                         (not (tssDenyClone in tmpSeries.Style));

  if tmp and (LBSeries.SelCount<=1) then
  begin
    BMoveDown.Enabled:=LBSeries.ItemIndex<LBSeries.Items.Count-1;
    BMoveUp.Enabled:=LBSeries.ItemIndex>0;
  end
  else
  begin
    BMoveDown.Enabled:=False;
    BMoveUp.Enabled:=False;
  end;
end;

procedure TChartEditForm.BChangeTypeSeriesClick(Sender: TObject);
begin
  LBSeries.ChangeTypeSeries(Self);
  if Assigned(TheFormSeries) then
  begin
    TheFormSeries.DestroySeriesForms;
    TheFormSeries.TheSeries:=LBSeries.SelectedSeries; { 5.01 }
  end;
end;

procedure TChartEditForm.LabelWWWClick(Sender: TObject);
begin
  GotoURL(Handle,LabelWWW.Caption);
end;

procedure TChartEditForm.ButtonHelpClick(Sender: TObject);
begin
  {$IFNDEF CLX}
  Application.HelpCommand(HELP_CONTEXT, HelpContext);
  {$ENDIF}
end;

procedure TChartEditForm.MainPageChanging(Sender: TObject;
  var AllowChange: Boolean);
begin
  if Assigned(TheFormSeries) then
     TheFormSeries.PageSeriesChanging(Self,AllowChange)
  else
     AllowChange:=True;

  {$IFDEF D5}
  if AllowChange and HighLightTabs then MainPage.ActivePage.HighLighted:=False;
  {$ENDIF}
end;

procedure TChartEditForm.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited;
  if (Operation=opRemove) and Assigned(TheChart) and (AComponent=TheChart) then
     TheChart:=nil;
end;

procedure TChartEditForm.SubPageChanging(Sender: TObject;
  var AllowChange: Boolean);
begin
  {$IFDEF D5}
  if HighLightTabs then SubPage.ActivePage.Highlighted:=False;
  {$ENDIF}
end;

procedure TChartEditForm.SBGridTextClick(Sender: TObject);
begin
  ChartGrid1.ShowLabels:=SBGridText.Down;
end;

procedure TChartEditForm.SBGridColClick(Sender: TObject);
begin
  ChartGrid1.ShowColors:=SBGridCol.Down;
end;

procedure TChartEditForm.SBGrid3DClick(Sender: TObject);
begin
  ChartGrid1.Grid3DMode:=SBGrid3D.Down;
end;

procedure TChartEditForm.SBGridXClick(Sender: TObject);
begin
  if SBGridX.Down then
     ChartGrid1.ShowXValues:=cgsYes
  else
     ChartGrid1.ShowXValues:=cgsNo
end;

procedure TChartEditForm.ChartGrid1SetEditText(Sender: TObject; ACol,
  ARow: Integer; const Value: String);
begin
  if Assigned(ChartGrid1.Series) then
     ChartGrid1.Series.RefreshSeries;  // else ?
end;

procedure TChartEditForm.Deleterow1Click(Sender: TObject);
begin
  ChartGrid1.Delete
end;

initialization
  RegisterClass(TChartEditForm);
end.

⌨️ 快捷键说明

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