Firemonkey TEdit大写

时间:2014-08-06 06:37:00

标签: delphi firemonkey delphi-xe5 delphi-xe6

我在Android中遇到Firemonkey TEdit大写问题。

代码:


procedure TFormMain.Edit1KeyDown(Sender: TObject; var Key: Word;
  var KeyChar: Char; Shift: TShiftState);
begin
    KeyChar := UpCase(KeyChar);
end;

在Win32中它可以正常工作,但在Android中它无效。

2 个答案:

答案 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;