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

📄 frxcharteditor.pas

📁 这个是功能强大的报表软件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
      if DBSourceRB.Checked then
        DataType := dtDBData
      else if BandSourceRB.Checked then
        DataType := dtBandData
      else if FixedDataRB.Checked then
        DataType := dtFixedData;

      if DatabandsCB.ItemIndex <> -1 then
        DataBand := TfrxDataBand(FReport.FindObject(DatabandsCB.Items[DatabandsCB.ItemIndex]))
      else
        DataBand := nil;
      if DatasetsCB.ItemIndex <> -1 then
        DataSet := FReport.GetDataSet(DatasetsCB.Items[DatasetsCB.ItemIndex])
      else
        DataSet := nil;

      Source1 := Values1CB.Text;
      Source2 := Values2CB.Text;
      Source3 := Values3CB.Text;
      Source4 := Values4CB.Text;
      Source5 := Values5CB.Text;
      Source6 := Values6CB.Text;

      SortOrder := TfrxSeriesSortOrder(SortCB.ItemIndex);
      TopN := StrToInt(TopNE.Text);
      TopNCaption := TopNCaptionE.Text;
      XType := TfrxSeriesXType(XTypeCB.ItemIndex);
    end;

  Modified := False;
end;

procedure TfrxChartEditorForm.SetCurSeries(const Value: TfrxSeriesItem);
var
  InspectObj: TPersistent;
begin
  if Modified then
    UpdateSeriesData;
  FCurSeries := Value;

  if FCurSeries = nil then
    InspectObj := FChart.Chart
  else
  begin
    InspectObj := FChart.Chart.Series[FCurSeries.Index];
    UPB.Enabled := FCurSeries.Index > 0;
    DownB.Enabled := (FCurSeries.Index < FChart.Chart.SeriesCount) and (FChart.Chart.SeriesCount <> FCurSeries.Index + 1);
  end;
  FInspector.Inspect([InspectObj]);
  SourcePanel.Visible := FCurSeries <> nil;
  HintL.Visible := not SourcePanel.Visible;
  DeleteB.Visible := FCurSeries <> nil;
  UPB.Visible := (FCurSeries <> nil);
  DownB.Visible := (FCurSeries <> nil);
  ShowSeriesData;
end;

procedure TfrxChartEditorForm.SetModified(const Value: Boolean);
begin
  if not FUpdating then
    FModified := Value;
end;

procedure TfrxChartEditorForm.FillDropDownLists(ds: TfrxDataset);
var
  l: TStringList;
  i: Integer;
begin
  if ds = nil then
  begin
    Values1CB.Items.Clear;
    Values2CB.Items.Clear;
    Values3CB.Items.Clear;
    Values4CB.Items.Clear;
    Values5CB.Items.Clear;
    Values6CB.Items.Clear;
  end
  else
  begin
    l := TStringList.Create;
    try
      ds.GetFieldList(l);
      for i := 0 to l.Count - 1 do
        l[i] := FReport.GetAlias(ds) + '."' + l[i] + '"';

      Values1CB.Items := l;
      Values2CB.Items := l;
      Values3CB.Items := l;
      Values4CB.Items := l;
      Values5CB.Items := l;
      Values6CB.Items := l;
    finally
      l.Free;
    end;
  end;
end;

procedure TfrxChartEditorForm.ChartTreeClick(Sender: TObject);
var
  i: Integer;
begin
  i := ChartTree.Selected.AbsoluteIndex - 1;
  if i >= 0 then
    CurSeries := FChart.SeriesData[i] else
    CurSeries := nil;
end;

{$HINTS OFF}
procedure TfrxChartEditorForm.AddBClick(Sender: TObject);
var
  s: TChartSeries;
  n: TTreeNode;
  b: Boolean;
  ind: Integer;
{$IFDEF Delphi11}
  TeeGalleryForm: TTeeGalleryForm;
  ChartSeriesClass : TChartSeriesClass;
  TeeFunctionClass : TTeeFunctionClass;
{$ENDIF}
begin
  ind := 0;
{$IFDEF TeeChartStd7}
  s := CreateNewSeriesGallery(nil, nil, FChart.Chart, False, False, ind);
{$ELSE}

{$IFDEF Delphi11}
   s := nil;
   TeeGalleryForm := TTeeGalleryForm.Create(nil);
   TeeGalleryForm.Position := poScreenCenter;
   if TeeGalleryForm.ShowModal = mrOk then
     if TeeGalleryForm.ChartGalleryPanel1.GetSeriesClass(ChartSeriesClass, TeeFunctionClass, ind) then
       s := CreateNewSeries(nil, FChart.Chart, ChartSeriesClass, TeeFunctionClass);
{$ELSE}
   s := CreateNewSeriesGallery(nil, nil, FChart.Chart, False, False{$IFNDEF TeeChart4}{$IFDEF TeeChartPro}, ind{$ENDIF}{$ENDIF});
{$ENDIF}

{$ENDIF}
  if s = nil then
    Exit;
  FChart.SeriesData.Add;

  with FChart.Chart do
  begin
    b := not (s is TPieSeries);
    View3DOptions.Orthogonal := b;
    AxisVisible := b;
    View3DWalls := b;
  end;

  n := ChartTree.Items.AddChild(ChartTree.Items[0], GetGallerySeriesName(s) + ' - ' + s.Name);

  n.ImageIndex := 0;
  n.SelectedIndex := 0;
  n.StateIndex := 0;

  ChartTree.Selected := n;

{$IFDEF Delphi11}
   TeeGalleryForm.Free;
{$ENDIF}

  ChartTreeClick(nil);
end;
{$HINTS ON}

procedure TfrxChartEditorForm.DeleteBClick(Sender: TObject);
var
  s: TChartSeries;
begin
  s := FChart.Chart.Series[FCurSeries.Index];
  s.Free;
  FCurSeries.Free;
  ChartTree.Selected.Free;

  ChartTree.SetFocus;
  ChartTree.Selected := ChartTree.Items[0];
  ChartTreeClick(nil);
end;

procedure TfrxChartEditorForm.EditBClick(Sender: TObject);
begin
{$IFDEF TeeChartPro}
  with TChartEditor.Create(nil) do
  begin
    Chart := FChart.Chart;
{$IFDEF TeeChart7}
    if FCurSeries <> nil then
      Series := FChart.Chart.Series[FCurSeries.Index];
{$ENDIF}
{$IFNDEF TeeChart4}
    HideTabs := [cetGeneral, cetTitles, cetPaging, cetSeriesData, cetMain,
      cetExport, {$IFDEF TeeChart7}cetExportNative,{$ENDIF} cetPrintPreview];
    Options := Options - [ceDataSource, ceHelp, ceClone, ceTitle, ceAdd];
{$ENDIF}
    Execute;
    Free;
  end;
{$ENDIF}
end;

procedure TfrxChartEditorForm.DoClick(Sender: TObject);
begin
  if not FUpdating then
    Modified := True;
end;

procedure TfrxChartEditorForm.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
  DoClick(Sender);
end;

procedure TfrxChartEditorForm.DatasetsCBClick(Sender: TObject);
var
  ds: TfrxDataSet;
begin
  ds := FReport.GetDataSet(DatasetsCB.Items[DatasetsCB.ItemIndex]);
  FillDropDownLists(ds);
  DoClick(nil);
end;

procedure TfrxChartEditorForm.DatabandsCBClick(Sender: TObject);
var
  db: TfrxDataBand;
  ds: TfrxDataSet;
begin
  db := TfrxDataBand(FReport.FindObject(DatabandsCB.Items[DatabandsCB.ItemIndex]));
  if db <> nil then
    ds := db.DataSet
  else
    ds := nil;
  FillDropDownLists(ds);
  DoClick(nil);
end;

procedure TfrxChartEditorForm.DBSourceRBClick(Sender: TObject);
begin
  DatasetsCB.ItemIndex := -1;
  DatabandsCB.ItemIndex := -1;
  FillDropDownLists(nil);
  DoClick(nil);
end;

procedure TfrxChartEditorForm.OkBClick(Sender: TObject);
begin
  FInspector.FormDeactivate(nil);
  CurSeries := nil;
end;

procedure TfrxChartEditorForm.FormCreate(Sender: TObject);
begin
  Caption := frxGet(4100);
  OkB.Caption := frxGet(1);
  CancelB.Caption := frxGet(2);
  AddB.Hint := frxGet(4101);
  DeleteB.Hint := frxGet(4102);
  EditB.Hint := frxGet(4103);

  DatasourceGB.Caption := frxGet(4107);
  DBSourceRB.Caption := frxGet(4106);
  BandSourceRB.Caption := frxGet(4104);
  FixedDataRB.Caption := frxGet(4105);

  ValuesGB.Caption := frxGet(4108);
  HintL.Caption := frxGet(4109);

  OptionsGB.Caption := frxGet(4114);
  ShowTopLbl.Caption := frxGet(4115);
  CaptionLbl.Caption := frxGet(4116);
  SortLbl.Caption := frxGet(4117);
  XLbl.Caption := frxGet(4126);

  XTypeCB.Items.Clear;
  XTypeCB.Items.Add(frxResources.Get('chxtText'));
  XTypeCB.Items.Add(frxResources.Get('chxtNumber'));
  XTypeCB.Items.Add(frxResources.Get('chxtDate'));
  SortCB.Items.Clear;
  SortCB.Items.Add(frxResources.Get('chsoNone'));
  SortCB.Items.Add(frxResources.Get('chsoAscending'));
  SortCB.Items.Add(frxResources.Get('chsoDescending'));
  if UseRightToLeftAlignment then
    FlipChildren(True);
end;

procedure TfrxChartEditorForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_F1 then
    frxResources.Help(Self);
end;

procedure TfrxChartEditorForm.ChartTreeEdited(Sender: TObject;
  Node: TTreeNode; var S: String);
var
  Ser: TChartSeries;
begin
  if FCurSeries <> nil then
  begin
    Ser := FChart.Chart.Series[FCurSeries.Index];
    Ser.Name := S;
    S := GetGallerySeriesName(Ser) + ' - ' + Ser.Name;
  end;
end;

procedure TfrxChartEditorForm.ChartTreeEditing(Sender: TObject;
  Node: TTreeNode; var AllowEdit: Boolean);
var
 FEditHandle: HWND;
begin
  if Node.Parent = nil then
  begin
    AllowEdit := False;
    exit;
  end;
  FEditHandle := HWND( SendMessage(ChartTree.Handle, $110F, 0, 0) );
  if (FCurSeries <> nil) and (FEditHandle <> 0) then
    Windows.SetWindowText(FEditHandle, PChar(FChart.Chart.Series[FCurSeries.Index].Name));
end;

procedure TfrxChartEditorForm.UPBClick(Sender: TObject);
var
  tNode: TTreeNode;
  idx: Integer;
begin
  idx := FCurSeries.Index;
  FChart.Chart.SeriesUp(FChart.Chart.Series[idx]);
  FChart.SeriesData.Items[idx].Index := idx - 1;
  
  with ChartTree.Items.GetFirstNode do
  begin
    tNode := Item[idx - 1];
    Item[idx].MoveTo(tNode, naInsert);
    ChartTree.Selected := Item[idx - 1];
  end;

  ChartTree.SetFocus;
  ChartTreeClick(nil);
end;

procedure TfrxChartEditorForm.DownBClick(Sender: TObject);
var
  tNode: TTreeNode;
  idx: Integer;
begin
  idx := FCurSeries.Index;
  FChart.Chart.SeriesDown(FChart.Chart.Series[idx]);
  FChart.SeriesData.Items[idx].Index := idx + 1;

  with ChartTree.Items.GetFirstNode do
  begin
    if idx + 2 = Count then
      Item[idx].MoveTo(ChartTree.Items.GetFirstNode, naAddChild)
    else
    begin
      tNode := Item[idx + 2];
      Item[idx].MoveTo(tNode, naInsert);
    end;
    ChartTree.Selected := Item[idx + 1];
  end;

  ChartTree.SetFocus;
  ChartTreeClick(nil);
end;

initialization
  frxComponentEditors.Register(TfrxChartView, TfrxChartEditor);
  frxHideProperties(TChart, 'Align;AllowPanning;AllowZoom;Anchors;AnimatedZoom;' +
    'AnimatedZoomSteps;AutoSize;BackImage;BackImageInside;BackImageMode;' +
    'BevelInner;BevelOuter;BevelWidth;BorderStyle;BorderWidth;ClipPoints;Color;' +
    'Constraints;Cursor;DragCursor;DragKind;DragMode;DockSite;Enabled;Foot;Frame;Height;' +
    'HelpContext;HelpType;HelpKeyword;Hint;Left;Locked;MarginBottom;MarginLeft;MarginRight;MarginTop;' +
    'MaxPointsPerPage;Name;Page;ParentColor;ParentShowHint;PopupMenu;PrintProportional;' +
    'ScaleLastPage;ScrollMouseButton;SeriesList;ShowHint;TabOrder;TabStop;Tag;Top;UseDockManager;' +
    'Visible;Width');
  frxHideProperties(TChartSeries, 'ColorSource;Cursor;DataSource;Name;' +
    'ParentChart;Tag;XLabelsSource');
  frxHideProperties(TfrxChartView, 'SeriesData;BrushStyle');


end.

⌨️ 快捷键说明

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