Как скрыть границу вокруг TRadioGroup - PullRequest
9 голосов
/ 15 сентября 2011

У меня есть две радиокнопки в TRadioGroup . Вся логика того, как они должны работать, в порядке. Но у контроллера TRadioGroup есть рамка , которую я думал, что смогу удалить, используя свойство border или что-то в этом роде. Но элемент управления, похоже, не имеет какого-либо свойства, которое имеет какое-либо сходство с границей / фреймом. Как настроить контроллер так, чтобы он не включал рамку?

Ответы [ 3 ]

4 голосов
/ 01 марта 2014

Я не думаю, что вы можете спрятать границу на стандартном групповом блоке радиосвязи.Похоже, вы можете создать собственного потомка и переопределить рисование, если рисуете нормально, но этот подход может быть немного более связан с поддержкой тем.В целом, кажется, что на этом пути проделана большая работа.

Следующий наиболее очевидный подход - заменить группу радиостанций несколькими отдельными радиокнопками на контейнере, например на панели.Это сработало бы и было бы простым кодом, но могло бы стать грязным.Кажется, много работы для небольшой выгоды, и я достаточно ленив, чтобы искать другой вариант.

Существует возможность, которую вы можете использовать.Если вы поместите радиогруппу на панель, а не прямо на форму (или другой фон), вы можете сделать панель меньше по сравнению с радиогруппой.Вы хотите, чтобы панель была такой же большой, как внутренняя часть радиогруппы, но не такой большой, как граница.Затем установите в верхней и левой части группы радиостанций отрицательные числа, чтобы граница выходила за пределы родительской панели.Таким образом, граница не видна.

4 голосов
/ 16 сентября 2011

TRadioGroup не поддерживает то, что вы ищете. Поместите два компонента TRadioButton на TPanel. Тогда вы можете заставить его выглядеть так, как вы хотите.

0 голосов
/ 01 марта 2017

Я знаю, что это не лучшая практика, но у меня была похожая проблема, и я не мог все переделать.Поэтому я сделал это, чтобы просто скрыть границу (и до сих пор отлично работает).

HANDLE Region = CreateRectRgn(3, 3, RadioGroup->Width-3, RadioGroup->Height-3) ;

SetWindowRgn(RadioGroup->Handle, Region, true);
...