speendbutton的caption就是字母,点一下,通过caption向edit1里加一个字母,请问这段程序,错在哪里呀unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls;type
TForm1 = class(TForm)
edt1: TEdit;
btn1q: TSpeedButton;
btn1w: TSpeedButton;
btn1e: TSpeedButton;
procedure btnClick(Sender: TObject);
procedure enterClick(Sender: TObject);
procedure delClick(Sender: TObject);
procedure FormActivate(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses StrUtils;
{$R *.dfm}
procedure TForm1.btnClick(Sender: TObject);
begin
PostMessage(ActiveControl.Handle,WM_CHAR,ord((sender as tspeedbutton).Caption[1]),0);
edt1.text:=edt1.Text+(sender as tspeedbutton).Caption;
edt1.SelStart:=Length(edt1.Text);
end;procedure TForm1.enterClick(Sender: TObject);
begin
postmessage(ActiveControl.Handle,wm_keydown,vk_return,0);
end;procedure TForm1.delClick(Sender: TObject);
begin
postmessage(ActiveControl.handle,wm_keydown,VK_BACK,0);
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
self.edt1.Focused;
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls;type
TForm1 = class(TForm)
edt1: TEdit;
btn1q: TSpeedButton;
btn1w: TSpeedButton;
btn1e: TSpeedButton;
procedure btnClick(Sender: TObject);
procedure enterClick(Sender: TObject);
procedure delClick(Sender: TObject);
procedure FormActivate(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation
uses StrUtils;
{$R *.dfm}
procedure TForm1.btnClick(Sender: TObject);
begin
PostMessage(ActiveControl.Handle,WM_CHAR,ord((sender as tspeedbutton).Caption[1]),0);
edt1.text:=edt1.Text+(sender as tspeedbutton).Caption;
edt1.SelStart:=Length(edt1.Text);
end;procedure TForm1.enterClick(Sender: TObject);
begin
postmessage(ActiveControl.Handle,wm_keydown,vk_return,0);
end;procedure TForm1.delClick(Sender: TObject);
begin
postmessage(ActiveControl.handle,wm_keydown,VK_BACK,0);
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
self.edt1.Focused;
end;end.
不用PostMessage,和普通的程序一样写
edt1.Text := LeftStr(edt1.Text,Length(edt1.Text) -1);
如果要全删除就这样:
edt1.Text := ''
//edt1.SelStart:=Length(edt1.Text);
我把這個注釋掉了,可以了
procedure TForm1.spaceClick(Sender: TObject);
begin
postmessage(ActiveControl.handle,wm_keydown,VK_BACK,0);
edt1.Text := '';
end;procedure TForm1.delClick(Sender: TObject);
begin
postmessage(ActiveControl.handle,wm_keydown,VK_BACK,0);
edt1.Text := LeftStr(edt1.Text,Length(edt1.Text) -1);
end;退格和清空,這兩個按鈕點了後,焦點失去了,怎么動態的判断是在哪個控件上失去的,再返回回去,一解決就結了算了
procedure TForm1.delClick(Sender: TObject);
begin
postmessage(ActiveControl.handle,wm_keydown,VK_BACK,0);
end;我這個程序應該怎么樣寫?
謝謝你一直的回答,問題已經解決了,謝謝你了,分全給你