git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.DevExpressVCL@8 05c56307-c608-d34a-929d-697000501d7a
809 lines
24 KiB
ObjectPascal
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.
|