Перейти к содержанию
Fire Monkey от А до Я
  • 0

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


Вадим Шавров

Вопрос

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

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

Ссылка на комментарий

Рекомендуемые сообщения

  • 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"

Ссылка на комментарий
  • 0
3 часа назад, FREEFAR сказал:

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

Tdatetime.hittest = False;

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

Layout.align := talignlayout.contents;

Layout.hittest = True;

в onTap у Layout пишем

datetimepicker.OpenPicker;;

 

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

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

Изменено пользователем Вадим Шавров
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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

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