File: main.pas

package info (click to toggle)
lazarus 4.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 275,760 kB
  • sloc: pascal: 2,341,904; xml: 509,420; makefile: 348,726; cpp: 93,608; sh: 3,387; java: 609; perl: 297; sql: 222; ansic: 137
file content (68 lines) | stat: -rw-r--r-- 1,340 bytes parent folder | download | duplicates (3)
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.