2017-12-21 17 views
3

저는 매우 기본적인 문제가있어서 그 이유를 알 수 없습니다. 필드가 포커스를받을 때 TEdit 텍스트를 선택하고 싶습니다. VCL 델파이 7에서 당신은 OnEnter 이벤트에서이 작업을 수행 할 수 있습니다Delphi 10에서 TEdit 필드 텍스트를 선택하는 방법

TEdit(Sender).SelLength := Length(TEdit(Sender).Text) 

을 이제 델파이 10.2 FireMonkey로, 나는 여러 가지 방법으로 그것을 시도했지만, 그것은 작동하지 않습니다.

예 :

procedure TfPrincipal.Edit1Enter(Sender: TObject); 
begin 
    TEdit(Sender).SetFocus; 
    TEdit(Sender).SelStart := 0; // I already tried to change this value 
    TEdit(Sender).SelLength := Length(TEdit(Sender).Text); // I already tried to change this value too 
end; 
+0

텍스트처럼 익명의 스레드에서 선택 SelectAll하기 위해 노력했다. 어떤 플랫폼에 대해 이야기하고 있습니까? – Victoria

+0

@Victoria Tab 키를 사용하여 필드 사이를 탐색 할 때 텍스트가 선택되어있는 것으로 나타났습니다. 그러나 필드 (Windows 10)에서 마우스를 클릭하거나 모바일 장치 (Android 4.4)의 화면을 터치하면 텍스트가 선택되지 않습니다. 'Edit1.SelectAll' 프로시 저는 또한 작동하지 않습니다. – wBB

+1

FMX 용 Aha, [this same] (https://stackoverflow.com/q/8616463/8041231) (허용되는 방식은 Windows 플랫폼에서 작동 함). 하지만 공통 UX에서 벗어나는 혼란에 동의합니다. – Victoria

답변

0

당신이 컨트롤이 단지 제어 하락에 코드 또는 변경없이 포커스를받을 때 자동으로 완전히 선택되어 있는지

TThread.CreateAnonymousThread(procedure() 
    begin 
    TThread.Synchronize(nil, procedure() 
     begin 
     Edit1.SelectAll(); 
     end); 
    end).Start