Componentes.Terceros.DevExp.../official/x.26/ExpressBars 6/Demos/Delphi/RibbonNotepadDemo/RibbonNotepadDemoMain.pas
2007-09-09 11:27:27 +00:00

809 lines
24 KiB
ObjectPascal

unit RibbonNotepadDemoMain;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, ComCtrls, dxBar, StdCtrls, dxBarExtItems, cxControls,
ImgList, ActnList, cxLookAndFeels, dxStatusBar, cxGraphics, EBarsUtils,
dxRibbonForm, dxRibbon, cxClasses, Menus, dxRibbonStatusBar, cxStyles;
type
TRibbonDemoMainForm = class(TdxRibbonForm)
BarManager: TdxBarManager;
dxBarButtonNew: TdxBarLargeButton;
dxBarButtonOpen: TdxBarLargeButton;
dxBarButtonSave: TdxBarLargeButton;
dxBarSubItemSaveAs: TdxBarSubItem;
dxBarButtonSaveAsRTF: TdxBarButton;
dxBarButtonSaveAsText: TdxBarButton;
dxBarButtonPrint: TdxBarLargeButton;
dxBarButtonExit: TdxBarLargeButton;
dxBarButtonUndo: TdxBarLargeButton;
dxBarButtonCut: TdxBarLargeButton;
dxBarButtonCopy: TdxBarLargeButton;
dxBarButtonPaste: TdxBarLargeButton;
dxBarButtonClear: TdxBarLargeButton;
dxBarButtonSelectAll: TdxBarLargeButton;
dxBarButtonFind: TdxBarLargeButton;
dxBarButtonReplace: TdxBarLargeButton;
dxBarComboFontSize: TdxBarCombo;
dxBarButtonBold: TdxBarLargeButton;
dxBarButtonItalic: TdxBarLargeButton;
dxBarButtonUnderline: TdxBarLargeButton;
dxBarButtonBullets: TdxBarLargeButton;
dxBarButtonProtected: TdxBarLargeButton;
dxBarButtonAlignLeft: TdxBarLargeButton;
dxBarButtonCenter: TdxBarLargeButton;
dxBarButtonAlignRight: TdxBarLargeButton;
dxBarButtonFont: TdxBarLargeButton;
dxBarSeparator: TdxBarSeparator;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
PrintDialog: TPrintDialog;
FontDialog: TFontDialog;
dxBarPopupMenu: TdxRibbonPopupMenu;
dxBarComboFontColor: TdxBarColorCombo;
dxBarGroup1: TdxBarGroup;
dxBarButton1: TdxBarLargeButton;
dxBarButton2: TdxBarLargeButton;
dxBarButton3: TdxBarLargeButton;
dxBarButton4: TdxBarLargeButton;
dxBarButton5: TdxBarLargeButton;
dxBarButton6: TdxBarLargeButton;
dxBarButton7: TdxBarLargeButton;
dxBarComboFontName: TdxBarFontNameCombo;
dxBarLargeButton1: TdxBarLargeButton;
dxBarLargeButton2: TdxBarLargeButton;
ilStatusBarImages: TImageList;
dxStatusBar: TdxRibbonStatusBar;
FindDialog: TFindDialog;
ReplaceDialog: TReplaceDialog;
tabHome: TdxRibbonTab;
Ribbon: TdxRibbon;
tabAppearance: TdxRibbonTab;
BarManagerBar5: TdxBar;
BarManagerBar7: TdxBar;
ApplicationMenu: TdxBarApplicationMenu;
BarManagerBar8: TdxBar;
BarManagerBar1: TdxBar;
dxBarLargeButtonBlueScheme: TdxBarLargeButton;
dxBarLargeButtonBlackScheme: TdxBarLargeButton;
dxBarLargeButtonSilverScheme: TdxBarLargeButton;
BarManagerBar9: TdxBar;
dxBarLargeButton6: TdxBarLargeButton;
dxBarLargeButton7: TdxBarLargeButton;
BarManagerBar10: TdxBar;
dxBarLargeButton8: TdxBarLargeButton;
dxBarLargeButton9: TdxBarLargeButton;
dxBarLargeButton10: TdxBarLargeButton;
BarManagerBar11: TdxBar;
BarManagerBar12: TdxBar;
Editor: TRichEdit;
dxBarScreenTipRepository1: TdxBarScreenTipRepository;
cxLargeImages: TcxImageList;
cxSmallImages: TcxImageList;
BarManagerBar6: TdxBar;
BarManagerBar13: TdxBar;
btnLineNumber: TdxBarButton;
btnColumnNumber: TdxBarButton;
btnLocked: TdxBarButton;
cxStyleRepository1: TcxStyleRepository;
cxStyle1: TcxStyle;
stModified: TdxBarStatic;
stFontDialog: TdxBarScreenTip;
stHelpButton: TdxBarScreenTip;
dxBarButtonOptions: TdxBarButton;
procedure FormCreate(Sender: TObject);
procedure dxBarButtonNewClick(Sender: TObject);
procedure dxBarButtonOpenClick(Sender: TObject);
procedure dxBarButtonCloseClick(Sender: TObject);
procedure dxBarButtonSaveClick(Sender: TObject);
procedure dxBarButtonSaveAsRTFClick(Sender: TObject);
procedure dxBarButtonSaveAsTextClick(Sender: TObject);
procedure dxBarButtonPrintClick(Sender: TObject);
procedure dxBarButtonExitClick(Sender: TObject);
procedure dxBarButtonUndoClick(Sender: TObject);
procedure dxBarButtonCutClick(Sender: TObject);
procedure dxBarButtonCopyClick(Sender: TObject);
procedure dxBarButtonPasteClick(Sender: TObject);
procedure dxBarButtonClearClick(Sender: TObject);
procedure dxBarButtonSelectAllClick(Sender: TObject);
procedure dxBarButtonFindClick(Sender: TObject);
procedure dxBarButtonReplaceClick(Sender: TObject);
procedure dxBarComboFontNameChange(Sender: TObject);
procedure dxBarComboFontSizeChange(Sender: TObject);
procedure dxBarButtonBoldClick(Sender: TObject);
procedure dxBarButtonItalicClick(Sender: TObject);
procedure dxBarButtonUnderlineClick(Sender: TObject);
procedure dxBarComboFontColorChange(Sender: TObject);
procedure dxBarButtonBulletsClick(Sender: TObject);
procedure dxBarButtonAlignClick(Sender: TObject);
procedure dxBarButtonProtectedClick(Sender: TObject);
procedure FontClick(Sender: TObject);
procedure FindOne(Sender: TObject);
procedure ReplaceOne(Sender: TObject);
procedure dxBarLargeButtonBlueSchemeClick(Sender: TObject);
procedure dxBarLargeButtonBlackSchemeClick(Sender: TObject);
procedure dxBarLargeButtonSilverSchemeClick(Sender: TObject);
procedure dxBarLargeButton10Click(Sender: TObject);
procedure dxBarLargeButton8Click(Sender: TObject);
procedure dxBarLargeButton9Click(Sender: TObject);
procedure dxBarLargeButton6Click(Sender: TObject);
procedure dxBarLargeButton7Click(Sender: TObject);
procedure EditorChange(Sender: TObject);
procedure EditorSelectionChange(Sender: TObject);
procedure EditorMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure RibbonResize(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormActivate(Sender: TObject);
procedure ApplicationMenuRecentDocumentsClick(Sender: TObject;
AIndex: Integer);
procedure btnLockedClick(Sender: TObject);
procedure RibbonHelpButtonClick(Sender: TdxCustomRibbon);
procedure RibbonHideMinimizedByClick(Sender: TdxCustomRibbon;
AWnd: Cardinal; AShift: TShiftState; const APos: TPoint;
var AAllowProcessing: Boolean);
procedure dxBarButtonOptionsClick(Sender: TObject);
private
FFileName: string;
FUpdating: Boolean;
function GetEditorCol: Integer;
function GetEditorRow: Integer;
procedure MakeNewDocument;
procedure SetFileName(Value: string);
procedure UpdateActionsImages;
public
procedure OpenFile(const AFileName: string);
function QuerySaveFile: Integer;
function SaveFile(ASaveAs: Boolean; APlainText: Boolean = False): Boolean;
procedure SetColorScheme(const AName: string);
procedure SetModified(Value: Boolean);
procedure ShowItems(AShow: Boolean);
property EditorCol: Integer read GetEditorCol;
property EditorRow: Integer read GetEditorRow;
property FileName: string read FFileName write SetFileName;
end;
var
RibbonDemoMainForm: TRibbonDemoMainForm;
implementation
{$R *.DFM}
{$R windowsxp.res}
uses
RichEdit, RibbonNotepadDemoOptions, RibbonDemoAbout;
const
sRichEditFoundResultCaption = 'Information';
sRichEditTextNotFound = 'The search text is not found.';
sRichEditReplaceAllResult = 'Replaced %d occurances.';
sDefaultDocName = 'Document1.rtf';
RTFFilter = 'Rich Text Files (*.RTF)|*.RTF';
TXTFilter = 'Plain text (*.TXT)|*.TXT';
function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric;
FontType: Integer; Data: Pointer): Integer; stdcall;
begin
TStrings(Data).Add(LogFont.lfFaceName);
Result := 1;
end;
function TRibbonDemoMainForm.GetEditorCol: Integer;
begin
with Editor do
Result := SelStart - SendMessage(Handle, EM_LINEINDEX, EditorRow, 0);
end;
function TRibbonDemoMainForm.GetEditorRow: Integer;
begin
with Editor do
Result := SendMessage(Handle, EM_LINEFROMCHAR, SelStart, 0);
end;
procedure TRibbonDemoMainForm.MakeNewDocument;
begin
Editor.Clear;
SetModified(False);
FileName := sDefaultDocName;
end;
procedure TRibbonDemoMainForm.SetFileName(Value: string);
var
AIndex: Integer;
begin
Ribbon.DocumentName := ExtractFileName(Value);
FFileName := Value;
if FileExists(FFileName) then
begin
AIndex := ApplicationMenu.ExtraPaneItems.IndexOf(FFileName);
if AIndex > -1 then
ApplicationMenu.ExtraPaneItems.Delete(AIndex);
ApplicationMenu.ExtraPaneItems.Insert(0).Text := FFileName;
end;
end;
procedure TRibbonDemoMainForm.FindOne(Sender: TObject);
var
StartPos, FindLength, FoundAt: Integer;
Flags: TSearchTypes;
P: TPoint;
CaretR, R, IntersectR: TRect;
begin
with Editor, TFindDialog(Sender) do
begin
if frDown in Options then
begin
if SelLength = 0 then StartPos := SelStart
else StartPos := SelStart + SelLength;
FindLength := Length(Text) - StartPos;
end
else
begin
StartPos := SelStart;
FindLength := -StartPos;
end;
Flags := [];
if frMatchCase in Options then Include(Flags, stMatchCase);
if frWholeWord in Options then Include(Flags, stWholeWord);
Screen.Cursor := crHourglass;
FoundAt := Editor.FindText(FindText, StartPos, FindLength, Flags);
if not (frReplaceAll in Options) then Screen.Cursor := crDefault;
if FoundAt > -1 then
if frReplaceAll in Options then
begin
SelStart := FoundAt;
SelLength := Length(FindText);
end
else
begin
SetFocus;
SelStart := FoundAt;
SelLength := Length(FindText);
GetCaretPos(P);
P := ClientToScreen(P);
CaretR := Rect(P.X, P.Y, P.X + 2, P.Y + 20);
GetWindowRect(Handle, R);
if IntersectRect(IntersectR, CaretR, R) then
if P.Y < Screen.Height div 2 then
Top := P.Y + 40
else
Top := P.Y - (R.Bottom - R.Top + 20);
end
else
if not (frReplaceAll in Options) then
Application.MessageBox(sRichEditTextNotFound,
sRichEditFoundResultCaption, MB_ICONINFORMATION);
end;
end;
procedure TRibbonDemoMainForm.ReplaceOne(Sender: TObject);
var
ReplacedCount, OldSelStart, PrevSelStart: Integer;
S: string;
begin
with Editor, TReplaceDialog(Sender) do
begin
ReplacedCount := 0;
OldSelStart := SelStart;
if frReplaceAll in Options then
Screen.Cursor := crHourglass;
repeat
if (SelLength > 0) and ((SelText = FindText) or
(not (frMatchCase in Options) and
(AnsiUpperCase(SelText) = AnsiUpperCase(FindText)))) then
begin
SelText := ReplaceText;
Inc(ReplacedCount);
end;
PrevSelStart := SelStart;
FindOne(Sender);
until not (frReplaceAll in Options) or (SelStart = PrevSelStart);
if frReplaceAll in Options then
begin
Screen.Cursor := crDefault;
if ReplacedCount = 0 then S := sRichEditTextNotFound
else
begin
SelStart := OldSelStart;
S := Format(sRichEditReplaceAllResult, [ReplacedCount]);
end;
Application.MessageBox(PChar(S), sRichEditFoundResultCaption,
MB_ICONINFORMATION);
end;
end;
end;
procedure TRibbonDemoMainForm.RibbonResize(Sender: TObject);
const
Space = 8;
begin
Editor.SetBounds(Space, Ribbon.Height + Space, ClientWidth - Space * 2,
ClientHeight - (Ribbon.Height + dxStatusBar.Height + Space * 2));
if Ribbon.QuickAccessToolbar.Position = qtpAboveRibbon then
dxBarLargeButton8.Down := True
else
dxBarLargeButton9.Down := True;
end;
procedure TRibbonDemoMainForm.EditorChange(Sender: TObject);
begin
if Editor = nil then Exit;
Editor.OnSelectionChange(Editor);
SetModified(Editor.Modified);
dxBarButtonUndo.Enabled := SendMessage(Editor.Handle, EM_CANUNDO, 0, 0) <> 0;
end;
procedure TRibbonDemoMainForm.EditorMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight then
dxBarPopupMenu.PopupFromCursorPos;
end;
procedure TRibbonDemoMainForm.EditorSelectionChange(Sender: TObject);
begin
with Editor, SelAttributes do
begin
FUpdating := True;
dxBarComboFontSize.OnChange := nil;
dxBarComboFontName.OnChange := nil;
dxBarComboFontColor.OnChange := nil;
try
btnLineNumber.Caption := Format(' Line: %3d ', [1 + EditorRow]);
btnColumnNumber.Caption := Format(' Row: %3d ', [1 + EditorCol]);
dxBarButtonCopy.Enabled := SelLength > 0;
dxBarButtonCut.Enabled := dxBarButtonCopy.Enabled;
dxBarButtonPaste.Enabled := SendMessage(Editor.Handle, EM_CANPASTE, 0, 0) <> 0;
dxBarButtonClear.Enabled := dxBarButtonCopy.Enabled;
dxBarComboFontSize.Text := IntToStr(Size);
dxBarComboFontName.Text := Name;
dxBarComboFontColor.Color := Color;
dxBarButtonBold.Down := fsBold in Style;
dxBarButtonItalic.Down := fsItalic in Style;
dxBarButtonUnderline.Down := fsUnderline in Style;
dxBarButtonBullets.Down := Boolean(Paragraph.Numbering);
case Ord(Paragraph.Alignment) of
0: dxBarButtonAlignLeft.Down := True;
1: dxBarButtonAlignRight.Down := True;
2: dxBarButtonCenter.Down := True;
end;
dxBarButtonProtected.Down := Protected;
finally
FUpdating := False;
dxBarComboFontSize.OnChange := dxBarComboFontSizeChange;
dxBarComboFontName.OnChange := dxBarComboFontNameChange;
dxBarComboFontColor.OnChange := dxBarComboFontColorChange;
end;
end;
end;
procedure TRibbonDemoMainForm.OpenFile(const AFileName: string);
begin
if Editor.Modified then
case QuerySaveFile of
ID_YES:
if not SaveFile(False) then
Exit;
ID_CANCEL:
Exit;
end;
OpenDialog.FileName := AFileName;
if (AFileName <> '') or OpenDialog.Execute then
begin
FileName := OpenDialog.FileName;
Editor.Lines.LoadFromFile(FileName);
SetModified(False);
end;
end;
function TRibbonDemoMainForm.QuerySaveFile: Integer;
begin
Result := Application.MessageBox(
PChar(Format('Do you want to save the changes you made to "%s"?', [Ribbon.DocumentName])),
PChar(Application.Title), MB_ICONQUESTION or MB_YESNOCANCEL);
end;
function TRibbonDemoMainForm.SaveFile(ASaveAs: Boolean; APlainText: Boolean = False): Boolean;
begin
SaveDialog.FileName := ChangeFileExt(ExtractFileName(FileName), '');
if APlainText then
SaveDialog.Filter := TXTFilter
else
SaveDialog.Filter := RTFFilter;
ASaveAs := ASaveAs or (FileName = '') or (FileName = sDefaultDocName);
Result := not ASaveAs or SaveDialog.Execute;
if Result then
begin
Editor.PlainText := APlainText;
Editor.Lines.SaveToFile(SaveDialog.FileName);
if not APlainText then
begin
SetModified(False);
if ASaveAs then
FileName := SaveDialog.FileName;
end;
end;
end;
procedure TRibbonDemoMainForm.SetColorScheme(const AName: string);
begin
Ribbon.ColorSchemeName := AName;
dxStatusBar.Invalidate;
end;
procedure TRibbonDemoMainForm.SetModified(Value: Boolean);
begin
Editor.Modified := Value;
if Value then
begin
stModified.ImageIndex := 2;
stModified.Caption := 'Modified';
end
else
begin
stModified.ImageIndex := -1;
stModified.Caption := '';
end;
dxBarButtonSave.Enabled := Value;
end;
procedure TRibbonDemoMainForm.ShowItems(AShow: Boolean);
begin
BarManager.LockUpdate := True;
try
if not AShow then
begin
btnLineNumber.Caption := '';
btnColumnNumber.Caption := '';
stModified.Caption := '';
end;
BarManager.Groups[0].Enabled := AShow;
finally
BarManager.LockUpdate := False;
end;
end;
procedure TRibbonDemoMainForm.UpdateActionsImages;
begin
dxBarButton7.LargeImageIndex := 18;
dxBarButton7.ImageIndex := 18;
dxBarLargeButton1.LargeImageIndex := 18;
dxBarLargeButton1.ImageIndex := 18;
dxBarButton1.LargeImageIndex := 19;
dxBarButton1.ImageIndex := 19;
dxBarButton3.LargeImageIndex := 20;
dxBarButton3.ImageIndex := 20;
dxBarButton4.LargeImageIndex := 21;
dxBarButton4.ImageIndex := 21;
dxBarButton5.LargeImageIndex := 22;
dxBarButton5.ImageIndex := 22;
end;
procedure TRibbonDemoMainForm.FormActivate(Sender: TObject);
begin
Editor.OnChange(Editor);
end;
procedure TRibbonDemoMainForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if Editor.Modified then
case QuerySaveFile of
ID_YES: CanClose := SaveFile(False);
ID_NO: CanClose := True;
ID_CANCEL: CanClose := False;
end;
end;
procedure TRibbonDemoMainForm.FormCreate(Sender: TObject);
begin
dmCommonData.AboutFormClass := TRibbonDemoAboutForm;
if FileExists(sDefaultDocName) then
OpenFile(ExpandFileName(sDefaultDocName))
else
FileName := sDefaultDocName;
OpenDialog.Filter := RTFFilter;
OpenDialog.InitialDir := ExtractFilePath(ParamStr(0));
SaveDialog.InitialDir := OpenDialog.InitialDir;
ShowItems(True);
UpdateActionsImages;
end;
procedure TRibbonDemoMainForm.dxBarButtonNewClick(Sender: TObject);
begin
if Editor.Modified then
case QuerySaveFile of
ID_YES:
if SaveFile(False) then
MakeNewDocument;
ID_NO:
MakeNewDocument;
end
else
MakeNewDocument;
end;
procedure TRibbonDemoMainForm.dxBarButtonOpenClick(Sender: TObject);
begin
OpenFile('');
end;
procedure TRibbonDemoMainForm.dxBarButtonCloseClick(Sender: TObject);
begin
Close;
end;
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
SendMessage(Editor.Handle, EM_UNDO, 0, 0);
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.dxBarComboFontColorChange(Sender: TObject);
begin
Editor.SelAttributes.Color := dxBarComboFontColor.Color;
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;
end.