Industrial/LCDDisplay: Add handlers for OnKeyDown and OnMouseMove to CharDefs editor.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8316 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2022-06-19 16:56:47 +00:00
parent 51b7fa33bf
commit 0a73893d27
2 changed files with 48 additions and 5 deletions

View File

@ -105,13 +105,13 @@ object LCDCharDefsEditor: TLCDCharDefsEditor
Left = 176 Left = 176
Height = 88 Height = 88
Top = 57 Top = 57
Width = 87 Width = 89
AutoSize = True AutoSize = True
BorderSpacing.Left = 5 BorderSpacing.Left = 5
BorderSpacing.Right = 12 BorderSpacing.Right = 12
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 88 ClientHeight = 88
ClientWidth = 87 ClientWidth = 89
TabOrder = 2 TabOrder = 2
object btReplace: TBitBtn object btReplace: TBitBtn
AnchorSideLeft.Control = pnButtons AnchorSideLeft.Control = pnButtons
@ -120,7 +120,7 @@ object LCDCharDefsEditor: TLCDCharDefsEditor
Left = 0 Left = 0
Height = 26 Height = 26
Top = 31 Top = 31
Width = 87 Width = 89
AutoSize = True AutoSize = True
BorderSpacing.Top = 5 BorderSpacing.Top = 5
Caption = 'Replace' Caption = 'Replace'
@ -140,7 +140,7 @@ object LCDCharDefsEditor: TLCDCharDefsEditor
Left = 0 Left = 0
Height = 26 Height = 26
Top = 62 Top = 62
Width = 87 Width = 89
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
AutoSize = True AutoSize = True
BorderSpacing.Top = 5 BorderSpacing.Top = 5
@ -160,7 +160,7 @@ object LCDCharDefsEditor: TLCDCharDefsEditor
Left = 0 Left = 0
Height = 26 Height = 26
Top = 0 Top = 0
Width = 87 Width = 89
Anchors = [akTop, akLeft, akRight] Anchors = [akTop, akLeft, akRight]
AutoSize = True AutoSize = True
Caption = 'Add as...' Caption = 'Add as...'
@ -188,7 +188,9 @@ object LCDCharDefsEditor: TLCDCharDefsEditor
FixedRows = 0 FixedRows = 0
ScrollBars = ssNone ScrollBars = ssNone
TabOrder = 3 TabOrder = 3
OnKeyDown = dgDotMatrixKeyDown
OnMouseDown = dgDotMatrixMouseDown OnMouseDown = dgDotMatrixMouseDown
OnMouseMove = dgDotMatrixMouseMove
OnPrepareCanvas = dgDotMatrixPrepareCanvas OnPrepareCanvas = dgDotMatrixPrepareCanvas
end end
object ImageList1: TImageList object ImageList1: TImageList

View File

@ -28,8 +28,12 @@ type
procedure btDeleteClick(Sender: TObject); procedure btDeleteClick(Sender: TObject);
procedure btReplaceClick(Sender: TObject); procedure btReplaceClick(Sender: TObject);
procedure cbCharSelectorChange(Sender: TObject); procedure cbCharSelectorChange(Sender: TObject);
procedure dgDotMatrixKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure dgDotMatrixMouseDown(Sender: TObject; {%H-}Button: TMouseButton; procedure dgDotMatrixMouseDown(Sender: TObject; {%H-}Button: TMouseButton;
{%H-}Shift: TShiftState; X, Y: Integer); {%H-}Shift: TShiftState; X, Y: Integer);
procedure dgDotMatrixMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure dgDotMatrixPrepareCanvas({%H-}sender: TObject; aCol, aRow: Integer; procedure dgDotMatrixPrepareCanvas({%H-}sender: TObject; aCol, aRow: Integer;
{%H-}aState: TGridDrawState); {%H-}aState: TGridDrawState);
procedure FormActivate(Sender: TObject); procedure FormActivate(Sender: TObject);
@ -41,6 +45,7 @@ type
FSavedCharDefs: TCharDefs; FSavedCharDefs: TCharDefs;
FSelectedChar: String; FSelectedChar: String;
FTmpDotRows: TDotRows; FTmpDotRows: TDotRows;
FOldRow, FOldCol: Integer;
procedure SetLCDDisplay(AValue: TLCDDisplay); procedure SetLCDDisplay(AValue: TLCDDisplay);
procedure PopulateCharSelector; procedure PopulateCharSelector;
procedure SaveCharDefs; procedure SaveCharDefs;
@ -154,6 +159,21 @@ begin
FModified := false; FModified := false;
end; end;
procedure TLCDCharDefsEditor.dgDotMatrixKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
r, c: integer;
begin
r := dgDotMatrix.Row;
c := dgDotMatrix.Col;
if Key = 32 then
begin
ToggleDot(c, r);
dgDotMatrix.InvalidateCell(c, r);
FModified := true;
end;
end;
procedure TLCDCharDefsEditor.dgDotMatrixMouseDown(Sender: TObject; procedure TLCDCharDefsEditor.dgDotMatrixMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var var
@ -162,9 +182,30 @@ begin
dgDotMatrix.MouseToCell(X,Y, c, r); dgDotMatrix.MouseToCell(X,Y, c, r);
ToggleDot(c, r); ToggleDot(c, r);
dgDotMatrix.InvalidateCell(c, r); dgDotMatrix.InvalidateCell(c, r);
FOldRow := r;
FOldCol := c;
FModified := true; FModified := true;
end; end;
procedure TLCDCharDefsEditor.dgDotMatrixMouseMove(Sender: TObject;
Shift: TShiftState; X, Y: Integer);
var
r, c: Integer;
begin
if Shift = [ssLeft] then
begin
dgDotMatrix.MouseToCell(X,Y, c, r);
if (c <> FOldCol) or (r <> FOldRow) then
begin
ToggleDot(c, r);
dgDotMatrix.InvalidateCell(c, r);
FOldRow := r;
FOldCol := c;
FModified := true;
end;
end;
end;
procedure TLCDCharDefsEditor.dgDotMatrixPrepareCanvas(sender: TObject; aCol, procedure TLCDCharDefsEditor.dgDotMatrixPrepareCanvas(sender: TObject; aCol,
aRow: Integer; aState: TGridDrawState); aRow: Integer; aState: TGridDrawState);
begin begin