📄 ribbonnotepaddemomain.pas
字号:
procedure TRibbonDemoMainForm.dxBarButtonSaveClick(Sender: TObject);
begin
SaveFile(False);
end;
procedure TRibbonDemoMainForm.dxBarButtonSaveAsRTFClick(Sender: TObject);
begin
SaveFile(True);
end;
procedure TRibbonDemoMainForm.dxBarButtonSaveAsTextClick(Sender: TObject);
begin
SaveFile(True, True);
end;
procedure TRibbonDemoMainForm.dxBarButtonPrintClick(Sender: TObject);
begin
if PrintDialog.Execute then Editor.Print(FileName);
end;
procedure TRibbonDemoMainForm.dxBarButtonExitClick(Sender: TObject);
begin
Close;
end;
procedure TRibbonDemoMainForm.dxBarButtonUndoClick(Sender: TObject);
begin
Undo(1);
end;
procedure TRibbonDemoMainForm.dxBarButtonCutClick(Sender: TObject);
begin
Editor.CutToClipboard;
end;
procedure TRibbonDemoMainForm.dxBarButtonCopyClick(Sender: TObject);
begin
Editor.CopyToClipboard;
end;
procedure TRibbonDemoMainForm.dxBarButtonPasteClick(Sender: TObject);
begin
Editor.PasteFromClipboard;
end;
procedure TRibbonDemoMainForm.dxBarButtonClearClick(Sender: TObject);
begin
Editor.ClearSelection;
end;
procedure TRibbonDemoMainForm.dxBarButtonSelectAllClick(Sender: TObject);
begin
Editor.SelectAll;
end;
procedure TRibbonDemoMainForm.dxBarButtonFindClick(Sender: TObject);
begin
Editor.SelLength := 0;
FindDialog.Execute;
end;
procedure TRibbonDemoMainForm.dxBarButtonReplaceClick(Sender: TObject);
begin
Editor.SelLength := 0;
ReplaceDialog.Execute;
end;
procedure TRibbonDemoMainForm.dxBarComboFontNameChange(Sender: TObject);
begin
if not FUpdating then
Editor.SelAttributes.Name := dxBarComboFontName.Text;
end;
procedure TRibbonDemoMainForm.dxBarComboFontSizeChange(Sender: TObject);
begin
if not FUpdating then
Editor.SelAttributes.Size := StrToInt(dxBarComboFontSize.Text);
end;
procedure TRibbonDemoMainForm.dxBarButtonBoldClick(Sender: TObject);
begin
with Editor.SelAttributes do
if dxBarButtonBold.Down then
Style := Style + [fsBold]
else
Style := Style - [fsBold];
end;
procedure TRibbonDemoMainForm.dxBarButtonItalicClick(Sender: TObject);
begin
with Editor.SelAttributes do
if dxBarButtonItalic.Down then
Style := Style + [fsItalic]
else
Style := Style - [fsItalic];
end;
procedure TRibbonDemoMainForm.dxBarButtonUnderlineClick(Sender: TObject);
begin
with Editor.SelAttributes do
if dxBarButtonUnderline.Down then
Style := Style + [fsUnderline]
else
Style := Style - [fsUnderline];
end;
procedure TRibbonDemoMainForm.dxBarButtonBulletsClick(Sender: TObject);
begin
Editor.Paragraph.Numbering := TNumberingStyle(dxBarButtonBullets.Down);
end;
procedure TRibbonDemoMainForm.btnLockedClick(Sender: TObject);
var
AHint: string;
begin
Editor.ReadOnly := TdxBarButton(Sender).Down;
if Editor.ReadOnly then
begin
AHint := 'Editing protection: Read only. Click for editing.';
cxStyle1.TextColor := clMaroon;
end
else
begin
AHint := 'Editing protection: Writable. Click for read-only mode.';
cxStyle1.TextColor := clGray;
end;
TdxBarButton(Sender).Hint := AHint;
EditorSelectionChange(nil);
end;
procedure TRibbonDemoMainForm.dxBarButtonAlignClick(Sender: TObject);
begin
if TdxBarLargeButton(Sender).Down then
Editor.Paragraph.Alignment := TAlignment(TdxBarLargeButton(Sender).Tag)
else
Editor.Paragraph.Alignment := taLeftJustify;
end;
procedure TRibbonDemoMainForm.dxBarButtonProtectedClick(Sender: TObject);
begin
with Editor.SelAttributes do Protected := not Protected;
end;
procedure TRibbonDemoMainForm.FontClick(Sender: TObject);
begin
FontDialog.Font.Assign(Editor.SelAttributes);
if FontDialog.Execute then
Editor.SelAttributes.Assign(FontDialog.Font);
end;
procedure TRibbonDemoMainForm.dxBarLargeButton10Click(Sender: TObject);
begin
with Ribbon.QuickAccessToolbar do
begin
Visible := not Visible;
dxBarLargeButton8.Enabled := Visible;
dxBarLargeButton9.Enabled := Visible;
end;
end;
procedure TRibbonDemoMainForm.dxBarLargeButtonBlueSchemeClick(Sender: TObject);
begin
SetColorScheme('Blue');
end;
procedure TRibbonDemoMainForm.dxBarLargeButtonBlackSchemeClick(Sender: TObject);
begin
SetColorScheme('Black');
end;
procedure TRibbonDemoMainForm.dxBarLargeButtonSilverSchemeClick(Sender: TObject);
begin
SetColorScheme('Silver');
end;
procedure TRibbonDemoMainForm.dxBarLargeButton6Click(Sender: TObject);
begin
with Ribbon do
begin
SupportNonClientDrawing := not SupportNonClientDrawing;
dxBarLargeButton7.Enabled := SupportNonClientDrawing;
end;
end;
procedure TRibbonDemoMainForm.dxBarLargeButton7Click(Sender: TObject);
begin
Ribbon.ApplicationButton.Visible := not Ribbon.ApplicationButton.Visible;
end;
procedure TRibbonDemoMainForm.dxBarLargeButton8Click(Sender: TObject);
begin
Ribbon.QuickAccessToolbar.Position := qtpAboveRibbon;
end;
procedure TRibbonDemoMainForm.dxBarLargeButton9Click(Sender: TObject);
begin
Ribbon.QuickAccessToolbar.Position := qtpBelowRibbon;
end;
procedure TRibbonDemoMainForm.ApplicationMenuRecentDocumentsClick(
Sender: TObject; AIndex: Integer);
begin
OpenFile(ApplicationMenu.ExtraPaneItems[AIndex].Text);
end;
procedure TRibbonDemoMainForm.RibbonHelpButtonClick(
Sender: TdxCustomRibbon);
begin
ShowMessage('Clicked!');
end;
procedure TRibbonDemoMainForm.RibbonHideMinimizedByClick(
Sender: TdxCustomRibbon; AWnd: Cardinal; AShift: TShiftState;
const APos: TPoint; var AAllowProcessing: Boolean);
begin
AAllowProcessing := AWnd <> Editor.Handle;
end;
procedure TRibbonDemoMainForm.dxBarButtonOptionsClick(Sender: TObject);
procedure UpdateColorScheme(AColorSchemeName: string);
begin
dxBarLargeButtonBlueScheme.Down := AColorSchemeName = 'Blue';
dxBarLargeButtonBlackScheme.Down := AColorSchemeName = 'Black';
dxBarLargeButtonSilverScheme.Down := AColorSchemeName = 'Silver';
SetColorScheme(AColorSchemeName);
end;
var
AColorSchemeName: string;
AScreenTipOptions: TScreenTipOptions;
begin
AColorSchemeName := Ribbon.ColorSchemeName;
AScreenTipOptions.ShowScreenTips := BarManager.ShowHint;
AScreenTipOptions.ShowDescripitons := dxBarScreenTipRepository1.ShowDescription;
if RibbonDemoOptionsForm.GetOptions(AColorSchemeName, AScreenTipOptions) then
begin
UpdateColorScheme(AColorSchemeName);
BarManager.ShowHint := AScreenTipOptions.ShowScreenTips;
dxBarScreenTipRepository1.ShowDescription := AScreenTipOptions.ShowDescripitons;
end;
end;
procedure TRibbonDemoMainForm.dxBarButtonFontColorClick(Sender: TObject);
begin
SetFontColor;
end;
{ TColorPickerController }
constructor TColorPickerController.Create(AColorItem,
AColorMapItem: TdxRibbonGalleryItem; AColorDropDownGallery: TdxRibbonDropDownGallery);
procedure InitColorItem;
begin
FColorItem.GalleryOptions.EqualItemSizeInAllGroups := False;
FColorItem.GalleryOptions.ColumnCount := SchemeColorCount;
FColorItem.GalleryOptions.SpaceBetweenGroups := 4;
FColorItem.GalleryOptions.ItemTextKind := itkNone;
FColorItem.OnGroupItemClick := ColorItemClick;
FThemeColorsGroup := FColorItem.GalleryGroups.Add;
FThemeColorsGroup.Header.Caption := 'Theme Colors';
FThemeColorsGroup.Header.Visible := True;
FAccentColorsGroup := FColorItem.GalleryGroups.Add;
FStandardColorsGroup := FColorItem.GalleryGroups.Add;
FStandardColorsGroup.Header.Caption := 'Standard Colors';
FStandardColorsGroup.Header.Visible := True;
FCustomColorsGroup := FColorItem.GalleryGroups.Add;
FCustomColorsGroup.Header.Caption := 'Custom Colors';
AColorItem.GalleryGroups[1].Options.SpaceBetweenItemsVertically := -1;
end;
procedure InitColorMapItem;
begin
FColorMapItem.GalleryOptions.ColumnCount := 1;
FColorMapItem.GalleryOptions.SpaceBetweenItemsAndBorder := 0;
FColorMapItem.GalleryOptions.ItemTextKind := itkCaption;
FColorMapItem.GalleryGroups.Add;
FColorMapItem.OnGroupItemClick := ColorMapItemClick;
end;
procedure InitDropDownGallery;
var
ANoColorGlyph: TBitmap;
begin
FNoColorButton := TdxBarButton(FColorDropDownGallery.ItemLinks.AddButton.Item);
FNoColorButton.ButtonStyle := bsChecked;
FNoColorButton.Caption := '&No Color';
FNoColorButton.OnClick := NoColorButtonClick;
ANoColorGlyph := CreateColorBitmap(clNone, 16);
FNoColorButton.Glyph := ANoColorGlyph;
ANoColorGlyph.Free;
FMoreColorsButton := TdxBarButton(FColorDropDownGallery.ItemLinks.AddButton.Item);
FMoreColorsButton.Caption := '&More Colors...';
FMoreColorsButton.OnClick := MoreColorsClick;
FColorDialogSetup := TdxBarButton(FColorDropDownGallery.ItemLinks.AddButton.Item);
FColorDialogSetup.Caption := '&Setup...';
FColorDialogSetup.OnClick := ColorDialogSetupButtonClick;
end;
procedure PopulateGalleries;
begin
BuildColorSchemeGallery;
BuildStandardColorGallery;
end;
procedure SelectDefaultColor;
begin
FNoColorButton.Click;
end;
begin
inherited Create;
FColorItem := AColorItem;
FColorMapItem := AColorMapItem;
FColorDropDownGallery := AColorDropDownGallery;
FColorGlyphSize := cxTextHeight(Ribbon.Fonts.Group);
FColorDialog := TColorDialog.Create(nil);
InitColorMapItem;
InitColorItem;
InitDropDownGallery;
PopulateGalleries;
SelectDefaultColor;
end;
destructor TColorPickerController.Destroy;
begin
FreeAndNil(FColorDialog);
inherited;
end;
function TColorPickerController.AddColorItem(AGalleryGroup: TdxRibbonGalleryGroup; AColor: TColor): TdxRibbonGalleryGroupItem;
var
ABitmap: TcxBitmap;
AColorName: string;
begin
Result := AGalleryGroup.Items.Add;
ABitmap := CreateColorBitmap(AColor);
try
Result.Glyph := ABitmap;
if cxNameByColor(AColor, AColorName) then
Result.Caption := AColorName
else
Result.Caption := '$' + IntToHex(AColor, 6);
Result.Tag := AColor;
finally
ABitmap.Free;
end;
end;
function TColorPickerController.CreateColorBitmap(AColor: TColor; AGlyphSize: Integer): TcxBitmap;
begin
if AGlyphSize = 0 then
AGlyphSize := FColorGlyphSize;
Result := TcxBitmap.CreateSize(AGlyphSize, AGlyphSize);
FillRectByColor(Result.Canvas.Handle, Result.ClientRect, AColor);
FrameRectByColor(Result.Canvas.Handle, Result.ClientRect, clGray);
if AColor = clNone then
Result.RecoverAlphaChannel(0)
else
Result.TransformBitmap(btmSetOpaque);
end;
procedure TColorPickerController.CreateColorRow(AGalleryGroup: TdxRibbonGalleryGroup; AColorMap: TColorMap);
var
I: Integer;
begin
for I := Low(AColorMap) to High(AColorMap) do
AddColorItem(AGalleryGroup, AColorMap[I]);
end;
procedure TColorPickerController.BuildThemeColorGallery;
const
AnAccentCount = 5;
function GetBrightness(ARGBColor: DWORD): Integer;
begin
Result := (GetBValue(ARGBColor) + GetGValue(ARGBColor) + GetRValue(ARGBColor)) div 3;
end;
procedure GetAccentColorScheme(AColorMap: TColorMap; var AnAccentColorScheme: array of TColorMap);
procedure CreateAccent(AnAccents: array of TAccent; AMapIndex: Integer);
var
I: Integer;
AColor: TColor;
begin
for I := Low(AnAccents) to High(AnAccents) do
begin
case AnAccents[I] of
aLight80: AColor := Light(AColorMap[AMapIndex], 80);
aLight60: AColor := Light(AColorMap[AMapIndex], 60);
aLight50: AColor := Light(AColorMap[AMapIndex], 50);
aLight40: AColor := Light(AColorMap[AMapIndex], 40);
aLight35: AColor := Light(AColorMap[AMapIndex], 35);
aLight25: AColor := Light(AColorMap[AMapIndex], 25);
aLight15: AColor := Light(AColorMap[AMapIndex], 15);
aLight5: AColor := Light(AColorMap[AMapIndex], 5);
aDark10: AColor := Dark(AColorMap[AMapIndex], 90);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -