| Автор | Сообщение |
|
|
| |
Пост N: 422
Зарегистрирован: 03.12.08
|
|
Отправлено: 15.06.26 11:12. Заголовок: клик по изображению (IMAGE .... ON CLICK () и обработка BunttonEX
Коллеги , подскажите - что делаю не так или ваш способ реализации . В кратце : имеем контрол IMAGE и поверх него есть две кнопки - "Предыдущее/Следующее изображение" Нужно сделать отработку по клику на картинке (ON CLICK) и чтоб при этом обрабатывались клики и на указанных кнопках ... Сейчас работает или одно или второе . Причём , кнопки не отрабатываются даже если нет указанных процедур в блоке ON CLICK (ACTION) , но есть просто TOOLTIP в области картинки ... Понимаю , что вся область в границах картинки воспринимается для ACTION(ON CLICK) как область картинки и наложенные по верх неё кнопки не отрабатываются своим ON CLICK . И что делать ? Ну не хочется выносить сами кнопки за пределы картинки ... 
|
 |

|
|
Ответов - 9
[только новые]
|
|
|
|
| |
Пост N: 8335
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.06.26 13:16. Заголовок: Softlog86 пишет: В ..
Softlog86 пишет: | цитата: | | В кратце : имеем контрол IMAGE и поверх него есть две кнопки - "Предыдущее/Следующее изображение" |
| 1. сделай слайдер под картинкой 2. или клик в правой части картинки вперед , в левой назад 3. спроси ИИ 4. сделай как в телеге или вайбере
|
 |

|
|
|
| постоянный участник
|
Пост N: 4890
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.06.26 14:45. Заголовок: Softlog86 пишет 1. ..
Softlog86 пишет | цитата: | | или ваш способ реализации |
| 1. Сделайте окно с картинками PANEL (пример basic\containers\Panel_2) или CHILD (без title) с верт., горизонтальной прокруткой (справа от browse), ширину посчитайте от мах кол-ва картинок. 2. Исп. TsBrowse (т.е. картинки в ячейках) справа от browse, кол-во колонок от мах кол-ва картинок в строке 3. Сделать в продолжение header browse, типа ToolBar (линейка) с кнопками
|
 |

|
|
|
| |
Пост N: 423
Зарегистрирован: 03.12.08
|
|
Отправлено: 15.06.26 15:49. Заголовок: Указанные варианты о..
Указанные варианты опробовал ... Разве что клик по левой-правой половине картинки может быть интересным Но нужно как-то пользователю ещё показать что есть такие места для клика .... Буду изобретать дальше . Инструментов много . Главное понять где-чего брать :)
|
 |

|
|
|
| |
Пост N: 8336
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.06.26 18:50. Заголовок: еще SAMPLES\BASI..
еще SAMPLES\BASIC\CONTAINERS\PAGERBOX
|
 |

|
|
|
| постоянный участник
|
Пост N: 4891
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.06.26 19:11. Заголовок: Softlog86 Попробуйт..
Softlog86 Попробуйте, как в Opere, наводите мышь (mouse hover) на картинку, делать Show кнопкам (уст. нужные коордитаты), на ней (если есть картинки еще), при mouse lover кнопки делаете Hide, тогда только 2е кнопки и нужны, по идее
|
 |

|
|
|
| |
Пост N: 8337
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.06.26 19:12. Заголовок: SergKis пишет: Попр..
SergKis пишет: 
|
 |

|
|
|
| |
Пост N: 424
Зарегистрирован: 03.12.08
|
|
Отправлено: 16.06.26 13:04. Заголовок: Идея чтоб при наведе..
Идея чтоб при наведении (Mouse hover) показывать кнопки - не сработала . Кнопки и так видны , только клик по ним не обрабатывается ... Решил зайти другим путём , благо есть ответы в примерах : Ловлю координаты мышки при клике в нужной картинке Анализирую - есть-ли на этой картинке вообще кнопки Prev/Next и их режим (ENabled) Если координаты клика мышкой попадают в прямоугольную область кнопки и она в состоянии Enabled - производим нужное действие (перелистывание картинки) Только пока не могу найти функцию , которая возвращает координаты (прямоугольник) нужного контрола (ButtonEx) по его хэндлу или названию ... Есть какие-то функции "GetRect()" , но они не верно работают ... или я не совсем понял как с ними работать ...
|
 |

|
|
|
| постоянный участник
|
Пост N: 4892
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.06.26 17:10. Заголовок: Softlog86 Клиентска..
Softlog86 Клиентская область. Если в событиях контрола (ACTION, MOUSEHOVER\GOTFOCUS, MOUSELOVER\LOSTFOCUS, ...) то: nH := This.ClientHeight, nW := This.ClientWidth Если в событиях окна, то This.<имя контрола>.ClientHeight, nW := This.<имя контрола>.ClientWidth Если через ф-ии: nW := _GetClientRect ( Handle )[ 3 ], nH := _GetClientRect ( Handle )[ 4 ] Внешний размер окна\контрола. nW := GetWindowWidth ( Handle ) nH := GetWindowHeight ( Handle )
|
 |

|
|
|
| |
Пост N: 2057
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.06.26 10:03. Заголовок: клиентская область д..
клиентская область дает относительные размеры ( ширину и высоту , а не реальные координаты на экране, первые две координаты всегда равны 0). а координаты мыши они привязаны к реальному положению на экране. с клиентской областью нужно постоянно высчитывать координаты кнопки относительно позиции окна на экране и заданной позиции кнопки в окне нет ничего проще сразу брать область кнопки в физ координатах GetWindowRect() aWrect := {0,0,0,0} nHandle := GetControlHandle("button_1", "form_1") GetwindowRect(nhandle, @aWRect ) - aWrect содегжит физические координаты кнопки, как бы не таскали окно по экрану, а пересчет надо повесить на событие ON MOVE окна чтоб координаты всегда считались автоматом
|
 |

|
|