mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 20:39:39 +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/tatypes.pas svneol=native#text/plain
|
||||
components/tachart/tchart.png -text svneol=unset#images/png
|
||||
components/tachart/tcharttoolset.png -text
|
||||
components/tachart/tdbchartsource.png -text
|
||||
components/tachart/tlistchartsource.png -text svneol=unset#images/png
|
||||
components/tachart/trandomchartsource.png -text svneol=unset#images/png
|
||||
|
@ -67,6 +67,7 @@
|
||||
</Item10>
|
||||
<Item11>
|
||||
<Filename Value="tatools.pas"/>
|
||||
<HasRegisterProc Value="True"/>
|
||||
<UnitName Value="TATools"/>
|
||||
</Item11>
|
||||
</Files>
|
||||
|
@ -19,6 +19,7 @@ begin
|
||||
RegisterUnit('TASeriesEditor', @TASeriesEditor.Register);
|
||||
RegisterUnit('TASources', @TASources.Register);
|
||||
RegisterUnit('TADbSource', @TADbSource.Register);
|
||||
RegisterUnit('TATools', @TATools.Register);
|
||||
end;
|
||||
|
||||
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
|
||||
+#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',[
|
||||
#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'
|
||||
|
@ -47,6 +47,8 @@ type
|
||||
property Shift: TShiftState read FShift write FShift;
|
||||
end;
|
||||
|
||||
TChartToolClass = class of TChartTool;
|
||||
|
||||
{ TChartToolset }
|
||||
|
||||
TChartToolset = class(TBasicChartToolset)
|
||||
@ -83,12 +85,38 @@ type
|
||||
procedure MouseMove(APoint: TPoint); override;
|
||||
end;
|
||||
|
||||
procedure Register;
|
||||
procedure RegisterChartToolClass(
|
||||
AToolClass: TChartToolClass; const ACaption: String);
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
GraphMath, Math, Types,
|
||||
CollectionPropEditForm, Forms, GraphMath, Math, Menus, PropEdits, Types,
|
||||
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;
|
||||
var
|
||||
ts: TChartToolset;
|
||||
@ -99,6 +127,69 @@ begin
|
||||
TChartReticuleTool.Create(ts.Tools);
|
||||
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 }
|
||||
|
||||
constructor TChartTool.Create(ACollection: TCollection);
|
||||
@ -250,7 +341,14 @@ end;
|
||||
|
||||
initialization
|
||||
|
||||
ToolsClassRegistry := TStringList.Create;
|
||||
OnInitBuiltinTools := @InitBuitlinTools;
|
||||
RegisterChartToolClass(TChartZoomDragTool, 'Zoom drag tool');
|
||||
RegisterChartToolClass(TChartReticuleTool, 'Reticule tool');
|
||||
|
||||
finalization
|
||||
|
||||
ToolsClassRegistry.Free;
|
||||
|
||||
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