本例效果图:

代码文件:

代码文件:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormKeyPress(Sender: TObject; var Key: Char);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
str: string;
x1,y1: Integer;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
x2: Integer;
begin
HideCaret(Handle);
Repaint;
if Key = #8 then
begin
if Length(str) > 0 then
SetLength(str, Length(str) - 1);
end else str := str + Key;
Text := str;
Canvas.TextOut(x1, y1, str);
x2 := x1 + Canvas.TextWidth(str);
SetCaretPos(x2, y1);
ShowCaret(Handle);
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
str := '';
DestroyCaret;
CreateCaret(Handle, 0, 0, Canvas.TextHeight('A'));
SetCaretPos(X,Y);
ShowCaret(Handle);
x1 := X;
y1 := Y;
end;
end.
窗体文件:object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 206 ClientWidth = 339 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False OnKeyPress = FormKeyPress OnMouseDown = FormMouseDown PixelsPerInch = 96 TextHeight = 13 end
浙公网安备 33010602011771号