You've already forked lazarus-ccr
Industrial/LCDDisplay: Single-character input of new character name in CharDefs editor.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8317 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -29,7 +29,7 @@ type
|
|||||||
procedure btReplaceClick(Sender: TObject);
|
procedure btReplaceClick(Sender: TObject);
|
||||||
procedure cbCharSelectorChange(Sender: TObject);
|
procedure cbCharSelectorChange(Sender: TObject);
|
||||||
procedure dgDotMatrixKeyDown(Sender: TObject; var Key: Word;
|
procedure dgDotMatrixKeyDown(Sender: TObject; var Key: Word;
|
||||||
Shift: TShiftState);
|
{%H-}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,
|
procedure dgDotMatrixMouseMove(Sender: TObject; Shift: TShiftState; X,
|
||||||
@ -70,7 +70,60 @@ implementation
|
|||||||
{$R *.lfm}
|
{$R *.lfm}
|
||||||
|
|
||||||
uses
|
uses
|
||||||
Math;
|
Math, ButtonPanel;
|
||||||
|
|
||||||
|
function CharInputBox(const ACaption, APrompt, ADefault: string): string;
|
||||||
|
var
|
||||||
|
F: TForm;
|
||||||
|
ed: TEdit;
|
||||||
|
lbl: TLabel;
|
||||||
|
bp: TButtonPanel;
|
||||||
|
begin
|
||||||
|
F := TForm.CreateNew(nil);
|
||||||
|
try
|
||||||
|
F.Caption := ACaption;
|
||||||
|
F.BorderStyle := bsDialog;
|
||||||
|
lbl := TLabel.Create(F);
|
||||||
|
lbl.AnchorSideTop.Control := F;
|
||||||
|
lbl.AnchorSideLeft.Control := F;
|
||||||
|
lbl.BorderSpacing.Top := F.Scale96ToFont(12);
|
||||||
|
lbl.BorderSpacing.Bottom := F.Scale96ToFont(2);
|
||||||
|
lbl.BorderSpacing.Left := F.Scale96ToFont(12);
|
||||||
|
lbl.BorderSpacing.Right := F.Scale96ToFont(12);
|
||||||
|
lbl.WordWrap := true;
|
||||||
|
lbl.AutoSize := true;
|
||||||
|
lbl.Caption := APrompt;
|
||||||
|
lbl.Parent := F;
|
||||||
|
lbl.AdjustSize;
|
||||||
|
ed := TEdit.Create(F);
|
||||||
|
ed.AnchorSideTop.Control := lbl;
|
||||||
|
ed.AnchorSideTop.Side := asrBottom;
|
||||||
|
ed.AnchorSideLeft.Control := F;
|
||||||
|
ed.AnchorSideRight.Control := F;
|
||||||
|
ed.AnchorSideRight.Side := asrRight;
|
||||||
|
ed.Anchors := [akLeft, akTop, akRight];
|
||||||
|
ed.BorderSpacing.Left := F.Scale96ToFont(12);
|
||||||
|
ed.BorderSpacing.Right := F.Scale96ToFont(12);
|
||||||
|
ed.BorderSpacing.Bottom := F.Scale96ToFont(18);
|
||||||
|
ed.MaxLength := 1;
|
||||||
|
ed.Text := ADefault;
|
||||||
|
ed.Parent := F;
|
||||||
|
ed.AdjustSize;
|
||||||
|
bp := TButtonPanel.Create(F);
|
||||||
|
bp.ShowButtons := [pbOK, pbCancel];
|
||||||
|
bp.Parent := F;
|
||||||
|
bp.AdjustSize;
|
||||||
|
F.Constraints.MinHeight := ed.Top + ed.Height + ed.BorderSpacing.Bottom + bp.Height + 2*bp.BorderSpacing.Around;
|
||||||
|
F.AutoSize := true;
|
||||||
|
F.Position := poScreenCenter;
|
||||||
|
if F.ShowModal = mrOK then
|
||||||
|
Result := ed.Text
|
||||||
|
else
|
||||||
|
Result := ADefault;
|
||||||
|
finally
|
||||||
|
F.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TLCDCharDefsEditor.PopulateCharSelector;
|
procedure TLCDCharDefsEditor.PopulateCharSelector;
|
||||||
var
|
var
|
||||||
@ -100,21 +153,8 @@ end;
|
|||||||
procedure TLCDCharDefsEditor.btAddClick(Sender: TObject);
|
procedure TLCDCharDefsEditor.btAddClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
newChar: String;
|
newChar: String;
|
||||||
perc, pix: Integer;
|
|
||||||
begin
|
begin
|
||||||
// Query the name of the new character from an input box. Unfortunately, the
|
newChar := CharInputBox('Dot matrix for...', 'Character', '');
|
||||||
// width of the input box is too wide. We work around this by temporarily
|
|
||||||
// setting the global parameter cInputQueryEditSizePercents to 0
|
|
||||||
perc := cInputQueryEditSizePercents;
|
|
||||||
pix := cInputQueryEditSizePixels;
|
|
||||||
cInputQueryEditSizePercents := 0;
|
|
||||||
cInputQueryEditSizePixels := 200;
|
|
||||||
try
|
|
||||||
newChar := InputBox('Dotmatrix to be used for...', 'Character', '');
|
|
||||||
finally
|
|
||||||
cInputQueryEditSizePercents := perc;
|
|
||||||
cInputQueryEditSizePixels := pix;
|
|
||||||
end;
|
|
||||||
if newChar = '' then
|
if newChar = '' then
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user