Страница 1 из 1
Popup - продолжить изменение
Добавлено: 01 Июль 2018, 14:56
gopstop2007
Через popup вывожу список с чекетами, например как на рис.,
Нужно, чтобы при открытии и выборе чекета сделать множественный выбор без закрытия popup-a.
Popup - продолжить изменение
Добавлено: 01 Июль 2018, 15:41
Дед Пахом
По-моему, это невозможно.
Popup - продолжить изменение
Добавлено: 01 Июль 2018, 16:47
Admin
Скорее всего, возможно только в случае ручного рисования popup через API
Popup - продолжить изменение
Добавлено: 01 Июль 2018, 17:21
Губин Игорь
открыть снова?
Popup - продолжить изменение
Добавлено: 01 Июль 2018, 17:34
gopstop2007
так и делаю, может есть другое решение?
Popup - продолжить изменение
Добавлено: 01 Июль 2018, 17:58
Губин Игорь
gopstop2007 писал(а): ↑01 Июль 2018, 17:34так и делаю, может есть другое решение?
Стандартными для Клариона, если верить документации - нет. Кроме выпадения меню, всё остальное ведёт к закрытию и обработке.
Надо учитывать, что PopUp возвращает только
одно значение
Popup - продолжить изменение
Добавлено: 01 Июль 2018, 21:19
kreator
ИМХО, при использовании попап в таком виде страдает юзабилити. Окно настроек должно иметь кнопки ОК и неОК. Поэтому я бы заменил бы обычным окном. Ещё вариант как сделано в IBExpert'е. Есть вызов подобного попап меню с несколькими чекам, срабатывает как положено, меню закрывается при однократном выборе. Но последним пунктом в меню, ниже все чеков, является "Customize", при нажатии на который вызывается обычное окно настроек с этими же самыми чеками. Правда там единственная кнопка "Close". Эксперт написан на Дельфи. Наверно нет такого АПИ, чтобы сделать множественный выбор, раз Дельфи не может. Может Дельфи и не показатель.
Popup - продолжить изменение
Добавлено: 02 Июль 2018, 8:09
Игорь Столяров
Ну, как говориться, если нет счастья в жизни - то надо его хотя бы иногда имитировать …
Нет никаких проблем нарисовать окно без заголовка и рамки, выставить его координаты и размер при открытии.
В окне нарисовать OPTION BOX / BUTTON (в т.ч. и динамически), обработать пукты с нужным функционалом, в т.ч. и множественный выбор.
Получится даже намного красивее, чем стандартный POPUP, оформительские возможности которого застряли в интерфейсе Win3.1
Popup - продолжить изменение
Добавлено: 02 Июль 2018, 8:34
Admin
Андрей Попов в свое время делал полностью кастомную отрисовку popup через API.
Было помнится в CFC_Library. Можно там покопаться.
Popup - продолжить изменение
Добавлено: 02 Июль 2018, 12:00
gopstop2007
Admin писал(а): ↑02 Июль 2018, 8:34
Андрей Попов в свое время делал полностью кастомную отрисовку popup через API.
Было помнится в CFC_Library. Можно там покопаться.
Интересно, посмотрю.
Можно было бы сделать в PopUp Multiselect = true (false - по умолчанию), но видать не сильно всем нужно
Пока обхожусь таким способом, правда моргает popup, примерно так:
Код: Выделить всё
MyRoutine ROUTINE
l_popupcycle = 0
IF NOT SET:PopupFontsSize THEN SET:PopupFontsSize = 10 END
pstr" = PROP:FontSize &'('& SET:PopupFontsSize * 1.2 &'),'& PROP:FontCharSet &'('&CHARSET:CYRILLIC
PopupRefers.Init()
PopupRefers.AddItem('['& PROP:Icon & CHOOSE(l_Check=1,'(check.ico),','(Uncheck.ico),')& CLIP(pstr") &')]Check/Uncheck','CheckUncheck')
IF GetWindowRect(?MyButton{Prop:Handle},address(loc:Rect)) THEN PopSelectedItem=PopupRefers.Ask(loc:Rect.rLeft,loc:Rect.rBottom) END
CASE PopSelectedItem !проверка выбора пункта меню
OF 'CheckUncheck
l_Check = 1 - l_Check
DO MyCode
l_popupcycle = 1
END
PopupRefers.Kill
IF l_popupcycle THEN DO MyRoutine END
Спасибо всем.