📄 featuresmain.pas
字号:
Copy(SelectionRect, False);
end;
procedure TFeaturesMainForm.actCutExecute(Sender: TObject);
begin
with cxSpreadBook.ActiveSheet do
Copy(SelectionRect, True);
end;
procedure TFeaturesMainForm.actAutomaticCalcExecute(Sender: TObject);
begin
TCustomAction(Sender).Checked := not TCustomAction(Sender).Checked;
cxSpreadBook.AutoRecalc := TCustomAction(Sender).Checked;
if cxSpreadBook.AutoRecalc then
begin
cxSpreadBook.Recalc;
cxSpreadBook.UpdateControl;
end;
end;
procedure TFeaturesMainForm.actRecalcFormulasExecute(Sender: TObject);
begin
cxSpreadBook.Recalc();
cxSpreadBook.UpdateControl;
end;
procedure TFeaturesMainForm.actBeveledLookandFeelExecute(Sender: TObject);
begin
if (IsUpdate) then Exit;
TCustomAction(Sender).Checked := not TCustomAction(Sender).Checked;
cxSpreadBook.PainterType := TcxSSPainterType(TCustomAction(Sender).Checked);
end;
procedure TFeaturesMainForm.actCellLeftAlignExecute(Sender: TObject);
begin
SetCellsStyle([svAlign], haLeft, 0, cbxFont.Text, []);
end;
procedure TFeaturesMainForm.actCellRightAlignExecute(Sender: TObject);
begin
SetCellsStyle([svAlign], haRight, 0, cbxFont.Text, []);
end;
procedure TFeaturesMainForm.actCellCenterAlignExecute(Sender: TObject);
begin
SetCellsStyle([svAlign], haCenter, 0, cbxFont.Text, []);
end;
procedure TFeaturesMainForm.actCellsExecute(Sender: TObject);
var
AForm :TFeatureModifyForm;
const
AFormType: array[Boolean] of TcxSSModifyType = (mtDelete, mtInsert);
begin
if IsUpdate then Exit;
AForm := TFeatureModifyForm.Create(Self);
AForm.Top := (Top + Height) shr 1;
AForm.Left := (Left + Width) shr 1;
try
if AForm.Execute(AFormType[TCustomAction(Sender).Tag = 1]) then
with cxSpreadBook.ActiveSheet do
case TCustomAction(Sender).Tag of
0:
DeleteCells(SelectionRect, AForm.Modify);
1:
InsertCells(SelectionRect, AForm.Modify);
end;
finally
AForm.Free;
end;
end;
procedure TFeaturesMainForm.actFormatCellsExecute(Sender: TObject);
begin
with cxSpreadBook.ActiveSheet do
FormatCells(SelectionRect);
end;
procedure TFeaturesMainForm.actHideCellsExecute(Sender: TObject);
begin
if IsUpdate then Exit;
with cxSpreadBook.ActiveSheet do
SetVisibleState(SelectionRect, True, True, False);
end;
procedure TFeaturesMainForm.actShowCellsExecute(Sender: TObject);
begin
if IsUpdate then Exit;
with cxSpreadBook.ActiveSheet do
SetVisibleState(SelectionRect, True, True, True);
end;
procedure TFeaturesMainForm.actHideColExecute(Sender: TObject);
begin
if IsUpdate then Exit;
with cxSpreadBook.ActiveSheet do
SetVisibleState(SelectionRect, True, False, False);
end;
procedure TFeaturesMainForm.actShowColExecute(Sender: TObject);
begin
if IsUpdate then Exit;
with cxSpreadBook.ActiveSheet do
SetVisibleState(SelectionRect, True, False, True);
end;
procedure TFeaturesMainForm.actBufferedpaintExecute(Sender: TObject);
begin
if IsUpdate then Exit;
TCustomAction(Sender).Checked := not TCustomAction(Sender).Checked;
cxSpreadBook.BufferedPaint := TCustomAction(Sender).Checked;
end;
procedure TFeaturesMainForm.actShowcaptionsExecute(Sender: TObject);
begin
if IsUpdate then Exit;
TCustomAction(Sender).Checked := not TCustomAction(Sender).Checked;
cxSpreadBook.ShowCaptionBar := TCustomAction(Sender).Checked;
end;
procedure TFeaturesMainForm.actShowgridExecute(Sender: TObject);
begin
if IsUpdate then Exit;
TCustomAction(Sender).Checked := not TCustomAction(Sender).Checked;
cxSpreadBook.ShowGrid := TCustomAction(Sender).Checked;
end;
procedure TFeaturesMainForm.actShowheadersExecute(Sender: TObject);
begin
if IsUpdate then Exit;
TCustomAction(Sender).Checked := not TCustomAction(Sender).Checked;
cxSpreadBook.ShowHeaders := TCustomAction(Sender).Checked;
end;
procedure TFeaturesMainForm.actShowformulasExecute(Sender: TObject);
begin
if IsUpdate then Exit;
TCustomAction(Sender).Checked := not TCustomAction(Sender).Checked;
cxSpreadBook.ShowFormulas := TCustomAction(Sender).Checked;
end;
procedure TFeaturesMainForm.actR1C1ReferencestyleExecute(Sender: TObject);
begin
if IsUpdate then Exit;
TCustomAction(Sender).Checked := not TCustomAction(Sender).Checked;
cxSpreadBook.R1C1ReferenceStyle := TCustomAction(Sender).Checked;
pnCellRect.Caption := GetCellText(cxSpreadBook.ActiveSheet.SelectionRect, cxSpreadBook.R1C1ReferenceStyle);
end;
procedure TFeaturesMainForm.actMergeCellsExecute(Sender: TObject);
begin
with cxSpreadBook.ActiveSheet do
SetMergedState(SelectionRect, True);
end;
procedure TFeaturesMainForm.actSplitCellsExecute(Sender: TObject);
begin
with cxSpreadBook.ActiveSheet do
SetMergedState(SelectionRect, False);
end;
procedure TFeaturesMainForm.actFontExecute(Sender: TObject);
begin
SetCellsStyle([svFontName], haGeneral, 0, cbxFont.Text, []);
end;
procedure TFeaturesMainForm.actFontSizeExecute(Sender: TObject);
var
ASize: Integer;
begin
if cxTryStrToInt(cbxSize.Text, ASize) then
SetCellsStyle([svSize], haGeneral, ASize, cbxFont.Text, []);
end;
procedure TFeaturesMainForm.actSumExecute(Sender: TObject);
begin
CalculateSummary(TComponent(Sender).Tag);
end;
procedure TFeaturesMainForm.actSortExecute(Sender: TObject);
const
ASortType: array[0..1] of TcxSortType = (stAscending, stDescending);
begin
with cxSpreadBook.ActiveSheet do
Sort(SelectionRect, [ASortType[TCustomAction(Sender).Tag]]);
end;
procedure TFeaturesMainForm.actHideRowExecute(Sender: TObject);
begin
if IsUpdate then Exit;
with cxSpreadBook.ActiveSheet do
SetVisibleState(SelectionRect, False, True, False);
end;
procedure TFeaturesMainForm.actShowRowExecute(Sender: TObject);
begin
if IsUpdate then Exit;
with cxSpreadBook.ActiveSheet do
SetVisibleState(SelectionRect, False, True, True);
end;
procedure TFeaturesMainForm.actUndoExecute(Sender: TObject);
begin
cxSpreadBook.History.Undo(1);
end;
procedure TFeaturesMainForm.actUndoUpdate(Sender: TObject);
begin
TCustomAction(Sender).Enabled := (cxSpreadBook.History.UndoActions.Count > 0) and
not (ActiveMDIChild as TFeatureChildForm).IsEditorMode;
end;
procedure TFeaturesMainForm.actRedoUpdate(Sender: TObject);
begin
TCustomAction(Sender).Enabled := (cxSpreadBook.History.RedoActions.Count > 0)
end;
procedure TFeaturesMainForm.actRedoExecute(Sender: TObject);
begin
cxSpreadBook.History.Redo(1);
end;
procedure TFeaturesMainForm.pmUndoPopup(Sender: TObject);
var
Item: TMenuItem;
i: Integer;
begin
while TPopUpMenu(Sender).Items.Count > 0 do
TPopUpMenu(Sender).Items.Delete(0);
with cxSpreadBook.History do
for i:=0 to UndoActions.Count do
begin
Item := TMenuItem.Create(Sender as TComponent);
if i < UndoActions.Count then
Item.Caption := UndoActions[i].Description;
Item.OnMeasureItem := MeasureItem;
Item.OnDrawItem := DrawItem;
Item.OnClick := UndoItemClick;
TPopUpMenu(Sender).Items.Add(Item);
end;
end;
procedure TFeaturesMainForm.pmRedoPopup(Sender: TObject);
var
Item: TMenuItem;
i: Integer;
begin
while TPopUpMenu(Sender).Items.Count > 0 do
TPopUpMenu(Sender).Items.Delete(0);
with cxSpreadBook.History do
for i:=0 to RedoActions.Count do
begin
Item := TMenuItem.Create(Sender as TComponent);
if i < RedoActions.Count then
Item.Caption := RedoActions[i].Description;
Item.OnMeasureItem := MeasureItem;
Item.OnDrawItem := DrawItem;
Item.OnClick := RedoItemClick;
TPopUpMenu(Sender).Items.Add(Item);
end;
end;
procedure TFeaturesMainForm.UndoItemClick(Sender: TObject);
begin
if TMenuItem(Sender).MenuIndex < TPopupMenu(TMenuItem(Sender).Owner).Items.Count - 1 then
cxSpreadBook.History.Undo(TMenuItem(Sender).MenuIndex + 1)
end;
procedure TFeaturesMainForm.RedoItemClick(Sender: TObject);
begin
if TMenuItem(Sender).MenuIndex < TPopupMenu(TMenuItem(Sender).Owner).Items.Count - 1 then
cxSpreadBook.History.Redo(TMenuItem(Sender).MenuIndex + 1)
end;
procedure TFeaturesMainForm.MeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
Width := 90;
if TMenuItem(Sender).MenuIndex = TPopupMenu(TComponent(Sender).Owner).Items.Count - 1 then
Height := ACanvas.TextHeight('W') + 10 else
Height := ACanvas.TextHeight('W');
end;
procedure TFeaturesMainForm.DrawUndoRedoItem(PopupMenu: TPopupMenu; Sender: TMenuItem; ACanvas: TCanvas; ARect: TRect; Selected: Boolean; InfoStr: String);
procedure UpdatePreviousItems(AIndex: Integer);
var
i: Integer;
Rec: TRect;
begin
Rec := ARect;
for i:=AIndex - 1 downto 0 do
begin
Rec := Rect(Rec.Left, ACanvas.TextHeight('W') * i, Rec.Right, ACanvas.TextHeight('W') * (i + 1));
ACanvas.Brush.Color := clHighLight;
ACanvas.Brush.Style := bsSolid;
ACanvas.FillRect(Rec);
ACanvas.TextRect(Rec, Rec.Left, Rec.Top, PopupMenu.Items[i].Caption);
end;
end;
procedure DrawActionsCount();
var
Rec: TRect;
Lft, Tp, ActionsCount, Btn: Integer;
Str: String;
begin
if (PopupMenu.Items.Count - 1) = Sender.MenuIndex then
begin
Btn := (PopupMenu.Items.Count - 1) * ACanvas.TextHeight('W') - 1 + (ARect.Bottom - ARect.Top);
ActionsCount := Sender.MenuIndex;
end else
begin
Btn := (PopupMenu.Items.Count - 1) * ACanvas.TextHeight('W') - 1 + FSummaryItemHeight + (ARect.Bottom - ARect.Top);
ActionsCount := Sender.MenuIndex + 1;
end;
Rec := Rect(ARect.Left + 1, (PopupMenu.Items.Count - 1) * ACanvas.TextHeight('W') + 1,
ARect.Right - 1, Btn);
ACanvas.Brush.Color := clMenu;
ACanvas.Brush.Style := bsSolid;
ACanvas.FillRect(Rec);
Str := Format(InfoStr, [ActionsCount]);
Lft := (Rec.Left + Rec.Right) div 2 - (ACanvas.TextWidth(Str) div 2);
Tp := (Rec.Top + Rec.Bottom) div 2 - (ACanvas.TextHeight(Str) div 2);
Frame3D(ACanvas, Rec, clBtnShadow, clBtnHighlight, 1);
ACanvas.TextRect(Rec, Lft, Tp, Str);
end;
procedure UpdateNextItems(Index: Integer);
var
i: Integer;
Rec: TRect;
begin
Rec := ARect;
for i:=Index + 1 to PopupMenu.Items.Count - 2 do
begin
Rec := Rect(Rec.Left, Rec.Top + ACanvas.TextHeight('W'), Rec.Right, Rec.Bottom + ACanvas.TextHeight('W'));
ACanvas.Brush.Color := clMenu;
ACanvas.Brush.Style := bsSolid;
ACanvas.FillRect(Rec);
ACanvas.TextRect(Rec, Rec.Left, Rec.Top, PopupMenu.Items[i].Caption);
end;
end;
begin
if Sender.MenuIndex = (PopupMenu.Items.Count - 1) then
begin
ACanvas.Brush.Color := clMenu;
ACanvas.Brush.Style := bsSolid;
ACanvas.FillRect(ARect);
if Selected then
UpdatePreviousItems(Sender.MenuIndex);
end else
begin
if Selected then
begin
ACanvas.Brush.Color := clHighLight;
ACanvas.Brush.Style := bsSolid;
ACanvas.FillRect(Rect(ARect.Left, ARect.Top, ARect.Right, ARect.Bottom));
UpdatePreviousItems(Sender.MenuIndex);
end
else
begin
ACanvas.Brush.Color := clMenu;
ACanvas.Brush.Style := bsSolid;
ACanvas.FillRect(ARect);
UpdateNextItems(Sender.MenuIndex);
end;
ACanvas.TextRect(ARect, ARect.Left, ARect.Top, Sender.Caption);
end;
DrawActionsCount;
end;
procedure TFeaturesMainForm.DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
var
Str: String;
begin
if TComponent(Sender).Owner.Name = 'pmUndo' then
Str := 'Undo %d Actions'
else
Str := 'Redo %d Actions';
DrawUndoRedoItem(TPopupMenu(TComponent(Sender).Owner), TMenuItem(Sender), ACanvas, ARect, Selected, Str);
end;
procedure TFeaturesMainForm.IsEditorMode(Sender: TObject);
begin
TCustomAction(Sender).Enabled := not (ActiveMDIChild as TFeatureChildForm).IsEditorMode;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -