From 868daf94f29ce1ffdd799a68c07bb668cd373bcd Mon Sep 17 00:00:00 2001 From: HP\李良庭 <liliangting@lanpucloud.cn:1111> Date: 星期二, 08 七月 2025 11:49:03 +0800 Subject: [PATCH] 提交分辨率自适应版本V3.1.0.1500 --- demo/TabletPC/Unit1.~pas | 124 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 124 insertions(+), 0 deletions(-) diff --git a/demo/TabletPC/Unit1.~pas b/demo/TabletPC/Unit1.~pas new file mode 100644 index 0000000..9d1f01e --- /dev/null +++ b/demo/TabletPC/Unit1.~pas @@ -0,0 +1,124 @@ +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. -- Gitblit v1.9.3