PageControl как отследить клик на заголовке страницы.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

PageControl как отследить клик на заголовке страницы.

Сообщение wofs » 08.09.2017 19:17:41

Добрый день!
В силу нелюбви мной отдельных окон в своей утилите интерфейс организовал табами, через PageControl.
Но так же хотелось бы иметь возможность быстро и просто эти самые табы открепить в отдельные окна (как в браузере, если потянуть за вкладку).
С откреплением в отдельное окно и возвратом разобрался, но вот с простотой действия проблемы.

Подскажите, как отследить клик и перемещение мыши на заголовке страницы PageControl? То есть - как узнать, что пользователь схватил и потащил заголовок?

Изображение
Последний раз редактировалось wofs 08.09.2017 23:51:19, всего редактировалось 3 раз(а).
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: PageControl как отследить клик на заголовке страницы.

Сообщение pupsik » 08.09.2017 19:31:26

хм... а зачем PageControl? Можно взять или схожее. Ведь в браузере не используется PageControl :wink:
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: PageControl как отследить клик на заголовке страницы.

Сообщение wofs » 08.09.2017 19:34:26

pupsik писал(а):хм... а зачем PageControl?

Хотел по максимому использовать стандартные компоненты.
Утилиту пишу для себя и, через лет 10-15, когда захочется чего-нить добавить не хочется искать и устанавливать сторонние компоненты.
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: PageControl как отследить клик на заголовке страницы.

Сообщение WAYFARER » 08.09.2017 19:50:40

Обрабатывай onMouseMove, он срабатывает на заголовке таба. Проверяй, зажата ли кнопка мыши и если зажата то выполняй нужные действия.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 518
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: PageControl как отследить клик на заголовке страницы.

Сообщение wofs » 08.09.2017 20:01:42

WAYFARER писал(а):брабатывай onMouseMove, он срабатывает на заголовке таба.

Ага.... Спасибо! Будут вопросы - вернусь :)
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: PageControl как отследить клик на заголовке страницы.

Сообщение Лекс Айрин » 08.09.2017 20:02:53

wofs, я вообще подобный интерфейс реализовал кнопками. Правда, без вытягивания наружу... но мысль интересная. А почему вытягивать вкладку за заголовок? Если вытягивать текущую вкладку за ее рабочу. область, то можно использовать обычный Drag'n'Drop.

pupsik, если использовать сторонний, не идущий в стандартной поставке компонент, то придется его прикладывать к исходникам... здесь есть на форуме пример, когда компонент используемый мной не встал у человека.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: PageControl как отследить клик на заголовке страницы.

Сообщение wofs » 08.09.2017 20:12:09

Лекс Айрин писал(а):wofs, я вообще подобный интерфейс реализовал кнопками.

Кнопками это я разобрался :)
Лекс Айрин писал(а):А почему вытягивать вкладку за заголовок?

Ну... как то логичнее. Хочешь вкладку в сторону убрать - взял, потянул и вуаля - в отдельном окне.
wofs писал(а):Ага.... Спасибо! Будут вопросы - вернусь :)

Кординаты я получил - могу определить, что кликнули и тянем, а что тянем то?
Не смог сообразить - как узнать над каким заголовком находится мышь?

Добавлено спустя 29 минут 9 секунд:
Собственно все равно кликаем же, значит просто смотрим индекс активного таба...
Код: Выделить всё
PageControl1.TabIndex
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: PageControl как отследить клик на заголовке страницы.

Сообщение pupsik » 08.09.2017 21:26:28

Лекс Айрин распространять с сорцами - не существенная проблема, а то что у человека не установился компонент - бывает всякое.

wofs TExtendedNotebook не смотрели? Из LazControls в компонентах лазаря. Может велики и найс... но...

п.с.
Хотя: если уж клеить похожее на поведение браузера то своё писать будете, или основываться на том что выше кинул ссыль(или схожем).
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: PageControl как отследить клик на заголовке страницы.

Сообщение wofs » 08.09.2017 21:56:44

pupsik писал(а):wofs TExtendedNotebook не смотрели?

Не смотрел - пока устраивает PageControl. Но гляну.
Итак вот что получилось, не без шероховатостей, но работает.
https://yadi.sk/d/VawwN9MG3Mj94a

А теперь вопрос - как продолжить "тащить" уже новое окно?
То есть взяли, потащили - оторвали и продолжаем тащить? Подскажите решение, пожалуйста. Желательно кроссплатформенное.

Добавлено спустя 3 минуты 13 секунд:
И как мне свернуть конструкцию условий?
Код: Выделить всё
if ((X<mX-mXYdelta) or (X>mX+mXYdelta) or (Y<mY-mXYdelta) or (Y>mY+mXYdelta)) then

Выглядит ужасно :(

Добавлено спустя 1 минуту 42 секунды:
pupsik писал(а):если уж клеить похожее на поведение браузера то своё писать будете

Да мне не то, чтоб поведение браузера - хочется комфортной работы в утилитке.

Добавлено спустя 2 часа 23 минуты 56 секунд:
Обнаружил странное поведение решения под Mac OS X - окно не встраивается... Буду разбираться...
И вопрос про то как продолжить тащить форму после открепления актуален...

Добавлено спустя 5 часов 49 минут 41 секунду:
Решил проблему в маке.
Продолжение здесь:
viewtopic.php?f=5&t=25398
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: PageControl как отследить клик на заголовке страницы.

Сообщение Лекс Айрин » 09.09.2017 10:01:29

wofs писал(а):Ну... как то логичнее. Хочешь вкладку в сторону убрать - взял, потянул и вуаля - в отдельном окне.

Все зависит от оси. В никсах проще таскать за само окно, что, кстати, тоже легко реализуется.
wofs писал(а):И как мне свернуть конструкцию условий?

либо макросом (не уверен), либо функцией.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: PageControl как отследить клик на заголовке страницы.

Сообщение wofs » 09.09.2017 10:09:18

Лекс Айрин писал(а):Все зависит от оси. В никсах проще таскать за само окно, что, кстати, тоже легко реализуется.

Принял на заметку, спасибо!
Лекс Айрин
Не подскажете, как реализовать задуманое?
viewtopic.php?f=5&t=25398
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: PageControl как отследить клик на заголовке страницы.

Сообщение zub » 09.09.2017 11:30:53

IndexOfPageAt
раньше он вроде звался
TabIndexAtClientPos
но в транке активно чистят всё deprecated, такчто первый вариант предпочтительнее
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

Re: PageControl как отследить клик на заголовке страницы.

Сообщение wofs » 09.09.2017 12:58:04

zub писал(а):IndexOfPageAt

Код: Выделить всё
IndexOfTabAt

Это мы уже получили просто через индекс активной вкладки - все одно кликаем на нее. Но за вариант спасибо - есть задумка, где он пригодиться.
Аватара пользователя
wofs
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

Рейтинг@Mail.ru