• 0
Авторизация  
Вадим Шавров

Блокировка компонентов при скроллинге

Вопросы

Имеется такая "форма" для добавления новой записи в БД. Там Edit, ComboEdit, DateEdit, Memo и т.п., все они расположены на VertScrollBox. Можно ли как-то блокировать эти компоненты при скролле, а то попадешь на поле для ввода и сразу выскакивает то клавиатура, то окно комбо эдита, то календарь😊?

Screenshot_InventoryOfDevices_20180509-194430.thumb.png.161442d0a690fc80f0af52dd2f678ddf.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 ответов на этот вопрос

  • 1
21 час назад, Вадим Шавров сказал:

Имеется такая "форма" для добавления новой записи в БД. Там Edit, ComboEdit, DateEdit, Memo и т.п., все они расположены на VertScrollBox. Можно ли как-то блокировать эти компоненты при скролле, а то попадешь на поле для ввода и сразу выскакивает то клавиатура, то окно комбо эдита, то календарь😊?

Screenshot_InventoryOfDevices_20180509-194430.thumb.png.161442d0a690fc80f0af52dd2f678ddf.png

Сам не пробовал еще, но тебе предложу.

Может есть целевое решение, но мне видится такое

Проверь отпишись пжл.

значится в CreateFrom суем 

FMX.Types.VKAutoShowMode := TVKAutoShowMode.Never;

Это дело лишит нас открытия клавиатуры при Click на Edit

а в событии onTap у Edit прописать процедуру открытия клавы

showKeyboard(Sender);

procedure Tmainf.showKeyboard(Sender: TObject);
var
  FService: IFMXVirtualKeyboardService;
begin
  {$IFDEF MSWINDOWS}
  exit;
  {$ENDIF}
  TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
  if (FService <> nil) then
  begin
    if not (TVirtualKeyBoardState.Visible in FService.VirtualKeyBoardState) then
      FService.ShowVirtualKeyboard(TFmxObject(Sender));
  end;

  if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardToolbarService, IInterface(FKService)) then
    begin
      FKService.SetHideKeyboardButtonVisibility(False);
      FKService.SetToolbarEnabled(False);
    end;
end;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Объявил FKService в var, все равно ошибка в двух последних строках с FKService:

procedure TFormMain.showKeyboard(Sender: TObject);
var
  FService, FKService: IFMXVirtualKeyboardService;
begin
  {$IFDEF MSWINDOWS}
  exit;
  {$ENDIF}
  TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
  if (FService <> nil) then
  begin
    if not (TVirtualKeyBoardState.Visible in FService.VirtualKeyBoardState) then
      FService.ShowVirtualKeyboard(TFmxObject(Sender));
  end;

  if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardToolbarService, IInterface(FKService)) then
    begin
      FKService.SetHideKeyboardButtonVisibility(False);
      FKService.SetToolbarEnabled(False);
    end;
end;

Ааа, я понял, нашел ваш ответ в другом вопросе, как я понял это для iOS. Просто убрал эти строки.

В общем ваше решение работает на Edit'ах и Memo, но как быть с ComboEdit, DateEdit?

Изменено пользователем Вадим Шавров

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
1 час назад, Вадим Шавров сказал:

Объявил FKService в var, все равно ошибка в двух последних строках с FKService:


procedure TFormMain.showKeyboard(Sender: TObject);
var
  FService, FKService: IFMXVirtualKeyboardService;
begin
  {$IFDEF MSWINDOWS}
  exit;
  {$ENDIF}
  TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService, IInterface(FService));
  if (FService <> nil) then
  begin
    if not (TVirtualKeyBoardState.Visible in FService.VirtualKeyBoardState) then
      FService.ShowVirtualKeyboard(TFmxObject(Sender));
  end;

  if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardToolbarService, IInterface(FKService)) then
    begin
      FKService.SetHideKeyboardButtonVisibility(False);
      FKService.SetToolbarEnabled(False);
    end;
end;

Ааа, я понял, нашел ваш ответ в другом вопросе, как я понял это для iOS. Просто убрал эти строки.

В общем ваше решение работает на Edit'ах и Memo, но как быть с ComboEdit, DateEdit?

отлично что работает))  дальше можно усложнить костыль - но это ваще извращение будет))) могу описать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 минуты назад, FREEFAR сказал:

Ааа, я понял, нашел ваш ответ в другом вопросе, как я понял это для iOS. Просто убрал эти строки.

да, ссори. из проекта забирал. Это для того чтобы полосы не было с кнопкой "Done"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 1

Костыль года ))

Tdatetime.hittest = False;

на него кидаем TLAyout

Layout.align := talignlayout.contents;

Layout.hittest = True;

в onTap у Layout пишем

datetimepicker.OpenPicker;;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
3 часа назад, FREEFAR сказал:

Костыль года ))

Tdatetime.hittest = False;

на него кидаем TLAyout

Layout.align := talignlayout.contents;

Layout.hittest = True;

в onTap у Layout пишем

datetimepicker.OpenPicker;;

 

Спасибо! Работает. ☺️

Для ComboEdit тоже самое, только в OnTap: ComboEdit1.DropDown;

Изменено пользователем Вадим Шавров

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
15 минут назад, Вадим Шавров сказал:

Спасибо! Работает. ☺️

Для ComboEdit тоже самое, только в OnTap: ComboEdit1.DropDown;

ну отлично ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу