IUP Хулиганы Сепаратор. Зачем?
В документации IUP указан элемент графического интерфейса с именем Separator.
Однако он отсутствует в списке "Доступные классы", который появляется, когда вы нажимаете "Добавить ребенка / Добавить брата" в диалоговом окне " Макет" (редактор макета IUP GUI).
Мало того, что, когда вы пытаетесь включить разделитель вручную в файле LED (как SEPARATOR()
внутри VBOX()
или же HBOX()
), а затем загрузить его в диалоговом окне "Макет" и показать его (или "сопоставить"), вы получите следующее сообщение об ошибке:
IupMap не удалось.
Впоследствии отображаются только элементы графического интерфейса, предшествующие разделителю. Зачем?
Частично ответ может состоять в том, что "он показывает линию между двумя пунктами меню " (согласно документации), тогда как я пытался использовать его вне меню на холсте диалога (внутри VBOX()
). Это не может быть полной правдой, потому что я видел, как разделитель использовался вне меню в диалоге GetParam (скриншот там). И даже если бы это было так, это все равно не объясняет, почему разделитель отсутствует в доступных классах в диалоге раскладки.
2 ответа
IupSeparator предназначен только для меню. Этот список отображается для вставки нового элемента в диалог.
Разделителем в IupGetParam является IupLabel с атрибутом SEPARATOR.
В то же время я нашел функциональную замену разделителю, и он, по-видимому, имеет метку с атрибутом SEPARATOR
установлен в HORIZONTAL
/ VERTICAL
/ YES
,
Пример (светодиод):
FakeSeparatorDlg = DIALOG[TITLE = "IUP fake separator demo"](
VBOX[MARGIN = 5x5,GAP = 5](
LABEL[TITLE = "Label Text 1"](""),
LABEL[SEPARATOR = HORIZONTAL](""),
LABEL[TITLE = "Label Text 2"]("")
)
)
атрибут EXPAND = HORIZONTALFREE
будет добавлено автоматически.
демонстрация sample.c
также включает в себя необъяснимый атрибут NAME = SAMP_SEP
,
Недостатком является отсутствие видимого заголовка, но я буду просто использовать Frame вместо Label, когда мне это нужно.