unit uMain;
|
|
interface
|
|
uses
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
Dialogs, StdCtrls, XpMan, Buttons, sBitBtn;
|
|
type
|
TfrmMain = class(TForm)
|
edtSelect: TEdit;
|
edtText: TEdit;
|
sBitBtn50: TsBitBtn;
|
sBitBtn51: TsBitBtn;
|
sBitBtn52: TsBitBtn;
|
sBitBtn53: TsBitBtn;
|
Button27: TButton;
|
Button28: TButton;
|
Button29: TButton;
|
Button30: TButton;
|
Button31: TButton;
|
Button32: TButton;
|
Button33: TButton;
|
Button34: TButton;
|
Button35: TButton;
|
Button36: TButton;
|
Button1: TButton;
|
Button2: TButton;
|
Button3: TButton;
|
Button4: TButton;
|
Button5: TButton;
|
Button6: TButton;
|
Button7: TButton;
|
Button8: TButton;
|
Button9: TButton;
|
Button10: TButton;
|
Button11: TButton;
|
Button12: TButton;
|
Button13: TButton;
|
Button14: TButton;
|
Button15: TButton;
|
Button16: TButton;
|
Button17: TButton;
|
Button18: TButton;
|
Button19: TButton;
|
Button20: TButton;
|
Button21: TButton;
|
Button22: TButton;
|
Button23: TButton;
|
Button24: TButton;
|
Button25: TButton;
|
Button26: TButton;
|
btnZh: TButton;
|
Button37: TButton;
|
procedure sBitBtn50Click(Sender: TObject);
|
procedure sBitBtn51Click(Sender: TObject);
|
procedure sBitBtn52Click(Sender: TObject);
|
procedure sBitBtn53Click(Sender: TObject);
|
procedure btnZhClick(Sender: TObject);
|
procedure Button1Click(Sender: TObject);
|
private
|
{ Private declarations }
|
public
|
{ Public declarations }
|
glInkOutput : String;
|
procedure InsertStringAtCursor(EditControl: TEdit; Str: string);
|
procedure DeleteCharsBeforeCursor(EditControl: TEdit; Count: Integer=1);
|
end;
|
|
var
|
frmMain: TfrmMain;
|
|
implementation
|
|
{$R *.dfm}
|
|
//------------------------------------------------------------------------------
|
// Ä£ÄⰴϺÍÊͷŰ´¼ü
|
procedure SimulateKeyPress(KeyCode: Word);
|
begin
|
keybd_event(KeyCode, MapVirtualKey(KeyCode, 0), 0, 0);
|
keybd_event(KeyCode, MapVirtualKey(KeyCode, 0), KEYEVENTF_KEYUP, 0);
|
end;
|
|
// Ä£ÄⰴϺÍÊÍ·Å×éºÏ¼ü
|
procedure SimulateCombinationKeyPress(KeyCode1, KeyCode2: Word);
|
begin
|
keybd_event(KeyCode1, MapVirtualKey(KeyCode1, 0), 0, 0);
|
keybd_event(KeyCode2, MapVirtualKey(KeyCode2, 0), 0, 0);
|
keybd_event(KeyCode2, MapVirtualKey(KeyCode2, 0), KEYEVENTF_KEYUP, 0);
|
keybd_event(KeyCode1, MapVirtualKey(KeyCode1, 0), KEYEVENTF_KEYUP, 0);
|
end;
|
|
//------------------------------------------------------------------------------
|
//´Ó¹â±ê´¦²åÈë×Ö·û
|
procedure TfrmMain.InsertStringAtCursor(EditControl: TEdit; Str: string);
|
begin
|
// ±£´æµ±Ç°¹â±êλÖÃ
|
EditControl.SelStart := EditControl.SelStart;
|
EditControl.SelLength := 0; // ²»Ñ¡ÔñÈκÎÎı¾£¬È·±£Ö»²åÈë¶ø²»Ìæ»»
|
EditControl.SelText := Str; // ²åÈë×Ö·û´®
|
end;
|
|
//×Ô¶¨Ò庯Êý£º´Ó¹â±ê´¦É¾³ý×Ö·û
|
procedure TfrmMain.DeleteCharsBeforeCursor(EditControl: TEdit; Count: Integer=1);
|
var
|
CursorPos, NewStart: Integer;
|
begin
|
CursorPos := EditControl.SelStart;
|
if CursorPos >= Count then
|
begin
|
NewStart := CursorPos - Count; // ¼ÆËãеÄÑ¡ÔñÆðµã
|
EditControl.SelStart := NewStart;
|
EditControl.SelLength := Count; // Ñ¡ÔñCount¸ö×Ö·û
|
EditControl.SelText := ''; // ɾ³ýÑ¡¶¨µÄÎı¾
|
end
|
else
|
begin
|
// Èç¹ûCount´óÓÚ¹â±êλÖã¬Ôòɾ³ýËùÓÐÔÚ¹â±ê֮ǰµÄ×Ö·û
|
EditControl.SelStart := 0;
|
EditControl.SelLength := CursorPos;
|
EditControl.SelText := '';
|
end;
|
end;
|
|
//------------------------------------------------------------------------------
|
//Çå³ýËùÓÐÊäÈë
|
procedure TfrmMain.sBitBtn50Click(Sender: TObject);
|
begin
|
edtSelect.Clear;
|
end;
|
|
//È·ÈÏ×Ö·û
|
procedure TfrmMain.sBitBtn51Click(Sender: TObject);
|
begin
|
//°Ñ´ýѡȡÎÄ×Ö¿½±´µ½edtTextÖÐ
|
InsertStringAtCursor(edtText, Trim(edtSelect.Text));
|
end;
|
|
//ɾ³ý×Ö·û
|
procedure TfrmMain.sBitBtn52Click(Sender: TObject);
|
begin
|
DeleteCharsBeforeCursor(edtText);
|
end;
|
|
//¿½±´ÊäÈëÄÚÈÝ£¬Í˳ö
|
procedure TfrmMain.sBitBtn53Click(Sender: TObject);
|
begin
|
//½«½á¹û¸üе½È«¾Ö±äÁ¿
|
glInkOutput := edtText.Text;
|
Close();
|
end;
|
|
// Çл»µ½ÖÐÎÄÊäÈë·¨
|
procedure TfrmMain.btnZhClick(Sender: TObject);
|
begin
|
// ¼ÙÉèʹÓà Ctrl + ¿Õ¸ñÇл»ÊäÈë·¨
|
SimulateCombinationKeyPress(VK_CONTROL, VK_SPACE);
|
end;
|
|
//------------------------------------------------------------------------------
|
// ×Ö·û°´Å¥´¦Àí³ÌÐò
|
procedure TfrmMain.Button1Click(Sender: TObject);
|
var
|
KeyChar: Char;
|
KeyCode: Word;
|
begin
|
//ÆÁÄ»¼üÅÌÊäÈë×Öĸ
|
if TButton(Sender).Tag<=37 then begin
|
KeyChar := TButton(Sender).Caption[1]; // ÌáÈ¡°´Å¥ Caption ×Ö·û
|
KeyCode := VkKeyScan(KeyChar);
|
SimulateKeyPress(KeyCode);
|
end;
|
edtSelect.SetFocus;
|
end;
|
|
end.
|