2014-11-18 3 views
0

Я написал мобильное приложение. У меня есть панель входа, а в правлении есть метка, которая является заполнителем. (электронная почта/пароль)Управление фокусом Delphi

редактирует onclick метод изменения, видимый на этикетках. У меня также есть onkeyboardshow, чтобы изменить положение панели входа. Поэтому, когда пользователь нажимает кнопку tedit, отображается клавиатура, но ярлык не меняется. если я снова нажму titit, заметное изменение ярлыка.

Итак, я добавил код, чтобы изменить ярлык, видимый при открытии клавиатуры.

procedure TformReg.FormVirtualKeyboardShown(Sender: TObject; 
    KeyboardVisible: Boolean; const Bounds: TRect); 
begin 
    Rectangle1.Align:= TAlignLayout.Top; 
    Rectangle1.Margins.Left:= Trunc((screenW-362)/2); 
    Rectangle1.Margins.Right:= Trunc((screenW-362)/2); 
    if email.SetFocus = true then 
    lblEmail.Visible:= false 
    else 
    lblPassword.Visible:= false; 
end; 

Но этот код не работает, я должен понять, какое редактирование сосредоточено. Я использую delphi firemonkey xe6.

Ошибка incompitable типы

+0

С каких это функций ['SetFocus'] (http://docwiki.embarcadero.com/Libraries/XE6/en/FMX.Controls.TControl.SetFocus) функция? Вам не хватает «тогда»? Мне все еще интересно, как люди могут отправлять 2 строки кода с двумя ошибками (не принимайте это лично). Не могли бы вы ['edit your question'] (http://stackoverflow.com/posts/26991798/edit) и разместить точный код, который вы используете, а не просто« код »*, пожалуйста? – TLama

+0

@TLama i отредактировал – Dauezevy

+0

Кроме того, идиоматически вы никогда не пишете 'if somebool = True then', вы всегда пишете' if somebool then' –

ответ

1

Ваш код должен быть что-то вроде:

label1.Visible := edit1.Focused; 

Вы не можете проверить, если что-то «SetFocus», так как SetFocus это процедура, которая на самом деле FOCUS некоторый контроль, так что вы необходимо проверить, если элемент управления FOCUSED.

Смежные вопросы