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.