lazarus/components/charactermap/demo/main.pas

69 lines
1.3 KiB
ObjectPascal

unit Main;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LCLType, Forms, Controls, Graphics, Dialogs, StdCtrls,
CharacterMapFrm;
type
{ TMainForm }
TMainForm = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
procedure CharacterMapHelpHandler(Sender: TObject);
procedure InsertCharacterHandler(const C: TUTF8Char);
public
end;
var
MainForm: TMainForm;
implementation
{$R *.lfm}
{ TMainForm }
procedure TMainForm.Button1Click(Sender: TObject);
begin
if CharacterMapForm = nil then
begin
CharacterMapForm := TCharacterMapForm.Create(Application);
CharacterMapForm.OnInsertCharacter := @InsertCharacterHandler;
CharacterMapForm.OnShowHelp := @CharacterMapHelpHandler;
end;
CharacterMapForm.Show;
end;
procedure TMainForm.CharacterMapHelpHandler(Sender: TObject);
begin
ShowMessage('Clicking on a character cell inserts the associated character into the editor text.');
end;
procedure TMainForm.InsertCharacterHandler(const C: TUTF8Char);
var
txt: String;
p: Integer;
begin
p := Memo1.SelStart;
txt := Memo1.Lines.Text;
if Memo1.SelLength > 0 then
Delete(txt, p+1, Memo1.SelLength);
Insert(C, txt, p+1);
Memo1.Lines.Text := txt;
Memo1.SelStart := p + Length(C);
Memo1.SelLength := 0;
end;
end.