📄 frxcharteditor.pas
字号:
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 + -