mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 09:56:12 +02:00
TAChart: Make TChartToolset a design-time component
git-svn-id: trunk@24300 -
This commit is contained in:
parent
5b4de80bc0
commit
1a7ff8cf0d
1
.gitattributes
vendored
1
.gitattributes
vendored
@ -2146,6 +2146,7 @@ components/tachart/tasources.pas svneol=native#text/pascal
|
|||||||
components/tachart/tatools.pas svneol=native#text/pascal
|
components/tachart/tatools.pas svneol=native#text/pascal
|
||||||
components/tachart/tatypes.pas svneol=native#text/plain
|
components/tachart/tatypes.pas svneol=native#text/plain
|
||||||
components/tachart/tchart.png -text svneol=unset#images/png
|
components/tachart/tchart.png -text svneol=unset#images/png
|
||||||
|
components/tachart/tcharttoolset.png -text
|
||||||
components/tachart/tdbchartsource.png -text
|
components/tachart/tdbchartsource.png -text
|
||||||
components/tachart/tlistchartsource.png -text svneol=unset#images/png
|
components/tachart/tlistchartsource.png -text svneol=unset#images/png
|
||||||
components/tachart/trandomchartsource.png -text svneol=unset#images/png
|
components/tachart/trandomchartsource.png -text svneol=unset#images/png
|
||||||
|
@ -67,6 +67,7 @@
|
|||||||
</Item10>
|
</Item10>
|
||||||
<Item11>
|
<Item11>
|
||||||
<Filename Value="tatools.pas"/>
|
<Filename Value="tatools.pas"/>
|
||||||
|
<HasRegisterProc Value="True"/>
|
||||||
<UnitName Value="TATools"/>
|
<UnitName Value="TATools"/>
|
||||||
</Item11>
|
</Item11>
|
||||||
</Files>
|
</Files>
|
||||||
|
@ -19,6 +19,7 @@ begin
|
|||||||
RegisterUnit('TASeriesEditor', @TASeriesEditor.Register);
|
RegisterUnit('TASeriesEditor', @TASeriesEditor.Register);
|
||||||
RegisterUnit('TASources', @TASources.Register);
|
RegisterUnit('TASources', @TASources.Register);
|
||||||
RegisterUnit('TADbSource', @TADbSource.Register);
|
RegisterUnit('TADbSource', @TADbSource.Register);
|
||||||
|
RegisterUnit('TATools', @TATools.Register);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
@ -16,6 +16,46 @@ LazarusResources.Add('tchart','PNG',[
|
|||||||
+#255#169'^'#233'3000'#236#221#187#159'&-'#10'X'#197'OS'#0#0'jxy'#210'uhA'#6#0
|
+#255#169'^'#233'3000'#236#221#187#159'&-'#10'X'#197'OS'#0#0'jxy'#210'uhA'#6#0
|
||||||
+#0#0#0'IEND'#174'B`'#130
|
+#0#0#0'IEND'#174'B`'#130
|
||||||
]);
|
]);
|
||||||
|
LazarusResources.Add('tcharttoolset','PNG',[
|
||||||
|
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#3#0#0#0#215#169#205
|
||||||
|
+#202#0#0#3#0'PLTE'#200#200#200#0#0#0'ww'#146#255#255#255#194#192#193#223#223
|
||||||
|
+#219#130#130#133#140#140#140#198#198#194#129#130#135#220#220#233#146#146#145
|
||||||
|
+#200#200#197#135#136#142#157#157#166#160#160#158#167#167#166#143#143#152#162
|
||||||
|
+#162#159#171#171#169#147#147#156#164#164#161#255#158'^'#173#173#172#150#152
|
||||||
|
+#160#168#169#167#200#186#182#205#191#188#179#179#178#142'ns'#179'TQ'#134'PN'
|
||||||
|
+#204#186#183#156#11#10#231#132''#188'tp'#158#147#145'JJ'#255'T:'#201#154'))'
|
||||||
|
+#175#25#19#235#137#129#210#136#131#156'U5w'#177'6'#172'vs'#190'"'#23#242#147
|
||||||
|
+#138#234#170#165#147'O5'#220#220#216#158'LJ'#208'+'#28#245#150#138#244#186
|
||||||
|
+#179#135'hf'#193#191#192#217#213#209#155'62'#222'2'#30#251#155#141#234#168
|
||||||
|
+#160#128'mm'#6#0#0'h'#5#0#228'8!'#255#151#131#151'H@'#214#209#206#157'SM'#179
|
||||||
|
+'+'#26#133'hgs'#0'l'#0'e'#0'.'#0't'#0'p'#0'g'#0'n'#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#8#0#0#0#18
|
||||||
|
+#247#0#0#0#5#200#0#152'|'#145#0#21' '#18#247#212#5'Q'#0'x|'#145#0#21#19#145#5
|
||||||
|
+'m'#0#0'|='#0#0'|'#145#4#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#2'('#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||||
|
+#0#0#0#0#0#0#0#0#0'3'#206#0#226'|'#145#0#0#247#18#245'$'#0#0#0#200#0#21#0#18
|
||||||
|
+#248#144#238#24'@'#192'|'#255'|'#145#255#255#255#145'@'#187#214#142'|E'#0#1#0
|
||||||
|
+#0#0#18#247#24#0#128#0#200#192#16#0#18#248#144#238#24#5'p|'#255'|'#145#255
|
||||||
|
+#255#255#0#0#0#4'='#0'L|'#145#0#18#248#129#9'_'#0#183'|('#0#0#1#17#224#12#255
|
||||||
|
+#255#224'('#1#24#1#17#0#0#0#0#0#0#248'4'#0'z,'#255#165#0#0#0#1'tRNS'#0'@'#230
|
||||||
|
+#216'f'#0#0#0#1'bKGD'#255#165#7#242#197#0#0#0#9'pHYs'#0#0'.#'#0#0'.#'#1'x'
|
||||||
|
+#165'?v'#0#0#0#25'tEXtSoftware'#0'Paint.NET v3.5.2'#215#238'iC'#0#0#0#150'ID'
|
||||||
|
+'ATx'#218#157#210#197#18#194'@'#16'E'#209'!L'#227'.'#193#157'A'#131#187';'
|
||||||
|
+#252#255#31'Q'#20'!'#21'f'#222'*w'#217'g'#247#170#25's'#144#166'f'#130'[N'
|
||||||
|
+#227'&'#208''#220#6#30#175#15#131'?'#16#132#224#10#133'#Q'#8'D'#177'x'#2#3
|
||||||
|
+'%S'#233#207'U'#215'e'#160'L6'#151'/ '#160'b'#169'\'#129'P'#173#213#27'M'#0
|
||||||
|
+#162#213#238't{}'#9#12#131#132#160#193'p4'#158'L'#1#208'l'#190'X'#174#214#0
|
||||||
|
+'6'#219#221#254'p'#180#129#213#233'|'#185#222#224#186#247#199#243'e'#1#151
|
||||||
|
+#250#129#218#23#24'Ws'#242'"o'#183#235#16#203#158'}Hb'#0#0#0#0'IEND'#174'B`'
|
||||||
|
+#130
|
||||||
|
]);
|
||||||
LazarusResources.Add('tlistchartsource','PNG',[
|
LazarusResources.Add('tlistchartsource','PNG',[
|
||||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#6#0#0#0#224'w='#248#0
|
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#24#0#0#0#24#8#6#0#0#0#224'w='#248#0
|
||||||
+#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#24'tEXtSoftware'#0'Paint.NET v3.3'
|
+#0#0#4'gAMA'#0#0#177#143#11#252'a'#5#0#0#0#24'tEXtSoftware'#0'Paint.NET v3.3'
|
||||||
|
@ -47,6 +47,8 @@ type
|
|||||||
property Shift: TShiftState read FShift write FShift;
|
property Shift: TShiftState read FShift write FShift;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
TChartToolClass = class of TChartTool;
|
||||||
|
|
||||||
{ TChartToolset }
|
{ TChartToolset }
|
||||||
|
|
||||||
TChartToolset = class(TBasicChartToolset)
|
TChartToolset = class(TBasicChartToolset)
|
||||||
@ -83,12 +85,38 @@ type
|
|||||||
procedure MouseMove(APoint: TPoint); override;
|
procedure MouseMove(APoint: TPoint); override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
procedure RegisterChartToolClass(
|
||||||
|
AToolClass: TChartToolClass; const ACaption: String);
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
uses
|
uses
|
||||||
GraphMath, Math, Types,
|
CollectionPropEditForm, Forms, GraphMath, Math, Menus, PropEdits, Types,
|
||||||
TAChartUtils;
|
TAChartUtils;
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
{ TChartToolsEditor }
|
||||||
|
|
||||||
|
TChartToolsEditor = class(TCollectionPropertyEditor)
|
||||||
|
public
|
||||||
|
class function ShowCollectionEditor(
|
||||||
|
ACollection: TCollection; OwnerPersistent: TPersistent;
|
||||||
|
const PropName: String): TCustomForm; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TChartToolsEditorForm }
|
||||||
|
|
||||||
|
TChartToolsEditorForm = class(TCollectionPropertyEditorForm)
|
||||||
|
private
|
||||||
|
procedure OnAddToolClick(ASender: TObject);
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
ToolsClassRegistry: TStringList;
|
||||||
|
ChartToolsForm: TChartToolsEditorForm;
|
||||||
|
|
||||||
function InitBuitlinTools(AChart: TChart): TBasicChartToolset;
|
function InitBuitlinTools(AChart: TChart): TBasicChartToolset;
|
||||||
var
|
var
|
||||||
ts: TChartToolset;
|
ts: TChartToolset;
|
||||||
@ -99,6 +127,69 @@ begin
|
|||||||
TChartReticuleTool.Create(ts.Tools);
|
TChartReticuleTool.Create(ts.Tools);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure InitChartToolsForm;
|
||||||
|
var
|
||||||
|
m: TPopupMenu;
|
||||||
|
mi: TMenuItem;
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if ChartToolsForm <> nil then exit;
|
||||||
|
ChartToolsForm := TChartToolsEditorForm.Create(Application);
|
||||||
|
m := TPopupMenu.Create(ChartToolsForm);
|
||||||
|
for i := 0 to ToolsClassRegistry.Count - 1 do begin
|
||||||
|
mi := TMenuItem.Create(ChartToolsForm);
|
||||||
|
mi.Caption := ToolsClassRegistry[i];
|
||||||
|
mi.Tag := i;
|
||||||
|
mi.OnClick := @ChartToolsForm.OnAddToolClick;
|
||||||
|
m.Items.Add(mi);
|
||||||
|
end;
|
||||||
|
ChartToolsForm.AddButton.DropdownMenu := m;
|
||||||
|
ChartToolsForm.AddButton.OnClick := nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure Register;
|
||||||
|
begin
|
||||||
|
RegisterComponents(CHART_COMPONENT_IDE_PAGE, [TChartToolset]);
|
||||||
|
RegisterPropertyEditor(
|
||||||
|
TypeInfo(TCollection), TChartToolset, 'Tools', TChartToolsEditor);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure RegisterChartToolClass(
|
||||||
|
AToolClass: TChartToolClass; const ACaption: String);
|
||||||
|
begin
|
||||||
|
ToolsClassRegistry.AddObject(ACaption, TObject(AToolClass));
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TChartToolsEditor }
|
||||||
|
|
||||||
|
class function TChartToolsEditor.ShowCollectionEditor(
|
||||||
|
ACollection: TCollection; OwnerPersistent: TPersistent;
|
||||||
|
const PropName: String): TCustomForm;
|
||||||
|
begin
|
||||||
|
InitChartToolsForm;
|
||||||
|
ChartToolsForm.SetCollection(ACollection, OwnerPersistent, PropName);
|
||||||
|
ChartToolsForm.EnsureVisible;
|
||||||
|
Result := ChartToolsForm;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TChartToolsEditorForm }
|
||||||
|
|
||||||
|
procedure TChartToolsEditorForm.OnAddToolClick(ASender: TObject);
|
||||||
|
begin
|
||||||
|
if Collection = nil then exit;
|
||||||
|
with ASender as TMenuItem do
|
||||||
|
TChartToolClass(ToolsClassRegistry.Objects[Tag]).Create(Collection);
|
||||||
|
|
||||||
|
FillCollectionListBox;
|
||||||
|
if CollectionListBox.Items.Count > 0 then
|
||||||
|
CollectionListBox.ItemIndex := CollectionListBox.Items.Count - 1;
|
||||||
|
SelectInObjectInspector(True, False);
|
||||||
|
UpdateButtons;
|
||||||
|
UpdateCaption;
|
||||||
|
Modified;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
{ TChartTool }
|
{ TChartTool }
|
||||||
|
|
||||||
constructor TChartTool.Create(ACollection: TCollection);
|
constructor TChartTool.Create(ACollection: TCollection);
|
||||||
@ -250,7 +341,14 @@ end;
|
|||||||
|
|
||||||
initialization
|
initialization
|
||||||
|
|
||||||
|
ToolsClassRegistry := TStringList.Create;
|
||||||
OnInitBuiltinTools := @InitBuitlinTools;
|
OnInitBuiltinTools := @InitBuitlinTools;
|
||||||
|
RegisterChartToolClass(TChartZoomDragTool, 'Zoom drag tool');
|
||||||
|
RegisterChartToolClass(TChartReticuleTool, 'Reticule tool');
|
||||||
|
|
||||||
|
finalization
|
||||||
|
|
||||||
|
ToolsClassRegistry.Free;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
BIN
components/tachart/tcharttoolset.png
Normal file
BIN
components/tachart/tcharttoolset.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
Loading…
Reference in New Issue
Block a user