我在Android中遇到Firemonkey TEdit大写问题。
代码:
procedure TFormMain.Edit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin KeyChar := UpCase(KeyChar); end;
在Win32中它可以正常工作,但在Android中它无效。
答案 0 :(得分:2)
您必须使用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;
答案 1 :(得分:0)
使用ToUpper(Documentation)或AnsiUpperCase(Documentation)作为字符串。
更新:你为什么使用OnKeyDown?根据{{3}},您必须使用OnChangeTracking:"此事件提供了第一次机会来响应用户对编辑控件文本所做的修改。"
所以加入OnChangeTracking就像
procedure TFormMain.Edit1ChangeTracking(Sender: TObject);
begin
Edit1.text:= AnsiUpperCase(Edit1.text);
end;