Помогите с PageControl
Или это нереально, так как Image создаётся внутри функции и после её выполнения к нему уже не обратиться?
void TForm1::newTabImage(String titl,int index){
TTabSheet *TabSheet = new TTabSheet(PageControl1);
TabSheet->PageControl = PageControl1;
TabSheet->Caption = titl;
PageControl1->ActivePageIndex=index;
TImage *Img=new TImage(PageControl1);
Img->Align=alCustom;
Img->Parent=PageControl1->Pages[index];
Img->Align=alClient;
Img->Canvas->MoveTo(100,100);
Img->Canvas->LineTo(200,200);
this->index++;
}
Это невозможно, область видимости Image ограничена данной функцией (дело не в том, что он создается в функции, а в том, что он объявлен в функции). Если хотите получать к нему доступ из других функций - выносите объявление в форму (в класс), но тогда надо строго контролировать доступ к нему (чтобы не получать ошибки работы с памятью).
Цитата: MaitreDesir
Это невозможно, область видимости Image ограничена данной функцией (дело не в том, что он создается в функции, а в том, что он объявлен в функции).
Все дело в том, что товарищ работает с VCL и инструкция
Код:
TImage *Img=new TImage(PageControl1);
помещает указатель на вновь созданный имадж в PageControl1->Components[]
Цитата: MaitreDesir
Если хотите получать к нему доступ из других функций ...
воспользуйтесь функцией PageControl1->FindComponent("Имя имаджа");
Единственно приэтом нужно давать осмысленные имена имаджам при создании, но это я думаю не сложно.
а можно еще складывать указатели в контейнер, тогда они не потеряются
Цитата: GIZMO
Все дело в том, что товарищ работает с VCL и инструкция
Код:
TImage *Img=new TImage(PageControl1);
Поспешил, не заметил, извиняюсь.
Спасибо огромное !!!