У меня есть два переключателя в группе TRAdioGroup. Вся логика того, как они должны работать, в порядке. Но вокруг контроллера TRAdioGroup есть frame, который, как я думал, можно будет удалить с помощью свойства border или чего-то подобного. Но элемент управления, похоже, не имеет какого-либо свойства, похожего на рамку/рамку. Как настроить контроллер так, чтобы он не включал фрейм?
Как скрыть границу вокруг TRadioGroup
Ответы (3)
TRadioGroup
не поддерживает то, что вы ищете. Вместо этого поместите два компонента TRadioButton
на TPanel
. Тогда вы можете сделать так, как вы хотите.
Я не думаю, что вы можете скрыть рамку на стандартном радиогрупповом поле. Похоже, вы можете создать собственного потомка и переопределить рисование, если рисуете нормально, но этот подход может быть немного более связан с поддержкой темы. В целом, похоже, предстоит много работы, чтобы пойти по этому пути.
Следующий наиболее очевидный подход — заменить группу переключателей рядом отдельных переключателей на контейнере, таком как панель. Это будет работать, и это будет простой код, но он может запутаться. Кажется, много работы для малой выгоды, и я достаточно ленив, чтобы искать другой вариант.
Есть кладж, который вы можете использовать. Если вы поместите группу переключателей на панель, а не прямо на форму (или другой фон), вы можете сделать панель меньше по размеру по сравнению с группой переключателей. Вы хотите, чтобы панель была такой же большой, как внутренняя часть радиогруппы, но не такой большой, как граница. Затем установите верхнюю и левую часть группы переключателей на отрицательные числа, чтобы граница выходила за пределы родительской панели. Граница так не видна.
Я знаю, что это не лучшая практика, но у меня была похожая проблема, и я не мог все перепроектировать. Поэтому я сделал это, чтобы просто скрыть границу (и пока отлично работает).
HANDLE Region = CreateRectRgn(3, 3, RadioGroup->Width-3, RadioGroup->Height-3) ;
SetWindowRgn(RadioGroup->Handle, Region, true);