Firemonkey TEdit大写
我在Android中遇到Firemonkey TEdit Uppercase问题。
码:
procedure TFormMain.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin KeyChar := UpCase(KeyChar); end;
在Win32中它可以工作,但在Android中不起作用。
你必须使用ChangeTracking事件。 它工作正常
此代码适用于Android
procedure TFormMain.Edit1Typing(Sender: TObject);
begin
Edit1.Text:=AnsiUpperCase(Edit1.Text);
Edit1.GoToTextEnd;
end;
此代码在Windows上工作 :
procedure TFormMain.Edit1ChangeTracking(Sender: TObject);
var
thetext: String;
begin
thetext := Edit1.Text;
Edit1.OnChangeTracking := nil;
Edit1.Text := '';
Edit1.Text := AnsiUpperCase(thetext);
Edit1.OnChangeTracking := Edit1ChangeTracking;
Edit1.GoToTextEnd;
end;
对于字符串使用ToUpper(文档)或AnsiUpperCase(文档)。
更新:你为什么使用OnKeyDown? 根据文档,您必须使用OnChangeTracking:“此事件提供了第一个机会来响应用户对编辑控件文本所做的修改。”
因此,在OnChangeTracking类似的东西
procedure TFormMain.Edit1ChangeTracking(Sender: TObject);
begin
Edit1.text:= AnsiUpperCase(Edit1.text);
end;
链接地址: http://www.djcxy.com/p/60479.html