OnGuard: Fix ModifierForm crashing due to unknown Font.Color=clText. Childsizing-layout of controls.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8717 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2023-02-19 22:36:17 +00:00
parent bb494adee5
commit 2fa960756a
4 changed files with 154 additions and 132 deletions

View File

@ -44,7 +44,7 @@ procedure Register;
implementation implementation
uses uses
Classes, Forms, {AH.01} System.UITypes, Classes, Forms,
qogabout0, ogconst,ognetwrk, ogproexe, {AH.01} qogabout0, ogconst,ognetwrk, ogproexe, {AH.01}
onguard, {AH.01} onguard, {AH.01}
qonguard2, {AH.01} qonguard2, {AH.01}
@ -124,6 +124,40 @@ begin
end; end;
{-------------------------------------------------------------------------------
TOgModifierProperty
Property editor for ranges
-------------------------------------------------------------------------------}
type
TOgModifierProperty = class(TStringProperty)
public
function GetAttributes: TPropertyAttributes; override;
function GetValue: string; override;
procedure Edit; override;
end;
function TOgModifierProperty.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog];
end;
function TOgModifierProperty.GetValue: string;
begin
Result := inherited GetValue;
end;
procedure TOgModifierProperty.Edit;
begin
with TModifierFrm.Create(Application) do
try
if ShowModal = mrOK then
SetValue(BufferToHex(Modifier, SizeOf(Modifier)));
finally
Free;
end;
end;
{------------------------------------------------------------------------------- {-------------------------------------------------------------------------------
TOgAboutProperty TOgAboutProperty
-------------------------------------------------------------------------------} -------------------------------------------------------------------------------}

View File

@ -1,101 +1,121 @@
object ModifierFrm: TModifierFrm object ModifierFrm: TModifierFrm
Left = 295 Left = 295
Height = 145 Height = 179
Top = 224 Top = 224
Width = 433 Width = 433
ActiveControl = NoModifierCb ActiveControl = NoModifierCb
AutoSize = True
BorderIcons = [biSystemMenu, biMinimize] BorderIcons = [biSystemMenu, biMinimize]
Caption = 'Generate Modifier' Caption = 'Generate Modifier'
ClientHeight = 145 ClientHeight = 179
ClientWidth = 433 ClientWidth = 433
Font.Color = clText
Font.Height = 11
Font.Name = 'MS Sans Serif'
Font.Pitch = fpVariable
OnCreate = FormCreate OnCreate = FormCreate
Position = poScreenCenter Position = poScreenCenter
LCLVersion = '0.9.27' LCLVersion = '2.3.0.0'
object OKBtn: TBitBtn object OKBtn: TBitBtn
Left = 285 AnchorSideTop.Control = CancelBtn
Height = 26 AnchorSideRight.Control = CancelBtn
Top = 104 Left = 238
Width = 57 Height = 25
Top = 118
Width = 75
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Right = 4
Caption = 'OK' Caption = 'OK'
Constraints.MinWidth = 75
Default = True Default = True
ModalResult = 1 ModalResult = 1
NumGlyphs = 0
TabOrder = 1 TabOrder = 1
end end
object CancelBtn: TBitBtn object CancelBtn: TBitBtn
Left = 344 AnchorSideTop.Control = GroupBox1
Height = 24 AnchorSideTop.Side = asrBottom
Top = 104 AnchorSideRight.Control = GroupBox1
Width = 62 AnchorSideRight.Side = asrBottom
Left = 317
Height = 25
Top = 118
Width = 75
Anchors = [akTop, akRight]
AutoSize = True
BorderSpacing.Bottom = 8
Caption = 'Cancel' Caption = 'Cancel'
Constraints.MinWidth = 75
ModalResult = 2 ModalResult = 2
NumGlyphs = 0
TabOrder = 2 TabOrder = 2
end end
object GroupBox1: TGroupBox object GroupBox1: TGroupBox
Left = 3 AnchorSideLeft.Control = Owner
Height = 90 AnchorSideTop.Control = Owner
Top = 6 Left = 8
Width = 406 Height = 102
Top = 8
Width = 384
AutoSize = True
BorderSpacing.Around = 8
Caption = '&Modifiers' Caption = '&Modifiers'
ClientHeight = 72 ChildSizing.LeftRightSpacing = 24
ClientWidth = 402 ChildSizing.TopBottomSpacing = 16
ChildSizing.HorizontalSpacing = 24
ChildSizing.VerticalSpacing = 8
ChildSizing.EnlargeHorizontal = crsHomogenousChildResize
ChildSizing.Layout = cclLeftToRightThenTopToBottom
ChildSizing.ControlsPerLine = 3
ClientHeight = 82
ClientWidth = 380
TabOrder = 0 TabOrder = 0
object UniqueModifierCb: TCheckBox object NoModifierCb: TCheckBox
Left = 133 Left = 24
Height = 17 Height = 19
Top = 37 Top = 16
Width = 91 Width = 82
Caption = 'Unique modifier' Caption = 'No modifier'
OnClick = ModifierClick OnClick = ModifierClick
TabOrder = 3 TabOrder = 0
end end
object MachineModifierCb: TCheckBox object MachineModifierCb: TCheckBox
Left = 133 Left = 130
Height = 17 Height = 19
Top = 20 Top = 16
Width = 98 Width = 112
Caption = 'Machine modifier' Caption = 'Machine modifier'
OnClick = ModifierClick OnClick = ModifierClick
TabOrder = 1 TabOrder = 1
end end
object DateModifierCb: TCheckBox object DateModifierCb: TCheckBox
Left = 267 Left = 266
Height = 17 Height = 19
Top = 18 Top = 16
Width = 80 Width = 90
Caption = 'Date modifier' Caption = 'Date modifier'
OnClick = ModifierClick OnClick = ModifierClick
TabOrder = 2 TabOrder = 2
end end
object NoModifierCb: TCheckBox
Left = 11
Height = 17
Top = 18
Width = 71
Caption = 'No modifier'
OnClick = ModifierClick
TabOrder = 0
end
object ModifierEd: TEdit object ModifierEd: TEdit
Left = 12 Left = 24
Height = 23 Height = 23
Top = 34 Top = 43
Width = 104 Width = 82
OnChange = InfoChanged OnChange = InfoChanged
OnKeyPress = ModifierEdKeyPress OnKeyPress = ModifierEdKeyPress
TabOrder = 3
end
object UniqueModifierCb: TCheckBox
Left = 130
Height = 23
Top = 43
Width = 112
Caption = 'Unique modifier'
OnClick = ModifierClick
TabOrder = 4 TabOrder = 4
end end
object ModDateEd: TEdit object ModDateEd: TEdit
Left = 267 Left = 266
Height = 23 Height = 23
Hint = 'Code is invalid after this date' Hint = 'Code is invalid after this date'
Top = 35 Top = 43
Width = 120 Width = 90
Enabled = False Enabled = False
MaxLength = 10 MaxLength = 10
OnChange = ModifierClick OnChange = ModifierClick

View File

@ -1,32 +1,42 @@
{ To jest automatycznie wygenerowany plik zasob�w lazarusa } { This is an automatically generated lazarus resource file }
LazarusResources.Add('TModifierFrm','FORMDATA',[ LazarusResources.Add('TModifierFrm','FORMDATA',[
'TPF0'#12'TModifierFrm'#11'ModifierFrm'#4'Left'#3''''#1#6'Height'#3#145#0#3'T' 'TPF0'#12'TModifierFrm'#11'ModifierFrm'#4'Left'#3''''#1#6'Height'#3#179#0#3'T'
+'op'#3#224#0#5'Width'#3#177#1#13'ActiveControl'#7#12'NoModifierCb'#11'Border' +'op'#3#224#0#5'Width'#3#177#1#13'ActiveControl'#7#12'NoModifierCb'#8'AutoSiz'
+'Icons'#11#12'biSystemMenu'#10'biMinimize'#0#7'Caption'#6#17'Generate Modifi' +'e'#9#11'BorderIcons'#11#12'biSystemMenu'#10'biMinimize'#0#7'Caption'#6#17'G'
+'er'#12'ClientHeight'#3#145#0#11'ClientWidth'#3#177#1#10'Font.Color'#7#6'clT' +'enerate Modifier'#12'ClientHeight'#3#179#0#11'ClientWidth'#3#177#1#8'OnCrea'
+'ext'#11'Font.Height'#2#11#9'Font.Name'#6#13'MS Sans Serif'#10'Font.Pitch'#7 +'te'#7#10'FormCreate'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#7'2.'
+#10'fpVariable'#8'OnCreate'#7#10'FormCreate'#8'Position'#7#14'poScreenCenter' +'3.0.0'#0#7'TBitBtn'#5'OKBtn'#21'AnchorSideTop.Control'#7#9'CancelBtn'#23'An'
+#10'LCLVersion'#6#6'0.9.27'#0#7'TBitBtn'#5'OKBtn'#4'Left'#3#29#1#6'Height'#2 +'chorSideRight.Control'#7#9'CancelBtn'#4'Left'#3#238#0#6'Height'#2#25#3'Top'
+#26#3'Top'#2'h'#5'Width'#2'9'#7'Caption'#6#2'OK'#7'Default'#9#11'ModalResult' +#2'v'#5'Width'#2'K'#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#19'Bor'
+#2#1#9'NumGlyphs'#2#0#8'TabOrder'#2#1#0#0#7'TBitBtn'#9'CancelBtn'#4'Left'#3 +'derSpacing.Right'#2#4#7'Caption'#6#2'OK'#20'Constraints.MinWidth'#2'K'#7'De'
+'X'#1#6'Height'#2#24#3'Top'#2'h'#5'Width'#2'>'#7'Caption'#6#6'Cancel'#11'Mod' +'fault'#9#11'ModalResult'#2#1#8'TabOrder'#2#1#0#0#7'TBitBtn'#9'CancelBtn'#21
+'alResult'#2#2#9'NumGlyphs'#2#0#8'TabOrder'#2#2#0#0#9'TGroupBox'#9'GroupBox1' +'AnchorSideTop.Control'#7#9'GroupBox1'#18'AnchorSideTop.Side'#7#9'asrBottom'
+#4'Left'#2#3#6'Height'#2'Z'#3'Top'#2#6#5'Width'#3#150#1#7'Caption'#6#10'&Mod' +#23'AnchorSideRight.Control'#7#9'GroupBox1'#20'AnchorSideRight.Side'#7#9'asr'
+'ifiers'#12'ClientHeight'#2'H'#11'ClientWidth'#3#146#1#8'TabOrder'#2#0#0#9'T' +'Bottom'#4'Left'#3'='#1#6'Height'#2#25#3'Top'#2'v'#5'Width'#2'K'#7'Anchors'
+'CheckBox'#16'UniqueModifierCb'#4'Left'#3#133#0#6'Height'#2#17#3'Top'#2'%'#5 +#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#20'BorderSpacing.Bottom'#2#8#7'Capti'
+'Width'#2'['#7'Caption'#6#15'Unique modifier'#7'OnClick'#7#13'ModifierClick' +'on'#6#6'Cancel'#20'Constraints.MinWidth'#2'K'#11'ModalResult'#2#2#8'TabOrde'
+#8'TabOrder'#2#3#0#0#9'TCheckBox'#17'MachineModifierCb'#4'Left'#3#133#0#6'He' +'r'#2#2#0#0#9'TGroupBox'#9'GroupBox1'#22'AnchorSideLeft.Control'#7#5'Owner'
+'ight'#2#17#3'Top'#2#20#5'Width'#2'b'#7'Caption'#6#16'Machine modifier'#7'On' +#21'AnchorSideTop.Control'#7#5'Owner'#4'Left'#2#8#6'Height'#2'f'#3'Top'#2#8#5
+'Click'#7#13'ModifierClick'#8'TabOrder'#2#1#0#0#9'TCheckBox'#14'DateModifier' +'Width'#3#128#1#8'AutoSize'#9#20'BorderSpacing.Around'#2#8#7'Caption'#6#10'&'
+'Cb'#4'Left'#3#11#1#6'Height'#2#17#3'Top'#2#18#5'Width'#2'P'#7'Caption'#6#13 +'Modifiers'#28'ChildSizing.LeftRightSpacing'#2#24#28'ChildSizing.TopBottomSp'
+'Date modifier'#7'OnClick'#7#13'ModifierClick'#8'TabOrder'#2#2#0#0#9'TCheckB' +'acing'#2#16#29'ChildSizing.HorizontalSpacing'#2#24#27'ChildSizing.VerticalS'
+'ox'#12'NoModifierCb'#4'Left'#2#11#6'Height'#2#17#3'Top'#2#18#5'Width'#2'G'#7 +'pacing'#2#8#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'
+'Caption'#6#11'No modifier'#7'OnClick'#7#13'ModifierClick'#8'TabOrder'#2#0#0 +#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'ChildSizing.C'
+#0#5'TEdit'#10'ModifierEd'#4'Left'#2#12#6'Height'#2#23#3'Top'#2'"'#5'Width'#2 +'ontrolsPerLine'#2#3#12'ClientHeight'#2'R'#11'ClientWidth'#3'|'#1#8'TabOrder'
+'h'#8'OnChange'#7#11'InfoChanged'#10'OnKeyPress'#7#18'ModifierEdKeyPress'#8 +#2#0#0#9'TCheckBox'#12'NoModifierCb'#4'Left'#2#24#6'Height'#2#19#3'Top'#2#16
+'TabOrder'#2#4#0#0#5'TEdit'#9'ModDateEd'#4'Left'#3#11#1#6'Height'#2#23#4'Hin' +#5'Width'#2'R'#7'Caption'#6#11'No modifier'#7'OnClick'#7#13'ModifierClick'#8
+'t'#6#31'Code is invalid after this date'#3'Top'#2'#'#5'Width'#2'x'#7'Enable' +'TabOrder'#2#0#0#0#9'TCheckBox'#17'MachineModifierCb'#4'Left'#3#130#0#6'Heig'
+'d'#8#9'MaxLength'#2#10#8'OnChange'#7#13'ModifierClick'#10'OnKeyPress'#7#14 +'ht'#2#19#3'Top'#2#16#5'Width'#2'p'#7'Caption'#6#16'Machine modifier'#7'OnCl'
+'DateEdKeyPress'#8'TabOrder'#2#5#0#0#0#0 +'ick'#7#13'ModifierClick'#8'TabOrder'#2#1#0#0#9'TCheckBox'#14'DateModifierCb'
+#4'Left'#3#10#1#6'Height'#2#19#3'Top'#2#16#5'Width'#2'Z'#7'Caption'#6#13'Dat'
+'e modifier'#7'OnClick'#7#13'ModifierClick'#8'TabOrder'#2#2#0#0#5'TEdit'#10
+'ModifierEd'#4'Left'#2#24#6'Height'#2#23#3'Top'#2'+'#5'Width'#2'R'#8'OnChang'
+'e'#7#11'InfoChanged'#10'OnKeyPress'#7#18'ModifierEdKeyPress'#8'TabOrder'#2#3
+#0#0#9'TCheckBox'#16'UniqueModifierCb'#4'Left'#3#130#0#6'Height'#2#23#3'Top'
+#2'+'#5'Width'#2'p'#7'Caption'#6#15'Unique modifier'#7'OnClick'#7#13'Modifie'
+'rClick'#8'TabOrder'#2#4#0#0#5'TEdit'#9'ModDateEd'#4'Left'#3#10#1#6'Height'#2
+#23#4'Hint'#6#31'Code is invalid after this date'#3'Top'#2'+'#5'Width'#2'Z'#7
+'Enabled'#8#9'MaxLength'#2#10#8'OnChange'#7#13'ModifierClick'#10'OnKeyPress'
+#7#14'DateEdKeyPress'#8'TabOrder'#2#5#0#0#0#0
]); ]);

View File

@ -34,22 +34,16 @@
{$I ONGUARD.INC} {$I ONGUARD.INC}
unit qonguard6;
unit qonguard6; {AH.01}
{-Code generation dialog} {-Code generation dialog}
interface interface
uses uses
SysUtils, Classes, {AH.01} SysUtils, Classes,
Graphics, Controls, Forms, Dialogs,{ Mask,} {AH.01} Graphics, Controls, Forms,
ExtCtrls, StdCtrls, Buttons, {AH.01} ExtCtrls, StdCtrls, Buttons,
ogutil, onguard, {AH.01} ogutil, onguard;
ComponentEditors,
PropEdits,
LazarusPackageIntf;
type type
TModifierFrm = class(TForm) TModifierFrm = class(TForm)
@ -73,25 +67,11 @@ type
end; end;
type
{property editor for ranges}
TOgModifierProperty = class(TStringProperty)
public
function GetAttributes: TPropertyAttributes;
override;
function GetValue : string;
override;
procedure Edit;
override;
end;
implementation implementation
uses uses
LResources; LResources;
procedure TModifierFrm.FormCreate(Sender: TObject); procedure TModifierFrm.FormCreate(Sender: TObject);
begin begin
NoModifierCb.Checked := True; NoModifierCb.Checked := True;
@ -201,28 +181,6 @@ begin
HexToBuffer(ModifierEd.Text, Modifier, SizeOf(Modifier)); HexToBuffer(ModifierEd.Text, Modifier, SizeOf(Modifier));
end; end;
{*** TOgModifierProperty ***}
function TOgModifierProperty.GetAttributes: TPropertyAttributes;
begin
Result := [paDialog];
end;
function TOgModifierProperty.GetValue : string;
begin
Result := inherited GetValue;
end;
procedure TOgModifierProperty.Edit;
begin
with TModifierFrm.Create(Application) do
try
if ShowModal = mrOK then
SetValue(BufferToHex(Modifier, SizeOf(Modifier)));
finally
Free;
end;
end;
initialization initialization
{$I qonguard6.lrs} {$I qonguard6.lrs}