Serge Girard

Your Rank: 93
Points: 1
Well, i understand your way but don't focus on my adding button it's not the guilty.
On a form put a TTabControl, add 2 or more tab items, on each add a button.
Code the onClick event
procedure TForm1.ButtononthetabClick(Sender: TObject);
begin
TabControl1.Delete(tabcontrol1.tabindex);
end;
I also think about changing activetab before deleting but with the same result : BorderIcons still remains inactive till i click on the tabcontrol !
procedure TForm1.Button3Click(Sender: TObject);
var i : integer;
begin
i:=tabcontrol1.tabindex;
TabControl1.Next();
TabControl1.Delete(i);
end;
Read More...
Thanks,
SetFocus i tried but that don't do the trick
I thougth also about Owner and Parent but using AddObject is where i'm lost !
Does AddObject change the parent/the owner/none that is a question ?
Read More...
Hello,
I managed to have a CloseButton on the tabitems (two ways with a perso Style or without)
My only problem is when i close a TabItem, Main form seems to loose focus, on windows the system menu is inactive, i have to click on the tabcontrol once to regain focus !
I tried this with Tokyo and Rio : same problem !
Using an independant button to close tabs don't cause difficulties. So my question : did i miss something and what if so ?
Not attached but supplied the code
unit UnitAddTab;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.TabControl,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, FMX.Layouts, FMX.PlatForm,
FMX.Edit;
type
TForm1 = class(TForm)
TabControl1: TTabControl;
BtnStyle: TButton;
BtnAddButton: TButton;
StyleBook1: TStyleBook;
procedure BtnStyleClick(Sender: TObject);
procedure BtnAddButtonClick(Sender: TObject);
procedure TabControl1Click(Sender: TObject);
private
{ Déclarations privées }
procedure CloseTab(sender : TObject);
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.BtnAddButtonClick(Sender: TObject);
var ATab : TTabItem;
AButton : TButton;
ARectangle : TRectangle;
ForeNumber : Integer;
begin
ForeNumber:=TabControl1.TabCount;
ATab:=TabControl1.Add();
ATab.Text:='tabitem '+ForeNumber.ToString;
AButton:=TButton.Create(Self);
AButton.StyleLookup:='cleareditbutton';
AButton.Align:=TAlignLayout.Right;
case TabControl1.EffectiveTabPosition of
TTabPosition.Bottom: ARectangle:=TRectangle(ATab.FindStyleResource('Bottom'));
else ARectangle:=TRectangle(ATab.FindStyleResource('Top'));
end;
AButton.Margins.Top:=2;
AButton.Margins.Bottom:=2;
AButton.Width:=TLayout(ARectangle.Owner).Height-4;
AButton.TagObject:=ATab;
AButton.TabStop:=False;
AButton.OnClick:=CloseTab;
ARectangle.AddObject(AButton);
TabControl1.ActiveTab:=ATab;
end;
procedure TForm1.BtnStyleClick(Sender: TObject);
var ATab : TTabItem;
ForeNumber : Integer;
begin
ForeNumber:=TabControl1.TabCount;
ATab:=TabControl1.Add();
ATab.Text:='tabitem '+ForeNumber.ToString;
ATab.StyleLookup:='CloseTabItem'; // perso Style
case TabControl1.EffectiveTabPosition of
TTabPosition.Bottom: begin
TButton(ATab.FindStyleResource('Bottom.CloseButton')).OnClick:=CloseTab;
TButton(ATab.FindStyleResource('Bottom.CloseButton')).TagObject:=ATab;
end;
else begin
TButton(ATab.FindStyleResource('Top.CloseButton')).OnClick:=CloseTab;
TButton(ATab.FindStyleResource('Top.CloseButton')).TagObject:=ATab;
end;
end;
TabControl1.ActiveTab:=ATab;
end;
procedure TForm1.CloseTab(sender: TObject);
var i : Integer;
begin
// a better way ?
for I := 0 to TabControl1.TabCount-1 do
if TabControl1.Tabs[i]=TButton(Sender).TagObject then Break;
if i<TabControl1.TabCount then TabControl1.Delete(i);
// la main form seems to loose focus
end;
end.
FMX
object Form1: TForm1
Left = 0
Top = 0
ActiveControl = BtnStyle
Caption = 'Form1'
ClientHeight = 480
ClientWidth = 640
StyleBook = StyleBook1
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object TabControl1: TTabControl
FullSize = True
Position.X = 16.000000000000000000
Position.Y = 80.000000000000000000
Size.Width = 513.000000000000000000
Size.Height = 385.000000000000000000
Size.PlatformDefault = False
StyleLookup = 'tabcontrolstyle'
TabOrder = 2
TabPosition = PlatformDefault
OnClick = TabControl1Click
end
object BtnStyle: TButton
Position.X = 56.000000000000000000
Position.Y = 8.000000000000000000
Size.Width = 281.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Text = 'Add Styled Tab'
OnClick = BtnStyleClick
end
object BtnAddButton: TButton
Position.X = 56.000000000000000000
Position.Y = 40.000000000000000000
Size.Width = 281.000000000000000000
Size.Height = 22.000000000000000000
Size.PlatformDefault = False
TabOrder = 1
Text = 'Add button'
OnClick = BtnAddButtonClick
end
object StyleBook1: TStyleBook
Styles = <
item
ResourcesBin = {
464D585F5354594C4520322E3501060C436C6F73655461624974656D032C2B00
5450463007544C61796F757400095374796C654E616D65060C436C6F73655461
624974656D05416C69676E070643656E7465720A53697A652E57696474680500
0000000000008A05400B53697A652E4865696768740500000000000000D00340
1453697A652E506C6174666F726D44656661756C7408085461624F7264657202
00000F545461625374796C654F626A65637400095374796C654E616D65060374
6F7005416C69676E0708436F6E74656E74730C436C69704368696C6472656E09
064C6F636B6564090C536F757263654C6F6F6B7570061B57696E646F77732031
30204465736B746F707374796C652E706E670A53697A652E5769647468050000
00000000008A05400B53697A652E4865696768740500000000000000D0034014
53697A652E506C6174666F726D44656661756C74080D41637469766554726967
676572070853656C65637465640A4163746976654C696E6B0E010E436170496E
736574732E4C65667405000000000000008001400D436170496E736574732E54
6F7005000000000000008001400F436170496E736574732E5269676874050000
000000000080014010436170496E736574732E426F74746F6D05000000000000
008001400F536F75726365526563742E4C6566740500000000000000DC04400E
536F75726365526563742E546F700500000000000000B4054010536F75726365
526563742E52696768740500000000000000C2054011536F7572636552656374
2E426F74746F6D0500000000000000E4054000010E436170496E736574732E4C
6566740500000000000000C001400D436170496E736574732E546F7005000000
00000000C001400F436170496E736574732E52696768740500000000000000C0
014010436170496E736574732E426F74746F6D0500000000000000C001400553
63616C650500000000000000C0FF3F0F536F75726365526563742E4C65667405
00000000000000A405400E536F75726365526563742E546F7005000000000000
0087064010536F75726365526563742E52696768740500000000000000910640
11536F75726365526563742E426F74746F6D0500000000000000AA064000010E
436170496E736574732E4C65667405000000000000008002400D436170496E73
6574732E546F7005000000000000008002400F436170496E736574732E526967
6874050000000000000080024010436170496E736574732E426F74746F6D0500
000000000000800240055363616C6505000000000000008000400F536F757263
65526563742E4C6566740500000000000000DC05400E536F7572636552656374
2E546F700500000000000000B4064010536F75726365526563742E5269676874
0500000000000000C2064011536F75726365526563742E426F74746F6D050000
0000000000E4064000000A536F757263654C696E6B0E010E436170496E736574
732E4C65667405000000000000008001400D436170496E736574732E546F7005
000000000000008001400F436170496E736574732E5269676874050000000000
000080014010436170496E736574732E426F74746F6D05000000000000008001
400F536F75726365526563742E4C6566740500000000000000A001400E536F75
726365526563742E546F700500000000000000B4054010536F75726365526563
742E52696768740500000000000000BC044011536F75726365526563742E426F
74746F6D0500000000000000E2054000010E436170496E736574732E4C656674
0500000000000000C001400D436170496E736574732E546F7005000000000000
00C001400F436170496E736574732E52696768740500000000000000C0014010
436170496E736574732E426F74746F6D0500000000000000C00140055363616C
650500000000000000C0FF3F0F536F75726365526563742E4C65667405000000
00000000E001400E536F75726365526563742E546F7005000000000000008706
4010536F75726365526563742E526967687405000000000000008C054011536F
75726365526563742E426F74746F6D0500000000000000A9064000010E436170
496E736574732E4C65667405000000000000008002400D436170496E73657473
2E546F7005000000000000008002400F436170496E736574732E526967687405
0000000000000080024010436170496E736574732E426F74746F6D0500000000
000000800240055363616C6505000000000000008000400F536F757263655265
63742E4C6566740500000000000000A002400E536F75726365526563742E546F
700500000000000000B4064010536F75726365526563742E5269676874050000
0000000000BC054011536F75726365526563742E426F74746F6D050000000000
0000E20640000007486F744C696E6B0E010E436170496E736574732E4C656674
05000000000000008001400D436170496E736574732E546F7005000000000000
008001400F436170496E736574732E5269676874050000000000000080014010
436170496E736574732E426F74746F6D05000000000000008001400F536F7572
6365526563742E4C6566740500000000000000D205400E536F75726365526563
742E546F700500000000000000B4054010536F75726365526563742E52696768
74050000000000000093064011536F75726365526563742E426F74746F6D0500
000000000000E2054000010E436170496E736574732E4C656674050000000000
0000C001400D436170496E736574732E546F700500000000000000C001400F43
6170496E736574732E52696768740500000000000000C0014010436170496E73
6574732E426F74746F6D0500000000000000C00140055363616C650500000000
000000C0FF3F0F536F75726365526563742E4C65667405000000000000009D06
400E536F75726365526563742E546F70050000000000000087064010536F7572
6365526563742E52696768740500000000000000DC064011536F757263655265
63742E426F74746F6D0500000000000000A9064000010E436170496E73657473
2E4C65667405000000000000008002400D436170496E736574732E546F700500
0000000000008002400F436170496E736574732E526967687405000000000000
0080024010436170496E736574732E426F74746F6D0500000000000000800240
055363616C6505000000000000008000400F536F75726365526563742E4C6566
740500000000000000D206400E536F75726365526563742E546F700500000000
000000B4064010536F75726365526563742E5269676874050000000000000093
074011536F75726365526563742E426F74746F6D0500000000000000E2064000
000D416374697665486F744C696E6B0E010E436170496E736574732E4C656674
05000000000000008001400D436170496E736574732E546F7005000000000000
008001400F436170496E736574732E5269676874050000000000000080014010
436170496E736574732E426F74746F6D05000000000000008001400F536F7572
6365526563742E4C6566740500000000000000DC04400E536F75726365526563
742E546F700500000000000000B4054010536F75726365526563742E52696768
740500000000000000C2054011536F75726365526563742E426F74746F6D0500
000000000000E4054000010E436170496E736574732E4C656674050000000000
0000C001400D436170496E736574732E546F700500000000000000C001400F43
6170496E736574732E52696768740500000000000000C0014010436170496E73
6574732E426F74746F6D0500000000000000C00140055363616C650500000000
000000C0FF3F0F536F75726365526563742E4C6566740500000000000000A405
400E536F75726365526563742E546F70050000000000000087064010536F7572
6365526563742E5269676874050000000000000091064011536F757263655265
63742E426F74746F6D0500000000000000AA064000010E436170496E73657473
2E4C65667405000000000000008002400D436170496E736574732E546F700500
0000000000008002400F436170496E736574732E526967687405000000000000
0080024010436170496E736574732E426F74746F6D0500000000000000800240
055363616C6505000000000000008000400F536F75726365526563742E4C6566
740500000000000000DC05400E536F75726365526563742E546F700500000000
000000B4064010536F75726365526563742E52696768740500000000000000C2
064011536F75726365526563742E426F74746F6D0500000000000000E4064000
000B466F63757365644C696E6B0E010E436170496E736574732E4C6566740500
0000000000008001400D436170496E736574732E546F70050000000000000080
01400F436170496E736574732E52696768740500000000000000800140104361
70496E736574732E426F74746F6D05000000000000008001400F536F75726365
526563742E4C6566740500000000000000A001400E536F75726365526563742E
546F700500000000000000B4054010536F75726365526563742E526967687405
00000000000000BC044011536F75726365526563742E426F74746F6D05000000
00000000E2054000010E436170496E736574732E4C6566740500000000000000
C001400D436170496E736574732E546F700500000000000000C001400F436170
496E736574732E52696768740500000000000000C0014010436170496E736574
732E426F74746F6D0500000000000000C00140055363616C6505000000000000
00C0FF3F0F536F75726365526563742E4C6566740500000000000000E001400E
536F75726365526563742E546F70050000000000000087064010536F75726365
526563742E526967687405000000000000008C054011536F7572636552656374
2E426F74746F6D0500000000000000A9064000010E436170496E736574732E4C
65667405000000000000008002400D436170496E736574732E546F7005000000
000000008002400F436170496E736574732E5269676874050000000000000080
024010436170496E736574732E426F74746F6D05000000000000008002400553
63616C6505000000000000008000400F536F75726365526563742E4C65667405
00000000000000A002400E536F75726365526563742E546F7005000000000000
00B4064010536F75726365526563742E52696768740500000000000000BC0540
11536F75726365526563742E426F74746F6D0500000000000000E20640000011
416374697665466F63757365644C696E6B0E010E436170496E736574732E4C65
667405000000000000008001400D436170496E736574732E546F700500000000
0000008001400F436170496E736574732E526967687405000000000000008001
4010436170496E736574732E426F74746F6D05000000000000008001400F536F
75726365526563742E4C6566740500000000000000D205400E536F7572636552
6563742E546F700500000000000000EC054010536F75726365526563742E5269
676874050000000000000093064011536F75726365526563742E426F74746F6D
05000000000000008E064000010E436170496E736574732E4C65667405000000
00000000C001400D436170496E736574732E546F700500000000000000C00140
0F436170496E736574732E52696768740500000000000000C001401043617049
6E736574732E426F74746F6D0500000000000000C00140055363616C65050000
0000000000C0FF3F0F536F75726365526563742E4C6566740500000000000000
9D06400E536F75726365526563742E546F700500000000000000B1064010536F
75726365526563742E52696768740500000000000000DC064011536F75726365
526563742E426F74746F6D0500000000000000D4064000010E436170496E7365
74732E4C65667405000000000000008002400D436170496E736574732E546F70
05000000000000008002400F436170496E736574732E52696768740500000000
00000080024010436170496E736574732E426F74746F6D050000000000000080
0240055363616C6505000000000000008000400F536F75726365526563742E4C
6566740500000000000000D206400E536F75726365526563742E546F70050000
0000000000EC064010536F75726365526563742E526967687405000000000000
0093074011536F75726365526563742E426F74746F6D05000000000000008E07
400000000E5452656374416E696D6174696F6E00084475726174696F6E050000
000000ACC5A7EE3F0C50726F70657274794E616D6506074D617267696E730F53
7461727456616C75652E4C656674050000000000000080FFBF0E537461727456
616C75652E546F70050000000000000080004010537461727456616C75652E52
69676874050000000000000080FFBF0E53746F7056616C75652E4C6566740500
00000000000080FFBF0F53746F7056616C75652E526967687405000000000000
0080FFBF1053746F7056616C75652E426F74746F6D05000000000000008000C0
0754726967676572060F497353656C65637465643D547275650E547269676765
72496E76657273650610497353656C65637465643D66616C736500000654476C
79706800095374796C654E616D65060A676C7970687374796C650C4D61726769
6E732E4C65667405000000000000008001400D4D617267696E732E5269676874
05000000000000008001C005416C69676E07044C6566740A506F736974696F6E
2E5805000000000000008001400A53697A652E57696474680500000000000000
8003400B53697A652E4865696768740500000000000000D003401453697A652E
506C6174666F726D44656661756C7408000013545461625374796C6554657874
4F626A65637400095374796C654E616D6506047465787405416C69676E070643
6C69656E74064C6F636B6564090C4D617267696E732E4C656674050000000000
00008002400B4D617267696E732E546F7005000000000000008001400D4D6172
67696E732E526967687405000000000000008002400E4D617267696E732E426F
74746F6D05000000000000008001400A53697A652E5769647468050000000000
0000D002400B53697A652E48656967687405000000000000009003401453697A
652E506C6174666F726D44656661756C7408155465787453657474696E67732E
576F726457726170080D536861646F7756697369626C65080D41637469766554
726967676572070853656C65637465640B416374697665436F6C6F720708636C
61426C61636B08486F74436F6C6F720708636C61426C61636B00000754427574
746F6E00095374796C654E616D65060B436C6F7365427574746F6E05416C6967
6E07094D6F737452696768740A506F736974696F6E2E580500000000000000B4
04400A53697A652E57696474680500000000000000C003400B53697A652E4865
696768740500000000000000D003401453697A652E506C6174666F726D446566
61756C74080B5374796C654C6F6F6B7570060F636C6561726564697462757474
6F6E085461624F72646572020000000007544C61796F757400095374796C654E
616D650606626F74746F6D05416C69676E0708436F6E74656E74730C436C6970
4368696C6472656E09064C6F636B6564090A53697A652E576964746805000000
000000008A05400B53697A652E4865696768740500000000000000D003401453
697A652E506C6174666F726D44656661756C7408000E5452656374416E696D61
74696F6E00084475726174696F6E050000000000ACC5A7EE3F0C50726F706572
74794E616D6506074D617267696E730F537461727456616C75652E4C65667405
0000000000000080FFBF10537461727456616C75652E52696768740500000000
00000080FFBF11537461727456616C75652E426F74746F6D0500000000000000
8000400E53746F7056616C75652E4C656674050000000000000080FFBF0D5374
6F7056616C75652E546F7005000000000000008000C00F53746F7056616C7565
2E5269676874050000000000000080FFBF0754726967676572060F497353656C
65637465643D547275650E54726967676572496E76657273650610497353656C
65637465643D66616C736500000F545461625374796C654F626A656374000541
6C69676E0708436F6E74656E7473064C6F636B6564090C536F757263654C6F6F
6B7570061B57696E646F7773203130204465736B746F707374796C652E706E67
0D526F746174696F6E416E676C650500000000000000B406400A53697A652E57
6964746805000000000000008A05400B53697A652E4865696768740500000000
000000D003401453697A652E506C6174666F726D44656661756C74080D416374
69766554726967676572070853656C65637465640A4163746976654C696E6B0E
010E436170496E736574732E4C65667405000000000000008001400D43617049
6E736574732E546F7005000000000000008001400F436170496E736574732E52
69676874050000000000000080014010436170496E736574732E426F74746F6D
05000000000000008001400F536F75726365526563742E4C6566740500000000
000000DC04400E536F75726365526563742E546F700500000000000000B40540
10536F75726365526563742E52696768740500000000000000C2054011536F75
726365526563742E426F74746F6D0500000000000000E4054000010E43617049
6E736574732E4C6566740500000000000000C001400D436170496E736574732E
546F700500000000000000C001400F436170496E736574732E52696768740500
000000000000C0014010436170496E736574732E426F74746F6D050000000000
0000C00140055363616C650500000000000000C0FF3F0F536F75726365526563
742E4C6566740500000000000000A405400E536F75726365526563742E546F70
050000000000000087064010536F75726365526563742E526967687405000000
0000000091064011536F75726365526563742E426F74746F6D05000000000000
00AA064000010E436170496E736574732E4C6566740500000000000000800240
0D436170496E736574732E546F7005000000000000008002400F436170496E73
6574732E5269676874050000000000000080024010436170496E736574732E42
6F74746F6D0500000000000000800240055363616C6505000000000000008000
400F536F75726365526563742E4C6566740500000000000000DC05400E536F75
726365526563742E546F700500000000000000B4064010536F75726365526563
742E52696768740500000000000000C2064011536F75726365526563742E426F
74746F6D0500000000000000E4064000000A536F757263654C696E6B0E010E43
6170496E736574732E4C65667405000000000000008001400D436170496E7365
74732E546F7005000000000000008001400F436170496E736574732E52696768
74050000000000000080014010436170496E736574732E426F74746F6D050000
00000000008001400F536F75726365526563742E4C6566740500000000000000
A001400E536F75726365526563742E546F700500000000000000B4054010536F
75726365526563742E52696768740500000000000000BC044011536F75726365
526563742E426F74746F6D0500000000000000E2054000010E436170496E7365
74732E4C6566740500000000000000C001400D436170496E736574732E546F70
0500000000000000C001400F436170496E736574732E52696768740500000000
000000C0014010436170496E736574732E426F74746F6D0500000000000000C0
0140055363616C650500000000000000C0FF3F0F536F75726365526563742E4C
6566740500000000000000E001400E536F75726365526563742E546F70050000
000000000087064010536F75726365526563742E526967687405000000000000
008C054011536F75726365526563742E426F74746F6D0500000000000000A906
4000010E436170496E736574732E4C65667405000000000000008002400D4361
70496E736574732E546F7005000000000000008002400F436170496E73657473
2E5269676874050000000000000080024010436170496E736574732E426F7474
6F6D0500000000000000800240055363616C6505000000000000008000400F53
6F75726365526563742E4C6566740500000000000000A002400E536F75726365
526563742E546F700500000000000000B4064010536F75726365526563742E52
696768740500000000000000BC054011536F75726365526563742E426F74746F
6D0500000000000000E20640000007486F744C696E6B0E010E436170496E7365
74732E4C65667405000000000000008001400D436170496E736574732E546F70
05000000000000008001400F436170496E736574732E52696768740500000000
00000080014010436170496E736574732E426F74746F6D050000000000000080
01400F536F75726365526563742E4C6566740500000000000000D205400E536F
75726365526563742E546F700500000000000000B4054010536F757263655265
63742E5269676874050000000000000093064011536F75726365526563742E42
6F74746F6D0500000000000000E2054000010E436170496E736574732E4C6566
740500000000000000C001400D436170496E736574732E546F70050000000000
0000C001400F436170496E736574732E52696768740500000000000000C00140
10436170496E736574732E426F74746F6D0500000000000000C0014005536361
6C650500000000000000C0FF3F0F536F75726365526563742E4C656674050000
00000000009D06400E536F75726365526563742E546F70050000000000000087
064010536F75726365526563742E52696768740500000000000000DC06401153
6F75726365526563742E426F74746F6D0500000000000000A9064000010E4361
70496E736574732E4C65667405000000000000008002400D436170496E736574
732E546F7005000000000000008002400F436170496E736574732E5269676874
050000000000000080024010436170496E736574732E426F74746F6D05000000
00000000800240055363616C6505000000000000008000400F536F7572636552
6563742E4C6566740500000000000000D206400E536F75726365526563742E54
6F700500000000000000B4064010536F75726365526563742E52696768740500
00000000000093074011536F75726365526563742E426F74746F6D0500000000
000000E2064000000D416374697665486F744C696E6B0E010E436170496E7365
74732E4C65667405000000000000008001400D436170496E736574732E546F70
05000000000000008001400F436170496E736574732E52696768740500000000
00000080014010436170496E736574732E426F74746F6D050000000000000080
01400F536F75726365526563742E4C6566740500000000000000DC04400E536F
75726365526563742E546F700500000000000000B4054010536F757263655265
63742E52696768740500000000000000C2054011536F75726365526563742E42
6F74746F6D0500000000000000E4054000010E436170496E736574732E4C6566
740500000000000000C001400D436170496E736574732E546F70050000000000
0000C001400F436170496E736574732E52696768740500000000000000C00140
10436170496E736574732E426F74746F6D0500000000000000C0014005536361
6C650500000000000000C0FF3F0F536F75726365526563742E4C656674050000
0000000000A405400E536F75726365526563742E546F70050000000000000087
064010536F75726365526563742E526967687405000000000000009106401153
6F75726365526563742E426F74746F6D0500000000000000AA064000010E4361
70496E736574732E4C65667405000000000000008002400D436170496E736574
732E546F7005000000000000008002400F436170496E736574732E5269676874
050000000000000080024010436170496E736574732E426F74746F6D05000000
00000000800240055363616C6505000000000000008000400F536F7572636552
6563742E4C6566740500000000000000DC05400E536F75726365526563742E54
6F700500000000000000B4064010536F75726365526563742E52696768740500
000000000000C2064011536F75726365526563742E426F74746F6D0500000000
000000E4064000000B466F63757365644C696E6B0E010E436170496E73657473
2E4C65667405000000000000008001400D436170496E736574732E546F700500
0000000000008001400F436170496E736574732E526967687405000000000000
0080014010436170496E736574732E426F74746F6D0500000000000000800140
0F536F75726365526563742E4C6566740500000000000000A001400E536F7572
6365526563742E546F700500000000000000B4054010536F7572636552656374
2E52696768740500000000000000BC044011536F75726365526563742E426F74
746F6D0500000000000000E2054000010E436170496E736574732E4C65667405
00000000000000C001400D436170496E736574732E546F700500000000000000
C001400F436170496E736574732E52696768740500000000000000C001401043
6170496E736574732E426F74746F6D0500000000000000C00140055363616C65
0500000000000000C0FF3F0F536F75726365526563742E4C6566740500000000
000000E001400E536F75726365526563742E546F700500000000000000870640
10536F75726365526563742E526967687405000000000000008C054011536F75
726365526563742E426F74746F6D0500000000000000A9064000010E43617049
6E736574732E4C65667405000000000000008002400D436170496E736574732E
546F7005000000000000008002400F436170496E736574732E52696768740500
00000000000080024010436170496E736574732E426F74746F6D050000000000
0000800240055363616C6505000000000000008000400F536F75726365526563
742E4C6566740500000000000000A002400E536F75726365526563742E546F70
0500000000000000B4064010536F75726365526563742E526967687405000000
00000000BC054011536F75726365526563742E426F74746F6D05000000000000
00E20640000011416374697665466F63757365644C696E6B0E010E436170496E
736574732E4C65667405000000000000008001400D436170496E736574732E54
6F7005000000000000008001400F436170496E736574732E5269676874050000
000000000080014010436170496E736574732E426F74746F6D05000000000000
008001400F536F75726365526563742E4C6566740500000000000000D205400E
536F75726365526563742E546F700500000000000000EC054010536F75726365
526563742E5269676874050000000000000093064011536F7572636552656374
2E426F74746F6D05000000000000008E064000010E436170496E736574732E4C
6566740500000000000000C001400D436170496E736574732E546F7005000000
00000000C001400F436170496E736574732E52696768740500000000000000C0
014010436170496E736574732E426F74746F6D0500000000000000C001400553
63616C650500000000000000C0FF3F0F536F75726365526563742E4C65667405
000000000000009D06400E536F75726365526563742E546F7005000000000000
00B1064010536F75726365526563742E52696768740500000000000000DC0640
11536F75726365526563742E426F74746F6D0500000000000000D4064000010E
436170496E736574732E4C65667405000000000000008002400D436170496E73
6574732E546F7005000000000000008002400F436170496E736574732E526967
6874050000000000000080024010436170496E736574732E426F74746F6D0500
000000000000800240055363616C6505000000000000008000400F536F757263
65526563742E4C6566740500000000000000D206400E536F7572636552656374
2E546F700500000000000000EC064010536F75726365526563742E5269676874
050000000000000093074011536F75726365526563742E426F74746F6D050000
00000000008E0740000000000654476C79706800095374796C654E616D65060A
676C7970687374796C650C4D617267696E732E4C656674050000000000000080
01400D4D617267696E732E526967687405000000000000008001C005416C6967
6E07044C6566740A506F736974696F6E2E5805000000000000008001400A5369
7A652E576964746805000000000000008003400B53697A652E48656967687405
00000000000000D003401453697A652E506C6174666F726D44656661756C7408
000013545461625374796C65546578744F626A65637400095374796C654E616D
6506047465787405416C69676E0706436C69656E74064C6F636B6564090C4D61
7267696E732E4C65667405000000000000008002400B4D617267696E732E546F
7005000000000000008001400D4D617267696E732E5269676874050000000000
00008002400E4D617267696E732E426F74746F6D05000000000000008001400A
53697A652E57696474680500000000000000D002400B53697A652E4865696768
7405000000000000009003401453697A652E506C6174666F726D44656661756C
74080454657874060454657874155465787453657474696E67732E576F726457
726170080D536861646F7756697369626C65080D416374697665547269676765
72070853656C65637465640B416374697665436F6C6F720708636C61426C6163
6B08486F74436F6C6F720708636C61426C61636B00000754427574746F6E0009
5374796C654E616D65060B436C6F7365427574746F6E05416C69676E07094D6F
737452696768740A506F736974696F6E2E580500000000000000B404400A5369
7A652E57696474680500000000000000C003400B53697A652E48656967687405
00000000000000D003401453697A652E506C6174666F726D44656661756C7408
0B5374796C654C6F6F6B7570060F636C65617265646974627574746F6E085461
624F72646572020000000000}
end
item
Platform = 'Windows 10 Desktop'
ResourcesBin = {
464D585F5354594C4520322E3501060C436C6F73655461624974656D03002B00
5450463007544C61796F757400095374796C654E616D65060C436C6F73655461
624974656D05416C69676E070643656E7465720A53697A652E57696474680500
0000000000008A05400B53697A652E4865696768740500000000000000D00340
1453697A652E506C6174666F726D44656661756C7408085461624F7264657202
00000F545461625374796C654F626A65637400095374796C654E616D65060374
6F7005416C69676E0708436F6E74656E74730C436C69704368696C6472656E09
064C6F636B6564090C536F757263654C6F6F6B7570061B57696E646F77732031
30204465736B746F707374796C652E706E670A53697A652E5769647468050000
00000000008A05400B53697A652E4865696768740500000000000000D0034014
53697A652E506C6174666F726D44656661756C74080D41637469766554726967
676572070853656C65637465640A4163746976654C696E6B0E010E436170496E
736574732E4C65667405000000000000008001400D436170496E736574732E54
6F7005000000000000008001400F436170496E736574732E5269676874050000
000000000080014010436170496E736574732E426F74746F6D05000000000000
008001400F536F75726365526563742E4C6566740500000000000000DC04400E
536F75726365526563742E546F700500000000000000B4054010536F75726365
526563742E52696768740500000000000000C2054011536F7572636552656374
2E426F74746F6D0500000000000000E4054000010E436170496E736574732E4C
6566740500000000000000C001400D436170496E736574732E546F7005000000
00000000C001400F436170496E736574732E52696768740500000000000000C0
014010436170496E736574732E426F74746F6D0500000000000000C001400553
63616C650500000000000000C0FF3F0F536F75726365526563742E4C65667405
00000000000000A405400E536F75726365526563742E546F7005000000000000
0087064010536F75726365526563742E52696768740500000000000000910640
11536F75726365526563742E426F74746F6D0500000000000000AA064000010E
436170496E736574732E4C65667405000000000000008002400D436170496E73
6574732E546F7005000000000000008002400F436170496E736574732E526967
6874050000000000000080024010436170496E736574732E426F74746F6D0500
000000000000800240055363616C6505000000000000008000400F536F757263
65526563742E4C6566740500000000000000DC05400E536F7572636552656374
2E546F700500000000000000B4064010536F75726365526563742E5269676874
0500000000000000C2064011536F75726365526563742E426F74746F6D050000
0000000000E4064000000A536F757263654C696E6B0E010E436170496E736574
732E4C65667405000000000000008001400D436170496E736574732E546F7005
000000000000008001400F436170496E736574732E5269676874050000000000
000080014010436170496E736574732E426F74746F6D05000000000000008001
400F536F75726365526563742E4C6566740500000000000000A001400E536F75
726365526563742E546F700500000000000000B4054010536F75726365526563
742E52696768740500000000000000BC044011536F75726365526563742E426F
74746F6D0500000000000000E2054000010E436170496E736574732E4C656674
0500000000000000C001400D436170496E736574732E546F7005000000000000
00C001400F436170496E736574732E52696768740500000000000000C0014010
436170496E736574732E426F74746F6D0500000000000000C00140055363616C
650500000000000000C0FF3F0F536F75726365526563742E4C65667405000000
00000000E001400E536F75726365526563742E546F7005000000000000008706
4010536F75726365526563742E526967687405000000000000008C054011536F
75726365526563742E426F74746F6D0500000000000000A9064000010E436170
496E736574732E4C65667405000000000000008002400D436170496E73657473
2E546F7005000000000000008002400F436170496E736574732E526967687405
0000000000000080024010436170496E736574732E426F74746F6D0500000000
000000800240055363616C6505000000000000008000400F536F757263655265
63742E4C6566740500000000000000A002400E536F75726365526563742E546F
700500000000000000B4064010536F75726365526563742E5269676874050000
0000000000BC054011536F75726365526563742E426F74746F6D050000000000
0000E20640000007486F744C696E6B0E010E436170496E736574732E4C656674
05000000000000008001400D436170496E736574732E546F7005000000000000
008001400F436170496E736574732E5269676874050000000000000080014010
436170496E736574732E426F74746F6D05000000000000008001400F536F7572
6365526563742E4C6566740500000000000000D205400E536F75726365526563
742E546F700500000000000000B4054010536F75726365526563742E52696768
74050000000000000093064011536F75726365526563742E426F74746F6D0500
000000000000E2054000010E436170496E736574732E4C656674050000000000
0000C001400D436170496E736574732E546F700500000000000000C001400F43
6170496E736574732E52696768740500000000000000C0014010436170496E73
6574732E426F74746F6D0500000000000000C00140055363616C650500000000
000000C0FF3F0F536F75726365526563742E4C65667405000000000000009D06
400E536F75726365526563742E546F70050000000000000087064010536F7572
6365526563742E52696768740500000000000000DC064011536F757263655265
63742E426F74746F6D0500000000000000A9064000010E436170496E73657473
2E4C65667405000000000000008002400D436170496E736574732E546F700500
0000000000008002400F436170496E736574732E526967687405000000000000
0080024010436170496E736574732E426F74746F6D0500000000000000800240
055363616C6505000000000000008000400F536F75726365526563742E4C6566
740500000000000000D206400E536F75726365526563742E546F700500000000
000000B4064010536F75726365526563742E5269676874050000000000000093
074011536F75726365526563742E426F74746F6D0500000000000000E2064000
000D416374697665486F744C696E6B0E010E436170496E736574732E4C656674
05000000000000008001400D436170496E736574732E546F7005000000000000
008001400F436170496E736574732E5269676874050000000000000080014010
436170496E736574732E426F74746F6D05000000000000008001400F536F7572
6365526563742E4C6566740500000000000000DC04400E536F75726365526563
742E546F700500000000000000B4054010536F75726365526563742E52696768
740500000000000000C2054011536F75726365526563742E426F74746F6D0500
000000000000E4054000010E436170496E736574732E4C656674050000000000
0000C001400D436170496E736574732E546F700500000000000000C001400F43
6170496E736574732E52696768740500000000000000C0014010436170496E73
6574732E426F74746F6D0500000000000000C00140055363616C650500000000
000000C0FF3F0F536F75726365526563742E4C6566740500000000000000A405
400E536F75726365526563742E546F70050000000000000087064010536F7572
6365526563742E5269676874050000000000000091064011536F757263655265
63742E426F74746F6D0500000000000000AA064000010E436170496E73657473
2E4C65667405000000000000008002400D436170496E736574732E546F700500
0000000000008002400F436170496E736574732E526967687405000000000000
0080024010436170496E736574732E426F74746F6D0500000000000000800240
055363616C6505000000000000008000400F536F75726365526563742E4C6566
740500000000000000DC05400E536F75726365526563742E546F700500000000
000000B4064010536F75726365526563742E52696768740500000000000000C2
064011536F75726365526563742E426F74746F6D0500000000000000E4064000
000B466F63757365644C696E6B0E010E436170496E736574732E4C6566740500
0000000000008001400D436170496E736574732E546F70050000000000000080
01400F436170496E736574732E52696768740500000000000000800140104361
70496E736574732E426F74746F6D05000000000000008001400F536F75726365
526563742E4C6566740500000000000000A001400E536F75726365526563742E
546F700500000000000000B4054010536F75726365526563742E526967687405
00000000000000BC044011536F75726365526563742E426F74746F6D05000000
00000000E2054000010E436170496E736574732E4C6566740500000000000000
C001400D436170496E736574732E546F700500000000000000C001400F436170
496E736574732E52696768740500000000000000C0014010436170496E736574
732E426F74746F6D0500000000000000C00140055363616C6505000000000000
00C0FF3F0F536F75726365526563742E4C6566740500000000000000E001400E
536F75726365526563742E546F70050000000000000087064010536F75726365
526563742E526967687405000000000000008C054011536F7572636552656374
2E426F74746F6D0500000000000000A9064000010E436170496E736574732E4C
65667405000000000000008002400D436170496E736574732E546F7005000000
000000008002400F436170496E736574732E5269676874050000000000000080
024010436170496E736574732E426F74746F6D05000000000000008002400553
63616C6505000000000000008000400F536F75726365526563742E4C65667405
00000000000000A002400E536F75726365526563742E546F7005000000000000
00B4064010536F75726365526563742E52696768740500000000000000BC0540
11536F75726365526563742E426F74746F6D0500000000000000E20640000011
416374697665466F63757365644C696E6B0E010E436170496E736574732E4C65
667405000000000000008001400D436170496E736574732E546F700500000000
0000008001400F436170496E736574732E526967687405000000000000008001
4010436170496E736574732E426F74746F6D05000000000000008001400F536F
75726365526563742E4C6566740500000000000000D205400E536F7572636552
6563742E546F700500000000000000EC054010536F75726365526563742E5269
676874050000000000000093064011536F75726365526563742E426F74746F6D
05000000000000008E064000010E436170496E736574732E4C65667405000000
00000000C001400D436170496E736574732E546F700500000000000000C00140
0F436170496E736574732E52696768740500000000000000C001401043617049
6E736574732E426F74746F6D0500000000000000C00140055363616C65050000
0000000000C0FF3F0F536F75726365526563742E4C6566740500000000000000
9D06400E536F75726365526563742E546F700500000000000000B1064010536F
75726365526563742E52696768740500000000000000DC064011536F75726365
526563742E426F74746F6D0500000000000000D4064000010E436170496E7365
74732E4C65667405000000000000008002400D436170496E736574732E546F70
05000000000000008002400F436170496E736574732E52696768740500000000
00000080024010436170496E736574732E426F74746F6D050000000000000080
0240055363616C6505000000000000008000400F536F75726365526563742E4C
6566740500000000000000D206400E536F75726365526563742E546F70050000
0000000000EC064010536F75726365526563742E526967687405000000000000
0093074011536F75726365526563742E426F74746F6D05000000000000008E07
400000000E5452656374416E696D6174696F6E00084475726174696F6E050000
000000ACC5A7EE3F0C50726F70657274794E616D6506074D617267696E730F53
7461727456616C75652E4C656674050000000000000080FFBF0E537461727456
616C75652E546F70050000000000000080004010537461727456616C75652E52
69676874050000000000000080FFBF0E53746F7056616C75652E4C6566740500
00000000000080FFBF0F53746F7056616C75652E526967687405000000000000
0080FFBF1053746F7056616C75652E426F74746F6D05000000000000008000C0
0754726967676572060F497353656C65637465643D547275650E547269676765
72496E76657273650610497353656C65637465643D66616C736500000654476C
79706800095374796C654E616D65060A676C7970687374796C650C4D61726769
6E732E4C65667405000000000000008001400D4D617267696E732E5269676874
05000000000000008001C005416C69676E07044C6566740A53697A652E576964
746805000000000000008003400B53697A652E48656967687405000000000000
008003401453697A652E506C6174666F726D44656661756C7408000013545461
625374796C65546578744F626A65637400095374796C654E616D650604746578
7405416C69676E0706436C69656E74064C6F636B6564090C4D617267696E732E
4C65667405000000000000008002400B4D617267696E732E546F700500000000
0000008001400D4D617267696E732E526967687405000000000000008002400E
4D617267696E732E426F74746F6D05000000000000008001400A53697A652E57
696474680500000000000000E803400B53697A652E4865696768740500000000
0000009003401453697A652E506C6174666F726D44656661756C740815546578
7453657474696E67732E576F726457726170080D536861646F7756697369626C
65080D41637469766554726967676572070853656C65637465640B4163746976
65436F6C6F720708636C61426C61636B08486F74436F6C6F720708636C61426C
61636B00000754427574746F6E00095374796C654E616D65060B436C6F736542
7574746F6E05416C69676E07094D6F737452696768740A506F736974696F6E2E
580500000000000000B404400A53697A652E57696474680500000000000000C0
03400B53697A652E4865696768740500000000000000D003401453697A652E50
6C6174666F726D44656661756C74080B5374796C654C6F6F6B7570060F636C65
617265646974627574746F6E085461624F72646572020000000007544C61796F
757400095374796C654E616D650606626F74746F6D05416C69676E0708436F6E
74656E74730C436C69704368696C6472656E09064C6F636B6564090A53697A65
2E576964746805000000000000008A05400B53697A652E486569676874050000
0000000000D003401453697A652E506C6174666F726D44656661756C7408000E
5452656374416E696D6174696F6E00084475726174696F6E050000000000ACC5
A7EE3F0C50726F70657274794E616D6506074D617267696E730F537461727456
616C75652E4C656674050000000000000080FFBF10537461727456616C75652E
5269676874050000000000000080FFBF11537461727456616C75652E426F7474
6F6D05000000000000008000400E53746F7056616C75652E4C65667405000000
0000000080FFBF0D53746F7056616C75652E546F7005000000000000008000C0
0F53746F7056616C75652E5269676874050000000000000080FFBF0754726967
676572060F497353656C65637465643D547275650E54726967676572496E7665
7273650610497353656C65637465643D66616C736500000F545461625374796C
654F626A6563740005416C69676E0708436F6E74656E7473064C6F636B656409
0C536F757263654C6F6F6B7570061B57696E646F7773203130204465736B746F
707374796C652E706E670D526F746174696F6E416E676C650500000000000000
B406400A53697A652E576964746805000000000000008A05400B53697A652E48
65696768740500000000000000D003401453697A652E506C6174666F726D4465
6661756C74080D41637469766554726967676572070853656C65637465640A41
63746976654C696E6B0E010E436170496E736574732E4C656674050000000000
00008001400D436170496E736574732E546F7005000000000000008001400F43
6170496E736574732E5269676874050000000000000080014010436170496E73
6574732E426F74746F6D05000000000000008001400F536F7572636552656374
2E4C6566740500000000000000DC04400E536F75726365526563742E546F7005
00000000000000B4054010536F75726365526563742E52696768740500000000
000000C2054011536F75726365526563742E426F74746F6D0500000000000000
E4054000010E436170496E736574732E4C6566740500000000000000C001400D
436170496E736574732E546F700500000000000000C001400F436170496E7365
74732E52696768740500000000000000C0014010436170496E736574732E426F
74746F6D0500000000000000C00140055363616C650500000000000000C0FF3F
0F536F75726365526563742E4C6566740500000000000000A405400E536F7572
6365526563742E546F70050000000000000087064010536F7572636552656374
2E5269676874050000000000000091064011536F75726365526563742E426F74
746F6D0500000000000000AA064000010E436170496E736574732E4C65667405
000000000000008002400D436170496E736574732E546F700500000000000000
8002400F436170496E736574732E526967687405000000000000008002401043
6170496E736574732E426F74746F6D0500000000000000800240055363616C65
05000000000000008000400F536F75726365526563742E4C6566740500000000
000000DC05400E536F75726365526563742E546F700500000000000000B40640
10536F75726365526563742E52696768740500000000000000C2064011536F75
726365526563742E426F74746F6D0500000000000000E4064000000A536F7572
63654C696E6B0E010E436170496E736574732E4C656674050000000000000080
01400D436170496E736574732E546F7005000000000000008001400F43617049
6E736574732E5269676874050000000000000080014010436170496E73657473
2E426F74746F6D05000000000000008001400F536F75726365526563742E4C65
66740500000000000000A001400E536F75726365526563742E546F7005000000
00000000B4054010536F75726365526563742E52696768740500000000000000
BC044011536F75726365526563742E426F74746F6D0500000000000000E20540
00010E436170496E736574732E4C6566740500000000000000C001400D436170
496E736574732E546F700500000000000000C001400F436170496E736574732E
52696768740500000000000000C0014010436170496E736574732E426F74746F
6D0500000000000000C00140055363616C650500000000000000C0FF3F0F536F
75726365526563742E4C6566740500000000000000E001400E536F7572636552
6563742E546F70050000000000000087064010536F75726365526563742E5269
67687405000000000000008C054011536F75726365526563742E426F74746F6D
0500000000000000A9064000010E436170496E736574732E4C65667405000000
000000008002400D436170496E736574732E546F700500000000000000800240
0F436170496E736574732E526967687405000000000000008002401043617049
6E736574732E426F74746F6D0500000000000000800240055363616C65050000
00000000008000400F536F75726365526563742E4C6566740500000000000000
A002400E536F75726365526563742E546F700500000000000000B4064010536F
75726365526563742E52696768740500000000000000BC054011536F75726365
526563742E426F74746F6D0500000000000000E20640000007486F744C696E6B
0E010E436170496E736574732E4C65667405000000000000008001400D436170
496E736574732E546F7005000000000000008001400F436170496E736574732E
5269676874050000000000000080014010436170496E736574732E426F74746F
6D05000000000000008001400F536F75726365526563742E4C65667405000000
00000000D205400E536F75726365526563742E546F700500000000000000B405
4010536F75726365526563742E5269676874050000000000000093064011536F
75726365526563742E426F74746F6D0500000000000000E2054000010E436170
496E736574732E4C6566740500000000000000C001400D436170496E73657473
2E546F700500000000000000C001400F436170496E736574732E526967687405
00000000000000C0014010436170496E736574732E426F74746F6D0500000000
000000C00140055363616C650500000000000000C0FF3F0F536F757263655265
63742E4C65667405000000000000009D06400E536F75726365526563742E546F
70050000000000000087064010536F75726365526563742E5269676874050000
0000000000DC064011536F75726365526563742E426F74746F6D050000000000
0000A9064000010E436170496E736574732E4C65667405000000000000008002
400D436170496E736574732E546F7005000000000000008002400F436170496E
736574732E5269676874050000000000000080024010436170496E736574732E
426F74746F6D0500000000000000800240055363616C65050000000000000080
00400F536F75726365526563742E4C6566740500000000000000D206400E536F
75726365526563742E546F700500000000000000B4064010536F757263655265
63742E5269676874050000000000000093074011536F75726365526563742E42
6F74746F6D0500000000000000E2064000000D416374697665486F744C696E6B
0E010E436170496E736574732E4C65667405000000000000008001400D436170
496E736574732E546F7005000000000000008001400F436170496E736574732E
5269676874050000000000000080014010436170496E736574732E426F74746F
6D05000000000000008001400F536F75726365526563742E4C65667405000000
00000000DC04400E536F75726365526563742E546F700500000000000000B405
4010536F75726365526563742E52696768740500000000000000C2054011536F
75726365526563742E426F74746F6D0500000000000000E4054000010E436170
496E736574732E4C6566740500000000000000C001400D436170496E73657473
2E546F700500000000000000C001400F436170496E736574732E526967687405
00000000000000C0014010436170496E736574732E426F74746F6D0500000000
000000C00140055363616C650500000000000000C0FF3F0F536F757263655265
63742E4C6566740500000000000000A405400E536F75726365526563742E546F
70050000000000000087064010536F75726365526563742E5269676874050000
000000000091064011536F75726365526563742E426F74746F6D050000000000
0000AA064000010E436170496E736574732E4C65667405000000000000008002
400D436170496E736574732E546F7005000000000000008002400F436170496E
736574732E5269676874050000000000000080024010436170496E736574732E
426F74746F6D0500000000000000800240055363616C65050000000000000080
00400F536F75726365526563742E4C6566740500000000000000DC05400E536F
75726365526563742E546F700500000000000000B4064010536F757263655265
63742E52696768740500000000000000C2064011536F75726365526563742E42
6F74746F6D0500000000000000E4064000000B466F63757365644C696E6B0E01
0E436170496E736574732E4C65667405000000000000008001400D436170496E
736574732E546F7005000000000000008001400F436170496E736574732E5269
676874050000000000000080014010436170496E736574732E426F74746F6D05
000000000000008001400F536F75726365526563742E4C656674050000000000
0000A001400E536F75726365526563742E546F700500000000000000B4054010
536F75726365526563742E52696768740500000000000000BC044011536F7572
6365526563742E426F74746F6D0500000000000000E2054000010E436170496E
736574732E4C6566740500000000000000C001400D436170496E736574732E54
6F700500000000000000C001400F436170496E736574732E5269676874050000
0000000000C0014010436170496E736574732E426F74746F6D05000000000000
00C00140055363616C650500000000000000C0FF3F0F536F7572636552656374
2E4C6566740500000000000000E001400E536F75726365526563742E546F7005
0000000000000087064010536F75726365526563742E52696768740500000000
0000008C054011536F75726365526563742E426F74746F6D0500000000000000
A9064000010E436170496E736574732E4C65667405000000000000008002400D
436170496E736574732E546F7005000000000000008002400F436170496E7365
74732E5269676874050000000000000080024010436170496E736574732E426F
74746F6D0500000000000000800240055363616C650500000000000000800040
0F536F75726365526563742E4C6566740500000000000000A002400E536F7572
6365526563742E546F700500000000000000B4064010536F7572636552656374
2E52696768740500000000000000BC054011536F75726365526563742E426F74
746F6D0500000000000000E20640000011416374697665466F63757365644C69
6E6B0E010E436170496E736574732E4C65667405000000000000008001400D43
6170496E736574732E546F7005000000000000008001400F436170496E736574
732E5269676874050000000000000080014010436170496E736574732E426F74
746F6D05000000000000008001400F536F75726365526563742E4C6566740500
000000000000D205400E536F75726365526563742E546F700500000000000000
EC054010536F75726365526563742E5269676874050000000000000093064011
536F75726365526563742E426F74746F6D05000000000000008E064000010E43
6170496E736574732E4C6566740500000000000000C001400D436170496E7365
74732E546F700500000000000000C001400F436170496E736574732E52696768
740500000000000000C0014010436170496E736574732E426F74746F6D050000
0000000000C00140055363616C650500000000000000C0FF3F0F536F75726365
526563742E4C65667405000000000000009D06400E536F75726365526563742E
546F700500000000000000B1064010536F75726365526563742E526967687405
00000000000000DC064011536F75726365526563742E426F74746F6D05000000
00000000D4064000010E436170496E736574732E4C6566740500000000000000
8002400D436170496E736574732E546F7005000000000000008002400F436170
496E736574732E5269676874050000000000000080024010436170496E736574
732E426F74746F6D0500000000000000800240055363616C6505000000000000
008000400F536F75726365526563742E4C6566740500000000000000D206400E
536F75726365526563742E546F700500000000000000EC064010536F75726365
526563742E5269676874050000000000000093074011536F7572636552656374
2E426F74746F6D05000000000000008E0740000000000654476C797068000953
74796C654E616D65060A676C7970687374796C650C4D617267696E732E4C6566
7405000000000000008001400D4D617267696E732E5269676874050000000000
00008001C005416C69676E07044C6566740A53697A652E576964746805000000
000000008003400B53697A652E48656967687405000000000000008003401453
697A652E506C6174666F726D44656661756C7408000013545461625374796C65
546578744F626A65637400095374796C654E616D6506047465787405416C6967
6E0706436C69656E74064C6F636B6564090C4D617267696E732E4C6566740500
0000000000008002400B4D617267696E732E546F700500000000000000800140
0D4D617267696E732E526967687405000000000000008002400E4D617267696E
732E426F74746F6D05000000000000008001400A53697A652E57696474680500
000000000000E803400B53697A652E4865696768740500000000000000900340
1453697A652E506C6174666F726D44656661756C740804546578740604546578
74155465787453657474696E67732E576F726457726170080D536861646F7756
697369626C65080D41637469766554726967676572070853656C65637465640B
416374697665436F6C6F720708636C61426C61636B08486F74436F6C6F720708
636C61426C61636B00000754427574746F6E00095374796C654E616D65060B43
6C6F7365427574746F6E05416C69676E07094D6F737452696768740A506F7369
74696F6E2E580500000000000000B404400A53697A652E576964746805000000
00000000C003400B53697A652E4865696768740500000000000000D003401453
697A652E506C6174666F726D44656661756C74080B5374796C654C6F6F6B7570
060F636C65617265646974627574746F6E085461624F72646572020000000000}
end>
Left = 424
Top = 32
end
end
Read More...
Hello,
I don't really understood Markus need but his subject launch me on a test : Is it possible to avoid TDataset to pass parameters and use livebindings instead ?
Response is Yes you can (hope this sentence is not a registered one ;-) )
You can see how i achieve that in
my blog (sorry french one) but googletrad is your friend
I shouldn't recommend this way though, it's a 2 steps way perhaps difficult to maintain in a staff !
Serge
Read More...
Sorry but this I desagree, did you ever try to Livebind a 6 state column of a Table with a set of radiobuttons ?YOU DONT NEED, REALLY, CREATE A NEW CLASS/OBJECT!
You have to bind all the six ones ! (Ok one solution is to use a combobox instead but the users don't want that)
My goal is to have a only one link
I am aware of that, and there are more than one difference between XE3 (I am testing Ray Konopka's Coderage 7 stuff here ) and 10.2.3 !The Firemonkey is a framework in evolution,
Yes those "free" are a bit "old vcl way point of view" (underlined by syntax checker ;-) ) but i don't think that change the face of my trys .if using FMX dont anymire FreAndNil() in a multiplatform is not desired and cannit works as expected - use always DisposeOf + nil, if necessary
Another example of difference Ray Konopka prone to use Locked:=true and Stored:=false for all the added objects
constructor TRkSpinBox.Create( AOwner: TComponent );
var
T: TRkTriangle;
B: TButton;
begin
inherited;
CanFocus := True;
Height := 25;
Width := 100;
FBox := TRectangle.Create( Self );
FBox.Parent := Self;
FBox.Align := TAlignLayout.alContents;
FBox.Fill.Color := claWhite;
FBox.Stroke.Color := claDarkgray;
FBox.HitTest := False;
FBox.Locked := True;
FBox.Stored := False;
// Decrement Button
B := TButton.Create( Self );
B.Parent := FBox;
B.Width := 24;
B.Align := TAlignLayout.alLeft;
B.Padding.Rect := RectF( 2, 2, 0, 2 );
B.CanFocus := False;
B.RepeatClick := True;
B.OnClick := DecrementButtonClick;
B.Locked := True;
B.Stored := False;
T := TRkTriangle.Create( Self );
T.Parent := B;
T.Height := 8;
T.Width := 8;
T.Align := TAlignLayout.alCenter;
T.RotationAngle := 180;
T.Fill.Color := claBlack;
T.HitTest := False;
T.Locked := True;
T.Stored := False;
// Increment Button
B := TButton.Create( Self );
B.Parent := FBox;
B.Width := 24;
B.Align := TAlignLayout.alRight;
B.Padding.Rect := RectF( 0, 2, 2, 2 );
B.CanFocus := False;
B.RepeatClick := True;
B.OnClick := IncrementButtonClick;
B.Locked := True;
B.Stored := False;
T := TRkTriangle.Create( Self );
T.Parent := B;
T.Height := 8;
T.Width := 8;
T.Align := TAlignLayout.alCenter;
T.Fill.Color := claBlack;
T.HitTest := False;
T.Locked := True;
T.Stored := False;
FTextBox := TText.Create( Self );
FTextBox.Parent := FBox;
FTextBox.Align := TAlignLayout.alClient;
FTextBox.HorzTextAlign := TTextAlign.taCenter;
FTextBox.Text := '0';
FTextBox.Color := claBlack;
FTextBox.HitTest := False;
FTextBox.Locked := True;
FTextBox.Stored := False;
Value := 0;
end;
If you look Ray Konopka's code you will see a
B.OnClick := IncrementButtonClick;
I don't saw any doc about FMX 1 vs FMX 2 , is there some ?
me too, my first component (dual VCL/FMX) is a new one and very recentunfortunately, im not expert in create class or cmps
a TImage descendant with a property FileName i can LiveBind with a table (seems to work though)
Subject to a tutorial (french) comming soon
This TRadioGroupBox should be another one if i can overide all these difficulties (and perhaps others as linking to the DB, i.e TSpinBox supplied don't work [RSP 19158, RSP 16698] )
Read More...
Hi,
Ok, there is none Radiogroupbox in firemonkey (especially with livebinded properties) so i am trying to write one.
On the paper (read it as component created at run time) I can build my component (A groupbox with a GridLayout inside each RadioButton in the grid layout) and get the result value.
My problem is to pass from theory (created at runtime) to usage (designed component ) : i can't assign the onclick event of the created radiobutton , to be more specific i assign one but it does not work
unit SRadioGroupBox;
interface
uses
System.SysUtils, System.Classes, System.IOUtils, System.Math, System.Types,
System.Generics.Collections, FMX.dialogs,
FMX.Types, FMX.Controls, FMX.Stdctrls, FMX.Objects, FMX.Layouts;
type
[ObservableMembers('grbValue')]
TSRadioGroupBox = class(TGroupBox)
strict private
FIndexItem : Integer;
private
FColumns : Word;
FrbValue : String;
FrbItems : TStringList;
FrbValues : TStringList;
CLayout : TGridLayout;
procedure SetColumns(const Value: word);
procedure SetgrbValue(const Value: string);
procedure SetrbItems(const Value: TStringList);
procedure SetrbValues(const Value: TStringList);
procedure ObserverToggle(const AObserver: IObserver; const Value: Boolean);
protected
function CanObserve(const ID: Integer): Boolean; override; { declaration is in System.Classes }
procedure ObserverAdded(const ID: Integer; const Observer: IObserver); override; { declaration is in System.Classes }
procedure ChangeRadioButton(Sender: TObject);
function FindValue(const V : String) : Integer;
procedure OnResize;
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
procedure AddItem(const Text : String);
function Paint : Boolean; reintroduce;
published
property rbItems : TStringList read FrbItems write SetrbItems;
property rbValues : TStringList read FrbValues write SetrbValues;
property grbValue : String read FrbValue write setgrbValue;
property IndexItem : Integer read FIndexItem; // write SetIndexItem;
property Columns : word read FColumns write SetColumns stored Paint;
end;
implementation
procedure TSRadioGroupBox.AddItem(const Text : String);
var ARadio : TRadioButton;
O: TFMXObject;
begin
try
ARadio:= TRadioButton.Create(Clayout);
ARadio.Text:=Text;
ARadio.OnClick:=ChangeRadioButton;
// O:=ARadio.FindStyleResource('Layout');
// if Assigned(O) then TLayout(O).OnClick:=ChangeRadioButton;
CLayout.AddObject(ARadio);
except
end;
end;
function TSRadioGroupBox.CanObserve(const ID: Integer): Boolean;
begin
case ID of
TObserverMapping.EditLinkID,
TObserverMapping.ControlValueID: Result := True;
else
Result := False;
end;
end;
procedure TSRadioGroupBox.ChangeRadioButton(Sender: TObject);
begin
FrbValue:='0'; // just to test not working
end;
constructor TSRadioGroupBox.Create(AOwner: TComponent);
begin
inherited;
FIndexItem:=-1;
FColumns:=1;
Width:=200;
Padding.Top:=20;
Padding.Left:=3;
Padding.Bottom:=3;
Padding.Right:=3;
if (csDesigning in ComponentState) then
begin
CLayout:=TGridLayout.Create(Self);
CLayout.Align:=TAlignLayout.Client;
CLayout.Parent:=Self;
// CLayout.SetSubComponent(True);
// CLayout.Stored := False;
// CLayout.OnDragOver:=OnDragOver;
end;
if not Assigned(Frbitems) then FrbItems:=TStringList.Create;
if not Assigned(FrbValues) then frbValues:=TStringList.Create;
end;
destructor TSRadioGroupBox.Destroy;
begin
FreeAndNil(FrbItems);
FreeAndNil(FrbValues);
FreeAndNil(CLayout);
inherited;
end;
function TSRadioGroupBox.FindValue(const V: String): Integer;
var i : word;
begin
for i:=0 to FrbValues.Count-1 do
begin
if FrbValues[i]=V then
begin
FrbValue:=V;
FIndexItem:=i;
Exit(i);
end;
end;
FrbValue:=EmptyStr;
result:=-1;
end;
procedure TSRadioGroupBox.ObserverAdded(const ID: Integer;
const Observer: IObserver);
begin
if ID = TObserverMapping.EditLinkID then
Observer.OnObserverToggle := ObserverToggle;
end;
procedure TSRadioGroupBox.ObserverToggle(const AObserver: IObserver;
const Value: Boolean);
var LEditLinkObserver: IEditLinkObserver;
begin
if Value then
begin
if Supports(AObserver, IEditLinkObserver, LEditLinkObserver) then
Enabled := not LEditLinkObserver.IsReadOnly;
end
else Enabled := True;
end;
procedure TSRadioGroupBox.OnResize;
begin
Paint;
end;
function TSRadioGroupBox.Paint : Boolean;
var Rows : word;
begin
CLayout.Width:=Self.Width-Self.Padding.Left-Self.Padding.Right;
CLayout.ItemWidth:=CLayout.Width/FColumns;
CLayout.Height:=Self.Height-Self.Padding.Top-Self.Padding.Bottom;
if frbItems.Count<=1
then CLayout.ItemHeight:=CLayout.Height
else begin
if FrbItems.Count mod FColumns=0
then Rows:=frbItems.Count div FColumns
else Rows:=(frbItems.Count div FColumns) + 1;
CLayout.ItemHeight:=CLayout.Height/Rows;
end;
result:=true;
end;
procedure TSRadioGroupBox.SetColumns(const Value: word);
begin
if FColumns<>Value then
begin
FColumns := Value;
Paint;
end;
end;
procedure TSRadioGroupBox.SetrbItems(const Value: TStringList);
var i : Integer;
Valeur : String;
begin
CLayout.DeleteChildren;
FrbItems.Assign(Value);
for i := 0 to frbItems.Count-1 do
begin
try
Valeur:=frbValues[i];
except
Valeur:=i.ToString;
end;
AddItem(FrbItems[i]);
end;
Paint;
end;
procedure TSRadioGroupBox.SetrbValues(const Value: TStringList);
begin
FrbValues.Assign(Value);
end;
procedure TSRadioGroupBox.SetgrbValue(const Value: string);
var i,R : Integer;
begin
if Value<>FrbValue then
begin
i:=FindValue(Value);
for r :=0 to Clayout.ChildrenCount-1 do
begin
TRadioButton(CLayout.Children[r]).IsChecked:=(r=i);
if r=1 then break ;
end;
Paint;
end;
end;
end.
3 bugs in this code :
RadioButton Onclick not working
at runtime 2 GridLayouts are created !
Last joke it's Groupbox text that is changed when binded with datas not grbValue !
(As an subsidiary question how can i test livebindings with a runtime created component to debug this "joke")
Is the solution passing by an embedded style in the component ?
@mically
PS. i don't even try to attach files (all my attempts failed)
Read More...
OK, there are still bugs with firemonkey especially using styles. But except particular case i discuss on this forum i do not have any problems with TLabel.
By instance did you know there is also a TText component not style related
Read More...
Hi,
You need to be more explicit ! It's so easy to do with FMX (just changing rotation properties) that i assume you want the how to in VCL framework ?
Read More...
Hello,
I am afraid but not 100% you misunderstood firedac indexName property.
Firedac IndexName does not refer to any INDEX you built in database but "internal" index you create in your program, using indexes creation in dfm,
AddIndex() function
...
Read More...
I change my animation working on Scale.X property and set property autoreverse to true
the code bloc is now
AniScaleX.StartValue:=TScaledLayout(AParent).Scale.X;
AniScaleX.StopValue:=TScaledLaYout(AParent).Scale.X+0.01;
AniScaleX.Start;
AniScaleX.Start;
Read More...
Hello
I wrote 2 tutorials about (in french but there is a translator motor)is there any tutorial for that?
Generalities
Grids
Read More...
I wrote a very very dirty animation
procedure TMainForm.EmbeddedForm(AParent: TControl; AForm: TCustomForm);
var AControl : TFMXObject;
begin
AParent.DeleteChildren;
if Assigned(CurrentForm) then CurrentForm.Free;
// AParent.AddObject(TLayout(AForm.Children[0]));
//alternative
AForm.Children[0].Parent:=AParent;
CurrentForm:=AForm; // mémoriser
FloatAnimation1.Inverse:=False;
FloatAnimation1.Start;
FloatAnimation1.Inverse:=true;
FloatAnimation1.Start;
object MainLayout: TScaledLayout
Align = Client
OriginalWidth = 618.000000000000000000
OriginalHeight = 387.000000000000000000
Margins.Left = 10.000000000000000000
Margins.Top = 10.000000000000000000
Margins.Right = 10.000000000000000000
Margins.Bottom = 10.000000000000000000
Size.Width = 618.000000000000000000
Size.Height = 387.000000000000000000
Size.PlatformDefault = False
object WarfLayout: TLayout
Align = Client
Margins.Left = 10.000000000000000000
Margins.Top = 10.000000000000000000
Margins.Right = 10.000000000000000000
Margins.Bottom = 10.000000000000000000
Size.Width = 598.000000000000000000
Size.Height = 367.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
end
object FloatAnimation1: TFloatAnimation
AnimationType = InOut
Duration = 0.001000000047497451
PropertyName = 'RotationAngle'
StartValue = 0.000000000000000000
StartFromCurrent = True
StopValue = 1.000000000000000000
end
end
There is certainly a best way :-) (at least a more clean one)
Read More...
Yes, that is my "little" problem.
Before my first question I had test the repaint, invalidaterect (problem is which Rect) even resizing the form but none with satisfaction :-( I think also about changing scale property but not test yet.
Thanks for the link Delphi Haven (i missed this one)
and will be glad if Remy enlight us
Serge
Read More...
Hello,
I don't understand why my attachments are not appearing perhaps i'm misunderstanding the tools usage.
Your sources are in the same idea, You are right in with an lightly different approach.
Now, test these steps :
- First add a Tlabel to your second form
- Click btnCallFormSecondForm
- Resize Main Form
- Click btCloseFormInRightSize
- Click btnCallFormSecondForm
Read More...
Hello
I am using sort of docking form.
In main main form i have a TScaledLayout where i "dock" a TLayout of another form(s) as i found somewhere in the doc
procedure TMainForm.EmbeddedForm(AParent: TControl; AForm: TCustomForm);
var AControl : TFMXObject;
begin
AParent.DeleteChildren;
if Assigned(CurrentForm) then CurrentForm.Free;
// while AForm.ChildrenCount>0 do
AForm.Children[0].Parent:=AParent;
CurrentForm:=AForm; // mémoriser
end;
I attach also a little project if you want to test by yourself.
Question : how can i override this/these unwanted effects ? where is my mistake if any ?
N.B. the only docking ok is Layout to Layout
Read More...