Sudoku: have separate Edit and Clean buttons (Fill also cleared the grid).

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7231 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
lazarus-bart
2020-01-04 17:47:07 +00:00
parent c9719c0bb9
commit 8dbd92b634
2 changed files with 29 additions and 18 deletions

View File

@ -5,7 +5,7 @@ object Form1: TForm1
Width = 333
HorzScrollBar.Page = 271
VertScrollBar.Page = 280
ActiveControl = ButtonFill
ActiveControl = btnEdit
BorderStyle = bsDialog
Caption = 'Sudoku Solver'
ClientHeight = 359
@ -29,24 +29,33 @@ object Form1: TForm1
OnPrepareCanvas = SGridPrepareCanvas
OnSelectEditor = SGridSelectEditor
end
object ButtonFill: TButton
object btnEdit: TButton
Left = 16
Height = 25
Top = 312
Width = 75
BorderSpacing.InnerBorder = 2
Caption = 'Fill'
OnClick = ButtonFillClick
Caption = 'Edit'
OnClick = btnEditClick
TabOrder = 0
end
object ButtonSolve: TButton
Left = 151
object btnSolve: TButton
Left = 208
Height = 25
Top = 312
Width = 75
BorderSpacing.InnerBorder = 2
Caption = 'Solve'
OnClick = ButtonSolveClick
OnClick = btnSolveClick
TabOrder = 1
end
object btnClear: TButton
Left = 96
Height = 25
Top = 312
Width = 75
Caption = 'Clear'
OnClick = btnClearClick
TabOrder = 3
end
end

View File

@ -38,11 +38,13 @@ type
{ TForm1 }
TForm1 = class(TForm)
ButtonSolve: TButton;
ButtonFill: TButton;
btnClear: TButton;
btnSolve: TButton;
btnEdit: TButton;
SGrid: TStringGrid;
procedure ButtonFillClick(Sender: TObject);
procedure ButtonSolveClick(Sender: TObject);
procedure btnClearClick(Sender: TObject);
procedure btnEditClick(Sender: TObject);
procedure btnSolveClick(Sender: TObject);
procedure EditorKeyPress(Sender: TObject; var Key: char);
procedure FormActivate(Sender: TObject);
procedure SGridPrepareCanvas(sender: TObject; aCol, aRow: Integer;
@ -67,18 +69,18 @@ implementation
{ TForm1 }
procedure TForm1.ButtonFillClick(Sender: TObject);
var
c, r: Integer;
procedure TForm1.btnEditClick(Sender: TObject);
begin
for c := 0 to pred(SGrid.ColCount) do
for r := 0 to pred(SGrid.RowCount) do
SGrid.Cells[c, r] := '';
SGrid.Options := SGrid.Options + [goEditing];
SGrid.SetFocus;
end;
procedure TForm1.ButtonSolveClick(Sender: TObject);
procedure TForm1.btnClearClick(Sender: TObject);
begin
SGrid.Clean;
end;
procedure TForm1.btnSolveClick(Sender: TObject);
begin
SGrid.Options := SGrid.Options - [goEditing];
SolveSudoku;