unit untMain; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, Spin, indLCDDisplay; type { TfrmMain } TfrmMain = class(TForm) cbAutoSize: TCheckBox; cbCharSpace: TCheckBox; cbtFrameColor: TColorButton; cbtBoardColor: TColorButton; cbtDotONColor: TColorButton; cbtDotOFFColor: TColorButton; cbColorSchemes: TComboBox; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; mmText: TMemo; rgFrameStyle: TRadioGroup; rgFrameColorStyle: TRadioGroup; rgDotShape: TRadioGroup; rgFrameHeight: TRadioGroup; seDotSize: TSpinEdit; seFrameSize: TSpinEdit; seDotsSpace: TSpinEdit; seDisplayCharCount: TSpinEdit; seWidth: TSpinEdit; seHeigth: TSpinEdit; seDisplayLineCount: TSpinEdit; procedure cbAutoSizeChange(Sender: TObject); procedure cbCharSpaceChange(Sender: TObject); procedure cbColorSchemesChange(Sender: TObject); procedure cbtFrameColorColorChanged(Sender: TObject); procedure cbtBoardColorColorChanged(Sender: TObject); procedure cbtDotONColorColorChanged(Sender: TObject); procedure cbtDotOFFColorColorChanged(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure mmTextChange(Sender: TObject); procedure rgFrameStyleClick(Sender: TObject); procedure rgFrameColorStyleClick(Sender: TObject); procedure rgDotShapeClick(Sender: TObject); procedure rgFrameHeightClick(Sender: TObject); procedure seDisplayCharCountChange(Sender: TObject); procedure seDotSizeChange(Sender: TObject); procedure seDotsSpaceChange(Sender: TObject); procedure seFrameSizeChange(Sender: TObject); procedure seHeigthChange(Sender: TObject); procedure seDisplayLineCountChange(Sender: TObject); procedure seWidthChange(Sender: TObject); private LCDDisplay: TLCDDisplay; public end; var frmMain: TfrmMain; implementation {$R *.lfm} { TfrmMain } procedure TfrmMain.cbtFrameColorColorChanged(Sender: TObject); begin LCDDisplay.FrameColor := cbtFrameColor.ButtonColor; end; procedure TfrmMain.cbtBoardColorColorChanged(Sender: TObject); begin LCDDisplay.BoardColor := cbtBoardColor.ButtonColor; end; procedure TfrmMain.cbtDotONColorColorChanged(Sender: TObject); begin LCDDisplay.DotColorON := cbtDotONColor.ButtonColor; end; procedure TfrmMain.cbtDotOFFColorColorChanged(Sender: TObject); begin LCDDisplay.DotColorOFF := cbtDotOFFColor.ButtonColor; end; procedure TfrmMain.FormCreate(Sender: TObject); begin LCDDisplay := TLCDDisplay.Create(self); with LCDDisplay do begin Left := 24; Height := 101; Top := 16; Width := 290; AutoSize := True; DotColorOn := 5162664; DotColorOff := 2900284; DisplayCharCount := 0; Lines.Add('TLCDDisplay'); ColorScheme := csInvGreen; Parent := self; end end; procedure TfrmMain.FormShow(Sender: TObject); begin mmText.Lines := LCDDisplay.Lines; seDisplayLineCount.Value := LCDDisplay.DisplayLineCount; seDisplayCharCount.Value := LCDDisplay.DisplayCharCount; seFrameSize.Value := LCDDisplay.FrameSize; seDotSize.Value := LCDDisplay.DotSize; seDotsSpace.Value := LCDDisplay.DotsSpace; seWidth.Value := LCDDisplay.Width; seHeigth.Value := LCDDisplay.Height; cbAutoSize.Checked := LCDDisplay.AutoSize; cbCharSpace.Checked := LCDDisplay.CharSpace; cbtFrameColor.ButtonColor := LCDDisplay.FrameColor; cbtBoardColor.ButtonColor := LCDDisplay.BoardColor; cbtDotONColor.ButtonColor := LCDDisplay.DotColorOn; cbtDotOFFColor.ButtonColor := LCDDisplay.DotColorOff; rgFrameStyle.ItemIndex := integer(LCDDisplay.FrameStyle); rgFrameColorStyle.ItemIndex := integer(LCDDisplay.FrameColorStyle); rgDotShape.ItemIndex := integer(LCDDisplay.DotShape); rgFrameHeight.ItemIndex := integer(LCDDisplay.FrameHeight); cbColorSchemes.ItemIndex:= integer(LCDDisplay.ColorScheme); end; procedure TfrmMain.cbAutoSizeChange(Sender: TObject); begin LCDDisplay.AutoSize := cbAutoSize.Checked; if not cbAutoSize.Checked then begin LCDDisplay.Width := seWidth.Value; LCDDisplay.Height := seHeigth.Value; end; end; procedure TfrmMain.cbCharSpaceChange(Sender: TObject); begin LCDDisplay.CharSpace := cbCharSpace.Checked; end; procedure TfrmMain.cbColorSchemesChange(Sender: TObject); begin LCDDisplay.ColorScheme := TColorScheme(cbColorSchemes.ItemIndex); end; procedure TfrmMain.mmTextChange(Sender: TObject); begin LCDDisplay.Lines.Assign(mmText.Lines); if LCDDisplay.AutoSize then begin LCDDisplay.InvalidatePreferredSize; LCDDisplay.AdjustSize; end; LCDDisplay.Invalidate; end; procedure TfrmMain.rgFrameStyleClick(Sender: TObject); begin LCDDisplay.FrameStyle := TFrameStyle(rgFrameStyle.ItemIndex); end; procedure TfrmMain.rgFrameColorStyleClick(Sender: TObject); begin LCDDisplay.FrameColorStyle := TFrameColorStyle(rgFrameColorStyle.ItemIndex); end; procedure TfrmMain.rgDotShapeClick(Sender: TObject); begin LCDDisplay.DotShape := TDotShape(rgDotShape.ItemIndex); end; procedure TfrmMain.rgFrameHeightClick(Sender: TObject); begin LCDDisplay.FrameHeight := TFrameHeight(rgFrameHeight.ItemIndex); end; procedure TfrmMain.seDisplayCharCountChange(Sender: TObject); begin LCDDisplay.DisplayCharCount := seDisplayCharCount.Value; end; procedure TfrmMain.seDotSizeChange(Sender: TObject); begin LCDDisplay.DotSize := seDotSize.Value; end; procedure TfrmMain.seDotsSpaceChange(Sender: TObject); begin LCDDisplay.DotsSpace := seDotsSpace.Value; end; procedure TfrmMain.seFrameSizeChange(Sender: TObject); begin LCDDisplay.FrameSize := seFrameSize.Value; end; procedure TfrmMain.seHeigthChange(Sender: TObject); begin LCDDisplay.Height := seHeigth.Value; end; procedure TfrmMain.seDisplayLineCountChange(Sender: TObject); begin LCDDisplay.DisplayLineCount := seDisplayLineCount.Value; end; procedure TfrmMain.seWidthChange(Sender: TObject); begin LCDDisplay.Width := seWidth.Value; end; end.