Основная проблема, что я решал - приподнять окно над клавиатурой
Ну и некая анимация
пример использования
procedure TUserProfile.InputPassOKHandler(Sender:TObject);
var
t: string;
d:TMyInputQuery;
begin
d := Sender as TMyInputQuery;
t:=apiObject.token;
apiObject.OpenSessionPass(.........);
if (ApiObject.lastError.code<>ERR_NO_ERROR)and(ApiObject.lastError.code<>ERR_SESSION_ALREADY_OPEN) then
begin
apiObject.token := t;
ShowMessage('Неверный пароль');
exit;
end;
PersData[dfPassword] := d.Values[0];
SavePersData;
reloadPersData;
init;
end;
procedure TUserProfile.UpdateExistingUser;
var d:TMyInputQuery;
begin
if PersData[dfPassword]='' then
begin
d:=TMyInputQuery.Create(['Для изменения данных введите пароль'],[''],self, InputPassOKHandler);
try
// тут можно все что угодно делать с Edit'ами на форме перед показом
d.ShowModal(procedure (AResult:TModalResult) begin end );
finally
freeandNil(d);
end;
end
else
begin
SavePersData;
reloadPersData;
init;
end;
end;
MyDialogs.7z