реклама на сайте
подробности

 
 
> как создать массив label в С++ builder
123kill12
сообщение May 28 2011, 18:13
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 12-05-10
Пользователь №: 57 217



нужно расположить на форме(Form2) 100 label. я утрирую задачу чтоб не описывать. как создать массив label'ов. все что нашел в инете либо не работает либо выдает ошибки.
причем label нужно создавать по верх всех других элементов.

нашел наконец рабочий код.
TLabel* l=new TLabel(Form1);
l->Caption="label";
l->Parent=Form2;
l->Name="Label" + IntToStr(i);
l->Top=10;
l->Left=i*40;

но они появляются при создании и сразу уходят на задний план.
l->BringToFront(); не помогает.

с расположением поверх всех решил проблему. но удаляться не хотят(((
делаю так.
delete((TLabel*)FindComponent("Label"));
не работает((

скорее всего это связано с тем что я переприсвоил родителя для того чтоб он был по верх других.
for(int i=0; i<HH_count;i++)
{
TLabel* l=new TLabel(Form1);
l->Caption="T:="+FloatToStr(i);
l->Parent=Chart1;
l->Name="Label" + IntToStr(i);
l->Transparent=true;
l->Font->Size=10;
l->Font->Color=clGreen;
l->Top=10;
l->Left=40*i;
l->BringToFront();
}

Сообщение отредактировал 123kill12 - May 28 2011, 18:17
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение May 28 2011, 20:00
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Может быть вам лучше сделать так?

TLabel* pl[HH_count]; // заводим массив pl для хранения указателей

for(int i=0; i<HH_count;i++)
{
TLabel* l= pl[i] = new TLabel(Form1); // вместе с аллокацией запоминаем указатель в массиве pl
l->Caption="T:="+FloatToStr(i);
l->Parent=Chart1;
l->Name="Label" + IntToStr(i);
l->Transparent=true;
l->Font->Size=10;
l->Font->Color=clGreen;
l->Top=10;
l->Left=40*i;
l->BringToFront();
}

Когда не нужно, удаляем:

for(int i=0; i<HH_count;i++) delete pl[i];

P.S. Судя по тому, что родитель лайблов у вас Chart1, то ваша задача, видимо, сводится к созданию надписей на графике. Если это так, то есть и альтернативная возможность - добавить на тот же график лишнюю серию (Series), состоящую из отдельных точек. Заложить в эту серию точки с нужными вам координатами и именами, а в свойствах серии указать, чтобы имя каждой точки прописывалось на графике. Сами точки можно сделать невидимыми или под цвет фона графика, тогда будут видны только надписи.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 20:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016