OS: Debian 10 (buster) LXDE
fpc 3.3.1
lazaraus 2.1
FNC TMS FNC UI Pack
v3.2.2.1 | Tuesday, December 08, 2020
component: TTMSFNCRibbon not work ShortCutHint
Exapmple:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, LCLTMSFNCRibbon;
type
{ TForm1 }
TForm1 = class(TForm)
TMSFNCRibbon1: TTMSFNCRibbon;
TMSFNCRibbon1BottomContainer: TTMSFNCRibbonBottomContainer;
TMSFNCRibbon1Caption: TTMSFNCRibbonCaption;
TMSFNCRibbon1Icon: TTMSFNCRibbonIcon;
TMSFNCRibbon1PageControl: TTMSFNCRibbonPageControl;
TMSFNCRibbon1PageControlContainer: TTMSFNCRibbonContainer;
TMSFNCRibbon1PageControlFileButton: TTMSFNCRibbonFileButton;
TMSFNCRibbon1PageControlPage0: TTMSFNCRibbonPageControlContainer;
TMSFNCRibbon1PageControlPage1: TTMSFNCRibbonPageControlContainer;
TMSFNCRibbon1PageControlPage2: TTMSFNCRibbonPageControlContainer;
TMSFNCRibbon1QAT: TTMSFNCRibbonQAT;
TMSFNCRibbon1SystemMenu: TTMSFNCRibbonSystemMenu;
TMSFNCRibbon1SystemMenuCloseButton: TTMSFNCRibbonSystemMenuToolBarButton;
TMSFNCRibbon1SystemMenuHelpButton: TTMSFNCRibbonSystemMenuToolBarButton;
TMSFNCRibbon1SystemMenuMaximizeButton: TTMSFNCRibbonSystemMenuToolBarButton;
TMSFNCRibbon1SystemMenuMinimizeButton: TTMSFNCRibbonSystemMenuToolBarButton;
TMSFNCRibbon1Wrapper: TTMSFNCRibbonToolBarWrapper;
procedure FormCreate(Sender: TObject);
private
procedure btnOnClick1(Sender: TObject);
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var
tb: TTMSFNCRibbonToolBar;
btn: TTMSFNCRibbonToolBarButton;
i: integer;
begin
TMSFNCRibbon1.PageControl.Pages.Clear;
for I := 0 to 2 do
TMSFNCRibbon1.PageControl.AddPage('Page ' + IntToStr(I));
TMSFNCRibbon1PageControl.Pages[0].ShortCutHint := 'A';
TMSFNCRibbon1PageControl.Pages[1].ShortCutHint := 'B';
TMSFNCRibbon1PageControl.Pages[2].ShortCutHint := 'C';
for I := 0 to 1 do begin
tb := TMSFNCRibbon1PageControl.PageContainers[0].AddToolBar('ShortCutHint Toolbar');
tb.ShortCutHint := 'T';
btn := tb.AddButton;
btn.Width := 200;
btn.OnClick := @btnOnClick1 ;
btn.Text := 'Calendar';
btn.ShortCutHint := 'TB'+inttostr(1 * (I + 1));
btn := tb.AddButton;
btn.Width := 200;
btn.Text := 'Date/Time';
btn.ShortCutHint := 'TB'+IntToStr(2 * (I + 1));
end;
end;
procedure TForm1.btnOnClick1(Sender: TObject);
begin
ShowMessage('Calendar');
end;
end.
Hi,
We have tested this here on Windows and could see shortcut hints. Did you press the ALT key to show the shortcuts?
of course, press ALT key
I also compiled for win32, cross-compile, not work
Hi,
Shortcuts need to have only one character and need to be unique for each display. See below:
for I := 0 to 1 do begin
tb := TMSFNCRibbon1.PageControl.PageContainers[0].AddToolBar('ShortCutHint Toolbar');
tb.ShortCutHint := 'T';
btn := tb.AddButton;
btn.Width := 200;
btn.Text := 'Calendar';
btn.ShortCutHint := chr(65 + I * (I * 2));
btn.OnClick:= @DoClick;
btn := tb.AddButton;
btn.Width := 200;
btn.Text := 'Date/Time';
btn.ShortCutHint := chr(65 + I + (I * 2) + 1);
btn.OnClick:= @DoClick;
My example code example doc pdf:
(I attached at the beginning)
Zeljko_Cvijanovic:
TMSFNCRibbon1PageControl.Pages[0].ShortCutHint := 'A';
TMSFNCRibbon1PageControl.Pages[1].ShortCutHint := 'B';
TMSFNCRibbon1PageControl.Pages[2].ShortCutHint := 'C';
for I := 0 to 1 do begin
tb := TMSFNCRibbon1PageControl.PageContainers[0].AddToolBar('ShortCutHint Toolbar');
tb.ShortCutHint := 'T';
btn := tb.AddButton;
btn.Width := 200;
btn.OnClick := @btnOnClick1 ;
btn.Text := 'Calendar';
btn.ShortCutHint := 'TB'+inttostr(1 * (I + 1));
btn := tb.AddButton;
btn.Width := 200;
btn.Text := 'Date/Time';
btn.ShortCutHint := 'TB'+IntToStr(2 * (I + 1));
end;
Yes, I saw the code, but the code is not correct. You cannot have shortcut hints with multiple characters.
TB1 is not allowed.
Please change it to another unique character such as A, B, C, D, ... as demonstrated in my screenshot.
there is still a problem, nothing is happening
Button File
ShorCutHint = F
not work
Are you able to reproduce this in Windows as well?
I also compiled for win32, cross-compile, not work
(I wrote in the first answer)
We have tested here on Lazarus 2.0.2 on Windows and shortcut hints are working. Please attach a sample demonstrating the issues.
Lazarus 2.1
coross compile to aarch64 linux
ubuntu 20.04 - Raspberry pi 400
(same behavior as on linux debian, not working)
example :unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, LCLTMSFNCRibbon;
type
{ TForm1 }
TForm1 = class(TForm)
TMSFNCRibbon1: TTMSFNCRibbon;
TMSFNCRibbon1BottomContainer: TTMSFNCRibbonBottomContainer;
TMSFNCRibbon1Caption: TTMSFNCRibbonCaption;
TMSFNCRibbon1Icon: TTMSFNCRibbonIcon;
TMSFNCRibbon1PageControl: TTMSFNCRibbonPageControl;
TMSFNCRibbon1PageControlContainer: TTMSFNCRibbonContainer;
TMSFNCRibbon1PageControlFileButton: TTMSFNCRibbonFileButton;
TMSFNCRibbon1PageControlPage0: TTMSFNCRibbonPageControlContainer;
TMSFNCRibbon1PageControlPage1: TTMSFNCRibbonPageControlContainer;
TMSFNCRibbon1PageControlPage2: TTMSFNCRibbonPageControlContainer;
TMSFNCRibbon1QAT: TTMSFNCRibbonQAT;
TMSFNCRibbon1SystemMenu: TTMSFNCRibbonSystemMenu;
TMSFNCRibbon1SystemMenuCloseButton: TTMSFNCRibbonSystemMenuToolBarButton;
TMSFNCRibbon1SystemMenuHelpButton: TTMSFNCRibbonSystemMenuToolBarButton;
TMSFNCRibbon1SystemMenuMaximizeButton: TTMSFNCRibbonSystemMenuToolBarButton;
TMSFNCRibbon1SystemMenuMinimizeButton: TTMSFNCRibbonSystemMenuToolBarButton;
TMSFNCRibbon1Wrapper: TTMSFNCRibbonToolBarWrapper;
procedure FormCreate(Sender: TObject);
private
procedure btnOnClick1(Sender: TObject);
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
var
tb: TTMSFNCRibbonToolBar;
btn: TTMSFNCRibbonToolBarButton;
i: integer;
begin
TMSFNCRibbon1.PageControl.Pages.Clear;
for I := 0 to 2 do
TMSFNCRibbon1.PageControl.AddPage('Page ' + IntToStr(I));
TMSFNCRibbon1PageControl.Pages[0].ShortCutHint := 'A';
TMSFNCRibbon1PageControl.Pages[1].ShortCutHint := 'B';
TMSFNCRibbon1PageControl.Pages[2].ShortCutHint := 'C';
for I := 0 to 1 do begin
tb := TMSFNCRibbon1PageControl.PageContainers[0].AddToolBar('ShortCutHint Toolbar');
tb.ShortCutHint := 'T';
btn := tb.AddButton;
btn.Width := 200;
btn.OnClick := @btnOnClick1 ;
btn.Text := 'Calendar';
btn.ShortCutHint := 'T'+inttostr(1 * (I + 1));
btn := tb.AddButton;
btn.Width := 200;
btn.Text := 'Date/Time';
btn.ShortCutHint := 'T'+IntToStr(2 * (I + 1));
end;
end;
procedure TForm1.btnOnClick1(Sender: TObject);
begin
ShowMessage('Calendar');
end;
end.
Your form needs to inherit from TTMSFNCRibbonForm:
TForm1 = class(TTMSFNCRibbonForm)
Pieter_Scheldeman:
TTMSFNCRibbonForm
ShortCutHint it works now.
**but I lost TMSFNCRibbon1SystemMenu: TTMSFNCRibbonSystemMenu;
not minimize, maximize, close
We'll further investigate this here as soon as possible, thank you for the feedback.
We have investigated this here and what happens is the following: When inheriting from TTMSFNCRibbonForm (which is required) it sets the BorderStyle to none, which automatically clears the border icons. This is the reason for the system menu that is not visible. to fix this. Please use the following code in the form constructor:
procedure TForm1.FormCreate(Sender: TObject);
var
r: TTMSFNCRibbon;
begin
BorderIcons := [biSystemMenu, biMinimize, biMaximize];
r := TTMSFNCRibbon.Create(Self);
r.Parent := Self;
r.RebuildUsingName('MyRibbon');
end;
Thanks, I'll wait for the correction.
If I use it like this, I need to write all the buttons.
Can't assign BitmapContainer once. (I have to individually for each new buttons)
But this is how it helps me
procedure TForm1.FormCreate(Sender: TObject);
begin
BorderIcons := [biSystemMenu, biMinimize, biMaximize];
end;
1 Like