1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
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.
|