void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i=0;i<UnitsInSystem;i++)
{
TMemo *Memo1 =new TMemo(this);
Memo1->Parent=Form1->ScrollBox1;
..........
Memo1->Left=x;
Memo1->Top=y;
}
}
Динамическое создание компонентов на форме
1. Задача динамически создавать элементы ТМемо на форме и определенным образом их выстраивать
Код:
Все создается и отображается норамально. Во время работы программы производтится несколько таких построений, поэтому перед каждым новым необходимо удалить предыдущую группу ТМемо и построить новую, но удалить так запросто не получается т.к. указателю Мемо1 все время присваивается адрес нового компонента.
2. Пытаюсяь создать Мемо, который подгонял бы свои размеры под текст, содержащийся в нем, но так как Canvas y TMemo нет приходиться размеры текста определять по какому нибуть другому Канвасу или Битмапу
Код:
AnsiString text;
Memo1->Lines->Add(text);
Memo1->Font->Name="Arial";
Memo1->Font->Size=7;
Memo1->Alignment=taCenter;
Memo1->Color=clMoneyGreen;
Form1->Canvas->Font->Name="Arial";
Form1->Canvas->Font->Size=7;
w=Form1->Canvas->TextWidth(text)+10;
h=Form1->Canvas->TextHeight(text)+5;
Memo1->Width= w;
Memo1->Height=h;
Memo1->Lines->Add(text);
Memo1->Font->Name="Arial";
Memo1->Font->Size=7;
Memo1->Alignment=taCenter;
Memo1->Color=clMoneyGreen;
Form1->Canvas->Font->Name="Arial";
Form1->Canvas->Font->Size=7;
w=Form1->Canvas->TextWidth(text)+10;
h=Form1->Canvas->TextHeight(text)+5;
Memo1->Width= w;
Memo1->Height=h;
По второму вопросу: ищите в MSDN, как определить размеры строки при рисвании её в контексте устройства, и что именно получается при таком определении.
for(int i = 0; i < CARD_POST->ComponentCount-1; i++)
if(CARD_POST->Components->ClassNameIs("TMemo"))
{
TMemo * rr = (TMemo *)CARD_POST->Components;
delete rr;
}
Цитата:
Originally posted by SEDEGOFF
Удалять можно еще так
Удалять можно еще так
Если не трудно объясните что такое CARD_POST?
CARD_POST - это форма