unit Unit1;
|
|
interface
|
|
uses
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
Dialogs, OleServer, MSINKAUTLib_TLB, ExtCtrls, StdCtrls;
|
|
type
|
TForm1 = class(TForm)
|
InkCLT: TInkCollector;
|
InkRC: TInkRecognizerContext;
|
Panel1: TPanel;
|
Button1: TButton;
|
edtName: TEdit;
|
Button2: TButton;
|
Button3: TButton;
|
Button4: TButton;
|
Edit1: TEdit;
|
procedure FormCreate(Sender: TObject);
|
procedure InkCLTStroke(ASender: TObject; const Cursor: IInkCursor;
|
const Stroke: IInkStrokeDisp; var Cancel: WordBool);
|
procedure Button1Click(Sender: TObject);
|
procedure Button2Click(Sender: TObject);
|
procedure Button3Click(Sender: TObject);
|
procedure Button4Click(Sender: TObject);
|
private
|
{ Private declarations }
|
procedure InitializeInkCollector;
|
function DeleteStr(str :WideString):WideString;
|
public
|
{ Public declarations }
|
end;
|
|
var
|
Form1: TForm1;
|
|
implementation
|
|
{$R *.dfm}
|
|
//------- ×Ô¶¨Ò庯Êý ------------------------------
|
//³õʼ»¯InkCLT
|
procedure TForm1.InitializeInkCollector;
|
begin
|
InkCLT.hWnd := panel1.Handle;
|
InkCLT.Enabled := true;
|
InkCLT.DefaultDrawingAttributes.Color := clRed; // īˮÑÕÉ«
|
InkCLT.DefaultDrawingAttributes.Width := 200; // ±ÊµÄ¿í¶È
|
end;
|
|
function TForm1.DeleteStr(str :WideString):WideString;
|
var
|
LengthOfText: Integer;
|
begin
|
LengthOfText := Length(str);
|
if LengthOfText > 0 then
|
begin
|
// ɾ³ý×îºóÒ»¸ö×Ö·û
|
Delete(str, LengthOfText, 1);
|
end;
|
Result := str;
|
end;
|
//-------------------------------------------------
|
|
procedure TForm1.FormCreate(Sender: TObject);
|
begin
|
InitializeInkCollector;
|
end;
|
|
procedure TForm1.InkCLTStroke(ASender: TObject; const Cursor: IInkCursor;
|
const Stroke: IInkStrokeDisp; var Cancel: WordBool);
|
//var
|
// ActiveCtrl: TWinControl;
|
begin
|
//·µ»Øµ±Ç°ÓµÓн¹µãµÄ¿Ø¼þ
|
//ActiveCtrl := Screen.ActiveControl;
|
//if ActiveCtrl is TEdit then
|
// TEdit(ActiveCtrl).Text := TEdit(ActiveCtrl).Text + Stroke.Ink.Strokes.ToString
|
//else if ActiveCtrl is TMemo then
|
// TMemo(ActiveCtrl).Lines.Add(Stroke.Ink.Strokes.ToString);
|
Edit1.Text := Stroke.Ink.Strokes.ToString;
|
//else
|
// ShowMessage('Ìáʾ£ºµ±Ç°½¹µã²»Ôڱ༿ò»ò¶àÐб༿òÉÏ.');
|
end;
|
|
//Çå¿ÕÊÖÐ´Çø
|
procedure TForm1.Button1Click(Sender: TObject);
|
begin
|
InkCLT.Ink.DeleteStrokes(InkCLT.Ink.Strokes);
|
Edit1.Clear;
|
Panel1.Refresh;
|
end;
|
|
//ɾ³ýÒ»¸ö×Ö£¬ÒªÍ³¼ÆÃ¿¸ö×ÖÓжàÉÙ±Ú»£¬InkÖ»ÄÜ×·×ٱʻ£¬°´±Ê»À´É¾³ý£¡£¡£¡
|
procedure TForm1.Button2Click(Sender: TObject);
|
var
|
Strokes: IInkStrokes;
|
LastStroke: IInkStrokeDisp;
|
begin
|
//Edit1.Text := DeleteStr(Edit1.Text);
|
|
if InkCLT.Ink.Strokes.Count > 0 then
|
begin
|
Strokes := InkCLT.Ink.Strokes;
|
LastStroke := Strokes.Item(Strokes.Count - 1) as IInkStrokeDisp;
|
InkCLT.Ink.DeleteStroke(LastStroke);
|
end;
|
end;
|
|
//È·Èϱ¸Ñ¡×Ö
|
procedure TForm1.Button3Click(Sender: TObject);
|
begin
|
edtName.Text := edtName.Text + Trim(Edit1.Text);
|
Button1Click(Sender);
|
end;
|
|
//ɾ³ýEdit1µÄÒ»¸ö×Ö
|
procedure TForm1.Button4Click(Sender: TObject);
|
begin
|
edtName.Text := DeleteStr(edtName.Text);
|
end;
|
|
end.
|