cxchartvieweditor.pas
来自「胜天进销存源码,国产优秀的进销存」· PAS 代码 · 共 725 行 · 第 1/2 页
PAS
725 行
btnItemAdd.OnClick := btnItemAddClick;
end;
end;
procedure TcxChartViewEditor.UpdateEditor;
begin
inherited;
UpdateItemList;
end;
procedure TcxChartViewEditor.UpdateSelection;
begin
inherited;
UpdateActiveTab;
FormEditor.ListBoxSynchronizeSelection(lbItems);
UpdateButtons;
end;
procedure TcxChartViewEditor.UpdateItemList;
var
ASelection: TStringList;
AItemIndex, ATopIndex, I: Integer;
AItem: TcxGridChartItem;
S: string;
begin
ListBoxSaveSelection(lbItems, ASelection, AItemIndex, ATopIndex);
try
lbItems.Items.Clear;
for I := 0 to ItemCount - 1 do
begin
AItem := Items[I];
S := AItem.Name + ' - "' + AItem.GetDisplayText + '"';
lbItems.Items.AddObject(S, AItem);
end;
finally
ListBoxRestoreSelection(lbItems, ASelection, AItemIndex, ATopIndex);
end;
end;
procedure TcxChartViewEditor.RestoreListBoxParams;
begin
lbItems.Items.BeginUpdate;
try
ListBoxRestorePos(lbItems, FListBoxItemIndex[ItemKind], FListBoxTopIndex[ItemKind]);
finally
lbItems.Items.EndUpdate;
RedrawWindow(lbItems.Handle, nil, 0, RDW_FRAME or RDW_INVALIDATE or RDW_UPDATENOW); // to fix the bug with scrollbar updating
end;
end;
procedure TcxChartViewEditor.SaveListBoxParams;
begin
ListBoxSavePos(lbItems, FListBoxItemIndex[ItemKind], FListBoxTopIndex[ItemKind]);
end;
class function TcxChartViewEditor.GetViewByObject(APersistent: TPersistent): TcxCustomGridView;
begin
if APersistent is TcxGridChartItem then
Result := TcxGridChartItem(APersistent).GridView
else
if APersistent is TcxGridChartDiagram then
Result := TcxGridChartDiagram(APersistent).GridView
else
Result := inherited GetViewByObject(APersistent);
end;
procedure TcxChartViewEditor.lbItemsClick(Sender: TObject);
begin
FormEditor.ListBoxApplySelection(lbItems, View);
end;
procedure TcxChartViewEditor.btnItemAddClick(Sender: TObject);
begin
AddItem;
end;
procedure TcxChartViewEditor.btnItemAddExClick(Sender: TObject);
procedure InitPopupMenu(APopupMenu: TPopupMenu; const AProvider: IcxGridChartViewItemsProvider);
var
I: Integer;
ACaptions: TStringList;
begin
APopupMenu.Items.Clear;
APopupMenu.Items.Add(CreateMenuItem(pmItems, 'Blank', miItemAddExClick));
APopupMenu.Items.Add(CreateMenuItem(pmItems, '-'));
ACaptions := TStringList.Create;
try
AProvider.GetItemCaptions(ItemClass, ACaptions);
for I := 0 to ACaptions.Count - 1 do
APopupMenu.Items.Add(CreateMenuItem(pmItems, ACaptions[I], miItemAddExClick,
True, I, AProvider.GetItem(ItemClass, I) <> nil));
finally
ACaptions.Free;
end;
end;
function GetPopupMenuPosition(AButton: TButton): TPoint;
begin
with AButton.BoundsRect do
Result := Point(Left, Bottom);
Result := AButton.Parent.ClientToScreen(Result);
end;
begin
InitPopupMenu(pmItemsAdd, DataController as IcxGridChartViewItemsProvider);
with GetPopupMenuPosition(btnItemAdd) do
pmItemsAdd.Popup(X, Y);
end;
procedure TcxChartViewEditor.miItemAddExClick(Sender: TObject);
var
AIndex: Integer;
AItem: TcxGridChartItem;
begin
AIndex := (Sender as TMenuItem).Tag;
if (AIndex = -1) or not (Sender as TMenuItem).Checked then
begin
View.BeginUpdate;
try
AItem := AddItem;
if AIndex <> -1 then
begin
(DataController as IcxGridChartViewItemsProvider).InitItem(AItem, AIndex);
UpdateDesigner;
end;
finally
View.EndUpdate;
end;
end
else
begin
SelectComponent(View);
(DataController as IcxGridChartViewItemsProvider).GetItem(ItemClass, AIndex).Free;
UpdateDesigner;
end;
end;
procedure TcxChartViewEditor.btnItemDeleteClick(Sender: TObject);
begin
if lbItems.SelCount > 0 then
begin
BeginUpdate;
try
ListBoxDeleteSelection(lbItems, True);
FormEditor.ListBoxApplySelection(lbItems, View);
UpdateDesigner;
finally
EndUpdate;
end;
end;
end;
procedure TcxChartViewEditor.btnItemMoveUpClick(Sender: TObject);
begin
FItemPrevDragIndex := -1;
ListBoxMoveItems(lbItems, Max(0, ListBoxGetFirstSelectedIndex(lbItems) - 1),
FItemPrevDragIndex, ReindexItemsProc);
end;
procedure TcxChartViewEditor.btnItemMoveDownClick(Sender: TObject);
begin
FItemPrevDragIndex := -1;
ListBoxMoveItems(lbItems, Min(lbItems.Items.Count, ListBoxGetLastSelectedIndex(lbItems) + 2),
FItemPrevDragIndex, ReindexItemsProc);
end;
procedure TcxChartViewEditor.btnItemSelectAllClick(Sender: TObject);
begin
ListBoxSelectAll(lbItems);
FormEditor.ListBoxApplySelection(lbItems, View);
end;
procedure TcxChartViewEditor.lbItemsStartDrag(Sender: TObject;
var DragObject: TDragObject);
begin
FItemPrevDragIndex := -1;
end;
procedure TcxChartViewEditor.lbItemsDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
ListBoxDragOver(lbItems, Sender, Source, X, Y, State, Accept, FItemPrevDragIndex);
end;
procedure TcxChartViewEditor.lbItemsDragDrop(Sender, Source: TObject; X,
Y: Integer);
begin
ListBoxDragDrop(lbItems, Sender, Source, X, Y, FItemPrevDragIndex, ReindexItemsProc);
end;
procedure TcxChartViewEditor.lbItemsEndDrag(Sender, Target: TObject; X,
Y: Integer);
begin
ListBoxEndDrag(lbItems, Sender, Target, X, Y, FItemPrevDragIndex);
end;
procedure TcxChartViewEditor.lbItemsDrawItem(Control: TWinControl;
Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
with Control as TListBox, Canvas do
begin
FillRect(Rect);
TextOut(Rect.Left + 3, Rect.Top + 3, Items[Index]);
end;
end;
procedure TcxChartViewEditor.FormCreate(Sender: TObject);
begin
inherited;
with lbItems do
begin
Canvas.Font := Font;
ItemHeight := 2 * 3 + Canvas.TextHeight('Qq');
end;
end;
procedure TcxChartViewEditor.tcMainChanging(Sender: TObject; var AllowChange: Boolean);
begin
SaveListBoxParams;
end;
procedure TcxChartViewEditor.tcMainChange(Sender: TObject);
begin
IsActiveTabChanging := True;
try
UpdateItemList;
RestoreListBoxParams;
UpdateSelection;
finally
IsActiveTabChanging := False;
end;
end;
{ TcxGridChartViewStorage }
function TcxGridChartViewStorage.GetDiagramArea: TcxGridChartAreaDiagram;
begin
Result := View.DiagramArea;
end;
function TcxGridChartViewStorage.GetDiagramBar: TcxGridChartBarDiagram;
begin
Result := View.DiagramBar;
end;
function TcxGridChartViewStorage.GetDiagramColumn: TcxGridChartColumnDiagram;
begin
Result := View.DiagramColumn;
end;
function TcxGridChartViewStorage.GetDiagramLine: TcxGridChartLineDiagram;
begin
Result := View.DiagramLine;
end;
function TcxGridChartViewStorage.GetDiagramPie: TcxGridChartPieDiagram;
begin
Result := View.DiagramPie;
end;
function TcxGridChartViewStorage.GetLegend: TcxGridChartLegend;
begin
Result := View.Legend;
end;
function TcxGridChartViewStorage.GetOptionsBehavior: TcxGridChartOptionsBehavior;
begin
Result := View.OptionsBehavior;
end;
function TcxGridChartViewStorage.GetOptionsCustomize: TcxGridChartOptionsCustomize;
begin
Result := View.OptionsCustomize;
end;
function TcxGridChartViewStorage.GetOptionsView: TcxGridChartOptionsView;
begin
Result := View.OptionsView;
end;
function TcxGridChartViewStorage.GetTitle: TcxGridChartTitle;
begin
Result := View.Title;
end;
function TcxGridChartViewStorage.GetToolBox: TcxGridChartToolBox;
begin
Result := View.ToolBox;
end;
function TcxGridChartViewStorage.GetView: TcxGridChartView;
begin
Result := TcxGridChartView(inherited View);
end;
class function TcxGridChartViewStorage.GetViewClass: TcxCustomGridViewClass;
begin
Result := TcxGridChartView;
end;
{ TcxGridChartViewMenuProvider }
function TcxGridChartViewMenuProvider.GetGridView: TcxGridChartView;
begin
Result := TcxGridChartView(inherited GridView);
end;
procedure TcxGridChartViewMenuProvider.ActivateDiagram(Sender: TcxGridViewMenuItem);
var
ADiagram: TcxGridChartDiagram;
begin
ADiagram := GridView.FindDiagramByDisplayText(Sender.Caption);
if not ADiagram.Active then
begin
ADiagram.Active := True;
DesignerModified;
end;
SelectObject(ADiagram);
end;
procedure TcxGridChartViewMenuProvider.CreateDataGroup(Sender: TcxGridViewMenuItem);
begin
ObjectCreated(CreateChartItem(GridView, ciDataGroup));
end;
procedure TcxGridChartViewMenuProvider.CreateSeries(Sender: TcxGridViewMenuItem);
begin
ObjectCreated(CreateChartItem(GridView, ciSeries));
end;
procedure TcxGridChartViewMenuProvider.InitLayoutItems;
var
I: Integer;
begin
inherited;
for I := 0 to GridView.DiagramCount - 1 do
Items.AddItem(GridView.Diagrams[I].DisplayText, ActivateDiagram, True,
GridView.Diagrams[I].Active);
end;
procedure TcxGridChartViewMenuProvider.InitStructureItems;
begin
Items.AddItem('Create Series', CreateSeries, CanAddComponent(GridView.Owner));
Items.AddItem('Create DataGroup', CreateDataGroup, CanAddComponent(GridView.Owner));
Items.AddSeparator;
inherited;
end;
initialization
RegisterViewEditorClass(TcxGridChartView, TcxChartViewEditor);
RegisterDefaultViewStorage(TcxGridChartViewStorage);
RegisterViewMenuProviderClass(TcxGridChartView, TcxGridChartViewMenuProvider);
finalization
UnregisterViewMenuProviderClass(TcxGridChartView, TcxGridChartViewMenuProvider);
UnregisterDefaultViewStorage(TcxGridChartViewStorage);
UnregisterViewEditorClass(TcxGridChartView, TcxChartViewEditor);
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?