Bohdan Опубликовано 24 июля, 2018 Опубликовано 24 июля, 2018 (изменено) Всем Привет!Платформа ios Delphi 10.2.2, хочу при нажатии на label показывать edit (для редактирования label.) Столкнулся с проблемой: Как отследить Tap за пределами Edit чтобы его скрыть, не могу понять как это сделать. Изменено 24 июля, 2018 пользователем Bohdan Цитата
0 POV Опубликовано 24 июля, 2018 Опубликовано 24 июля, 2018 а разве onLeave не сработает при этом? Цитата
0 Bohdan Опубликовано 24 июля, 2018 Автор Опубликовано 24 июля, 2018 Если вы о OnMouseLive на TEdit, то он срабатывает если Tap начался на Edit и вышел за его пределы. Цитата
0 Bohdan Опубликовано 24 июля, 2018 Автор Опубликовано 24 июля, 2018 6 минут назад, POV сказал: я описАлся - я имел в виду OnExit OnExit срабатывает только если тот на кого "тапнули" может принять фокус (Edit, Memo), а ToolBar или SpeedButton не принимают фокус и OnExit не возникает. Цитата
0 POV Опубликовано 24 июля, 2018 Опубликовано 24 июля, 2018 Ну так и чего мудрить? "За пределами" - не сотня же компонентов. По нажатию мышки прочих компонентов и скрывай едит. Цитата
1 sinuke Опубликовано 24 июля, 2018 Опубликовано 24 июля, 2018 Edit положить на Layout. Настройки у Layout такие, чтобы он занимал весь экран поверх всех компонентов. В Layout.OnTap скрывать Layout Ingalime 1 Цитата
0 Bohdan Опубликовано 28 августа, 2018 Автор Опубликовано 28 августа, 2018 (изменено) Решение следующее: Layout который перекрывает всю форму на ней TEdit который позиционируется на то место где он нужен, на Layout обработчик Onclick/OnTap который скрывает Layout и передает результат редактирования назад на форму, Изменено 30 августа, 2018 пользователем Bohdan Цитата
1 dnekrasov Опубликовано 28 августа, 2018 Опубликовано 28 августа, 2018 А почему бы просто не сделать стиль для TEdit, который в неактивном виде выглядит как TLabel? krapotkin и Barbanel 2 Цитата
0 Barbanel Опубликовано 29 августа, 2018 Опубликовано 29 августа, 2018 19 часов назад, dnekrasov сказал: А почему бы просто не сделать стиль для TEdit, который в неактивном виде выглядит как TLabel? Вот это шикарно! Все гениальное просто))) Цитата
0 Bohdan Опубликовано 29 августа, 2018 Автор Опубликовано 29 августа, 2018 В 28.08.2018 в 15:21, dnekrasov сказал: А почему бы просто не сделать стиль для TEdit, который в неактивном виде выглядит как TLabel? Допусти сделали. Edit выглядит как Label, делаем Tap на него и он переходит в режим редактирования (выглядит как обычный Edit) как потом его перевести обратно в вид Label при Tap на ToolBar на котором он лежит? Цитата
0 Barbanel Опубликовано 30 августа, 2018 Опубликовано 30 августа, 2018 18 часов назад, Bohdan сказал: Допусти сделали. Edit выглядит как Label, делаем Tap на него и он переходит в режим редактирования (выглядит как обычный Edit) как потом его перевести обратно в вид Label при Tap на ToolBar на котором он лежит? Установить фокус на другой компонент. Edit потеряет фокус и будет выглядеть как текст. Пример такого стиля для Edit в аттаче. Test_LabeledEdit.rar Цитата
0 Bohdan Опубликовано 30 августа, 2018 Автор Опубликовано 30 августа, 2018 1 час назад, Barbanel сказал: Установить фокус на другой компонент. Edit потеряет фокус и будет выглядеть как текст. Пример такого стиля для Edit в аттаче. Test_LabeledEdit.rar Спасибо за пример. Если тап сделан над ToolBar который не принимает фокус или на ListBox на место где нет ListBoxItem фокус не переходит с Edit. И Edit будет в режиме редактирования пока не тапнут на то что может принять фокус. Цитата
0 Barbanel Опубликовано 30 августа, 2018 Опубликовано 30 августа, 2018 Я честно не знаю как принудительно убрать фокус у контрола. Может есть такой метод, я не могу в данный момент проверить. Костыльное решение: создать дополнительный контрол (например кнопку без обработчика), поместить его за пределы формы, по клику на нужные контролы (листбокс или тулбар) - устанавливать фокус на этот дополнительный контрол. PS смутно припоминаю что вроде как была процедура KillFocus, проверьте. Цитата
0 Bohdan Опубликовано 30 августа, 2018 Автор Опубликовано 30 августа, 2018 15 минут назад, Barbanel сказал: Я честно не знаю как принудительно убрать фокус у контрола. Может есть такой метод, я не могу в данный момент проверить. Костыльное решение: создать дополнительный контрол (например кнопку без обработчика), поместить его за пределы формы, по клику на нужные контролы (листбокс или тулбар) - устанавливать фокус на этот дополнительный контрол. PS смутно припоминаю что вроде как была процедура KillFocus, проверьте. Главный вопрос как отловить клик на другой компонет который не принимает фокус и сделать "KillFocous". Вот ровно для этого нужен Layout на котором лежит Edit который перекрывает всю форму и ловит клик за пределами Edit и переводит все обратно в режим просмотра. Цитата
0 Tumaso Опубликовано 30 августа, 2018 Опубликовано 30 августа, 2018 34 минуты назад, Barbanel сказал: Я честно не знаю как принудительно убрать фокус у контрола. Может есть такой метод, я не могу в данный момент проверить. Костыльное решение: создать дополнительный контрол (например кнопку без обработчика), поместить его за пределы формы, по клику на нужные контролы (листбокс или тулбар) - устанавливать фокус на этот дополнительный контрол. PS смутно припоминаю что вроде как была процедура KillFocus, проверьте. Я в токио использую TEdit.ResetFocus - фокус с edit убирается, событие OnExit срабатывает Barbanel 1 Цитата
0 Bohdan Опубликовано 30 августа, 2018 Автор Опубликовано 30 августа, 2018 (изменено) 7 минут назад, Tumaso сказал: Я в токио использую TEdit.ResetFocus - фокус с edit убирается, событие OnExit срабатывает В ios если тап за пределами Edit считается что редактирование завершено. Обрабатывать все OnClick(OnTap) по всем компонентам которые не принимают фокус на форме и там дергать TEdit.ResetFocus не вариант. Как определить что нужно вызвать TEdit.ResetFocus? Изменено 30 августа, 2018 пользователем Bohdan Цитата
0 Barbanel Опубликовано 30 августа, 2018 Опубликовано 30 августа, 2018 Если я не ошибаюсь, то при KeyPreview=True у формы, с которой вы в данный момент работаете, вы можете в обработчиках формы отлавливать клики и перемещения мыши. Проверьте. Цитата
0 Bohdan Опубликовано 30 августа, 2018 Автор Опубликовано 30 августа, 2018 2 минуты назад, Barbanel сказал: Если я не ошибаюсь, то при KeyPreview=True у формы, с которой вы в данный момент работаете, вы можете в обработчиках формы отлавливать клики и перемещения мыши. Проверьте. KeyPreview только для VCL, разработка идет на FMX Цитата
0 krapotkin Опубликовано 30 августа, 2018 Опубликовано 30 августа, 2018 если фокус придет в любой другой компонент, то у этого и так сработает событие так что остается только обработать тапы в Layout или во что там у вас вставлено все учитывая небольшое кол-во элементов на экранчиках, это не так страшно Цитата
0 Tumaso Опубликовано 30 августа, 2018 Опубликовано 30 августа, 2018 1 час назад, Bohdan сказал: В ios если тап за пределами Edit считается что редактирование завершено. Обрабатывать все OnClick(OnTap) по всем компонентам которые не принимают фокус на форме и там дергать TEdit.ResetFocus не вариант. Как определить что нужно вызвать TEdit.ResetFocus? А что мешает использовать единый обработчик OnTap / OnClick для всех компонентов, которые не принимают фокус на форме? Цитата
0 Bohdan Опубликовано 30 августа, 2018 Автор Опубликовано 30 августа, 2018 1 час назад, krapotkin сказал: если фокус придет в любой другой компонент, то у этого и так сработает событие так что остается только обработать тапы в Layout или во что там у вас вставлено все учитывая небольшое кол-во элементов на экранчиках, это не так страшно Посмотри логику работы на IOS если элемент в режиме редактирования. то тап за редактируемым элементом выводит его из режима редактирования, и не активирует другой элемент. 1 час назад, Tumaso сказал: А что мешает использовать единый обработчик OnTap / OnClick для всех компонентов, которые не принимают фокус на форме? Коллеги как вы потом буде сопровождать ваше решение (добавить интерфейсные элементы, поменять на другие), нужно будет всегда помнить о добавлении обработчика клик/тап. По поводу количества компонентов подумайте о сложном приложении которое рассчитано на iPad 9 / Pad pro 12", возможно для телефонов ваше предложение годится. Цитата
0 Tumaso Опубликовано 30 августа, 2018 Опубликовано 30 августа, 2018 В 24.07.2018 в 16:58, Bohdan сказал: Столкнулся с проблемой: Как отследить Tap за пределами Edit чтобы его скрыть, не могу понять как это сделать. Уважаемый, вы видимо забыли свой изначальный вопрос? Ответ вам дан. Дальше все в ваших руках)) Цитата
0 Bohdan Опубликовано 30 августа, 2018 Автор Опубликовано 30 августа, 2018 (изменено) 18 минут назад, Tumaso сказал: Уважаемый, вы видимо забыли свой изначальный вопрос? Ответ вам дан. Дальше все в ваших руках)) Согласен, вопрос был как отследить Тар за пределами Edit, я сделал через Layout все работает ожидаемо и как надо. После этого пришли коллеги и предложили вариант со стилями которое вылилось в обработать все клики/тапы на контролах которые не принимают фокус для отслеживания потери фокуса Edit. Мне кажется это решение не оптимальным, я начал обсуждения этого варианта, вдруг будет решение проще чем Layout с Edit и одним обработчиком OnClick/OтTap на Layout. Не понимаю где я вышел за рамки своего вопроса, Изменено 30 августа, 2018 пользователем Bohdan IVGSoft 1 Цитата
Вопрос
Bohdan
Всем Привет!
Изменено пользователем BohdanПлатформа ios Delphi 10.2.2, хочу при нажатии на label показывать edit (для редактирования label.) Столкнулся с проблемой:
Как отследить Tap за пределами Edit чтобы его скрыть, не могу понять как это сделать.
23 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.