2015-08-14 2 views
1

Я пытаюсь создать TEdit, который будет использоваться для исследования, поэтому было бы здорово, чтобы на нем была надпись «current»/«count», как это видно из нажатие CTRL + F в Google Chrome:Как принести ярлык над редактированием управления

Похоже, что контроль TLabel всегда находится за элементом управления TEdit. enter image description here

Я также пробовал ярлык1.BringToFront (оба в режиме разработки и времени исполнения), но это не имело никакого эффекта. Есть ли способ разместить ярлык над элементом управления редактированием?

+3

Вот что может сделать элемент управления TStaticText. Но лучше нарисуйте текст непосредственно в элементе управления. И не забудьте закрепить прямоугольник ввода поля ввода сообщением «EM_SETMARGINS». – TLama

+2

Весь мой подход неправильный, на мой взгляд. Это должен быть один настраиваемый элемент управления. –

+2

'TLabel' наследует от' TGraphicControl', который не может быть показан поверх оконных элементов управления. Как и другие, вы сказали, что вам действительно лучше создать свой собственный пользовательский контроль для этого. – Craig

ответ

1

TLabel наследует от TGraphicControl которые не могут быть показаны на вершине оконного управления, независимо от того, сколько раз вы пытаетесь использовать BringToFront это просто не произойдет.

Однако, вы можете использовать элемент управления контейнера, такого как TPanel, который может быть использован, чтобы содержать ваши TEdit и TLabel управления, увидеть это изображение в качестве примера:

enter image description here

Это быстрый и грязный Кстати, это просто TPanel содержащего TEdit и TLabel, как ребенок управляет

предпочтительным способом, однако, чтобы создать свой собственный контроль, который даст вам полную Flexibil ность. Часто, пытаясь объединить несколько элементов управления VCL, чтобы появляться и функционировать, как вы хотите, обычно не идеальны, и поэтому, делая это, пользовательский способ дает вам больше свободы и возможностей.

Смежные вопросы