339 lines
8.3 KiB
ObjectPascal

unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ActnList,
StdActns, StdCtrls, Menus, ComCtrls, ExtCtrls,
SpkToolbar, spkt_Buttons, spkt_Checkboxes, spkt_Pane, spkt_Tab, spkt_Appearance;
type
{ TForm1 }
TForm1 = class(TForm)
AcOpen: TAction;
AcClassicalGUI: TAction;
AcRibbonGUI: TAction;
AcSave: TAction;
AcQuit: TAction;
AcAutoSave: TAction;
AcSaveNow: TAction;
AcBold: TAction;
AcItalic: TAction;
AcLeftJustify: TAction;
AcCenter: TAction;
AcRightJustify: TAction;
AcAbout: TAction;
AcUnderline: TAction;
ActionList: TActionList;
AcEditCopy: TEditCopy;
AcEditCut: TEditCut;
AcEditPaste: TEditPaste;
ImageList: TImageList;
HiResImages: TImageList;
Label1: TLabel;
LargeImageList: TImageList;
MainMenu: TMainMenu;
MenuItem1: TMenuItem;
MenuItem10: TMenuItem;
MenuItem11: TMenuItem;
MenuItem12: TMenuItem;
MenuItem13: TMenuItem;
MenuItem14: TMenuItem;
MenuItem15: TMenuItem;
MenuItem16: TMenuItem;
MenuItem17: TMenuItem;
MenuItem18: TMenuItem;
MenuItem19: TMenuItem;
MenuItem2: TMenuItem;
MenuItem20: TMenuItem;
MenuItem21: TMenuItem;
MenuItem22: TMenuItem;
MenuItem23: TMenuItem;
MenuItem24: TMenuItem;
MenuItem25: TMenuItem;
MenuItem26: TMenuItem;
MenuItem27: TMenuItem;
MenuItem28: TMenuItem;
MenuItem29: TMenuItem;
MenuItem3: TMenuItem;
MenuItem30: TMenuItem;
MenuItem31: TMenuItem;
MenuItem4: TMenuItem;
MenuItem5: TMenuItem;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
MenuItem8: TMenuItem;
MenuItem9: TMenuItem;
Panel1: TPanel;
SpkLargeButton4: TSpkLargeButton;
SpkPane2: TSpkPane;
SpkPane4: TSpkPane;
SpkSmallButton10: TSpkSmallButton;
SpkSmallButton11: TSpkSmallButton;
SpkSmallButton4: TSpkSmallButton;
SpkSmallButton6: TSpkSmallButton;
SpkSmallButton8: TSpkSmallButton;
SpkSmallButton9: TSpkSmallButton;
SpkTab4: TSpkTab;
SpkTab5: TSpkTab;
StyleMenu: TPopupMenu;
SpkCheckbox1: TSpkCheckbox;
SpkLargeButton1: TSpkLargeButton;
SpkLargeButton2: TSpkLargeButton;
SpkLargeButton3: TSpkLargeButton;
SpkPane1: TSpkPane;
SpkPane3: TSpkPane;
SpkPane5: TSpkPane;
SpkPane6: TSpkPane;
SpkRadioButton1: TSpkRadioButton;
SpkRadioButton2: TSpkRadioButton;
SpkSmallButton1: TSpkSmallButton;
SpkSmallButton2: TSpkSmallButton;
SpkSmallButton3: TSpkSmallButton;
SpkSmallButton5: TSpkSmallButton;
SpkSmallButton7: TSpkSmallButton;
SpkTab1: TSpkTab;
SpkTab2: TSpkTab;
SpkTab3: TSpkTab;
SpkToolbar1: TSpkToolbar;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
ToolButton14: TToolButton;
ToolButton15: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
procedure AcAboutExecute(Sender: TObject);
procedure AcAutoSaveExecute(Sender: TObject);
procedure AcBoldExecute(Sender: TObject);
procedure AcCenterExecute(Sender: TObject);
procedure AcClassicalGUIExecute(Sender: TObject);
procedure AcEditCopyExecute(Sender: TObject);
procedure AcEditCutExecute(Sender: TObject);
procedure AcEditPasteExecute(Sender: TObject);
procedure AcItalicExecute(Sender: TObject);
procedure AcLeftJustifyExecute(Sender: TObject);
procedure AcOpenExecute(Sender: TObject);
procedure AcQuitExecute(Sender: TObject);
procedure AcRibbonGUIExecute(Sender: TObject);
procedure AcRightJustifyExecute(Sender: TObject);
procedure AcSaveExecute(Sender: TObject);
procedure AcSaveNowExecute(Sender: TObject);
procedure AcUnderlineExecute(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject);
procedure StyleMenuClick(Sender: TObject);
private
{ private declarations }
procedure LoadFromIni;
procedure SaveToIni;
procedure SetStyle(AStyle: TSpkStyle);
procedure SetUserInterface(Ribbon:boolean);
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
uses
inifiles, unit2;
{ TForm1 }
procedure TForm1.AcClassicalGUIExecute(Sender: TObject);
begin
SetUserInterface(false);
end;
procedure TForm1.AcAboutExecute(Sender: TObject);
var
F: TAboutForm;
begin
F := TAboutForm.Create(nil);
try
F.ShowModal;
finally
F.Free;
end;
end;
procedure TForm1.AcAutoSaveExecute(Sender: TObject);
begin
// Checked is handled by "AutoCheck". Need this method to have the action enabled.
end;
procedure TForm1.AcBoldExecute(Sender: TObject);
begin
Label1.Caption := '"Bold" clicked';
end;
procedure TForm1.AcCenterExecute(Sender: TObject);
begin
Label1.Caption := '"Center" clicked';
end;
procedure TForm1.AcEditCopyExecute(Sender: TObject);
begin
Label1.Caption := '"Copy" clicked';
end;
procedure TForm1.AcEditCutExecute(Sender: TObject);
begin
Label1.Caption := '"Cut" clicked';
end;
procedure TForm1.AcEditPasteExecute(Sender: TObject);
begin
Label1.Caption := '"Paste" clicked';
end;
procedure TForm1.AcItalicExecute(Sender: TObject);
begin
Label1.Caption := '"Italic" clicked';
end;
procedure TForm1.AcLeftJustifyExecute(Sender: TObject);
begin
Label1.Caption := '"Left-justify" clicked';
end;
procedure TForm1.AcOpenExecute(Sender: TObject);
begin
Label1.Caption := '"Open" clicked';
end;
procedure TForm1.AcQuitExecute(Sender: TObject);
begin
Close;
end;
procedure TForm1.AcRibbonGUIExecute(Sender: TObject);
begin
SetUserInterface(true);
end;
procedure TForm1.AcRightJustifyExecute(Sender: TObject);
begin
Label1.Caption := '"Right-justify" clicked';
end;
procedure TForm1.AcSaveExecute(Sender: TObject);
begin
Label1.Caption := '"Save" clicked';
end;
procedure TForm1.AcSaveNowExecute(Sender: TObject);
begin
SaveToIni;
end;
procedure TForm1.AcUnderlineExecute(Sender: TObject);
begin
Label1.Caption := '"Underline" clicked';
end;
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
if CanClose then
if MessageDlg('Do you really want to close this application?', mtConfirmation,
[mbYes, mbNo], 0) <> mrYes
then
CanClose := false;
if CanClose then
if AcAutoSave.Checked then
SaveToIni;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SetUserInterface(true);
Label1.Caption := '';
LoadFromIni;
end;
procedure TForm1.LoadFromIni;
var
ini: TCustomIniFile;
begin
ini := TMemIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
try
SetUserInterface(ini.ReadBool('MainForm', 'RibbonInterface', AcRibbonGUI.Checked));
SpkToolbar1.Style := TSpkStyle(ini.ReadInteger('MainForm', 'RibbonStyle', 0));
SetStyle(SpkToolbar1.Style);
finally
ini.Free;
end;
end;
procedure TForm1.StyleMenuClick(Sender: TObject);
var
i: Integer;
begin
// SpkToolbar1.Style := TSpkStyle((Sender as TMenuItem).Tag);
for i:=0 to StyleMenu.Items.Count-1 do
StyleMenu.Items[i].Checked := StyleMenu.Items[i] = TMenuItem(Sender);
SetStyle(TSpkStyle((Sender as TMenuItem).Tag));
end;
procedure TForm1.SetStyle(AStyle: TSpkStyle);
begin
SpkToolbar1.Style := AStyle;
case SpkToolbar1.Style of
spkOffice2007Blue : SpkToolbar1.Color := clSkyBlue;
spkOffice2007Silver : SpkToolbar1.Color := clWhite;
spkOffice2007SilverTurquoise : SpkToolbar1.Color := clWhite;
spkMetroLight : SpkToolbar1.Color := clSilver;
spkMetroDark : SpkToolbar1.Color := $080808;
end;
end;
procedure TForm1.SaveToIni;
var
ini: TCustomIniFile;
begin
ini := TMemIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
try
ini.WriteBool('MainForm', 'RibbonInterface', AcRibbonGUI.Checked);
ini.WriteInteger('MainForm', 'RibbonStyle', ord(SpkToolbar1.Style));
finally
ini.Free;
end;
end;
procedure TForm1.SetUserInterface(Ribbon: boolean);
begin
if Ribbon then begin
Menu := nil;
Toolbar1.Hide;
SpkToolbar1.Show;
AcRibbonGUI.Checked := true;
end else begin
SpkToolbar1.Hide;
Menu := MainMenu;
Toolbar1.Show;
AcClassicalGUI.Checked := true;
end;
end;
end.