Wasabi |
Отправлено: 19.08.2004, 09:31 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
Мне надо при загрузке формы перебрать все компоненты и некоторым поменять свойства.
Написал функцию которая перебирает TComponent -ы , но оказалось не устроило время ее исполнения.
Не могу понять как надо бегать по TControl-ам, видно только один "слой" лежищий на форме. А например до батона лежащего на панели, добраться не получается. Мож кто подкинет пример кода?
Спасиб |
|
olegenty |
Отправлено: 19.08.2004, 10:30 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
вот так:
|
|
Wasabi |
Отправлено: 19.08.2004, 10:36 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 23
|
QUOTE (olegenty @ 19/08/2004, 11:32) | вот так: |
Не смог открыть файл, пишет что поврежденный архив или многотомный.
Но зато смог вроде сам разобраться, вот так:
CODE |
class TTempControl : public TWinControl
{
};
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TControl *ChildControl;
TClass ClassRef;
for (int I = this->ControlCount-1; I >= 0; I--)
{
ChildControl=this->Controls[I];
...
...
TTempControl *ctrl = (TTempControl*) ChildControl;
if(ctrl->ControlCount>0)
{
ShowMessage(ChildControl->Name);
TTempControl *ctrlTemp = (TTempControl*) ChildControl;
Form1->SearchControl(ctrlTemp);
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SearchControl(TWinControl *ctrl)
{
TWinControl *ChildControl;
for (int I = ctrl->ControlCount-1; I >= 0; I--)
{
TTempControl *ctrlTemp = (TTempControl*) ctrl->Controls[I];
ChildControl=ctrlTemp;
if(ChildControl->ControlCount>0)
ShowMessage("Child "+ChildControl->Name);
Form1->SearchControl(ChildControl);
}
} |
вроде работает. |
|
olegenty |
Отправлено: 19.08.2004, 10:54 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
только всё как-то грустно: много лишнего кода...
вот что было в примере:
CODE |
void __fastcall TForm1::ListControls(TWinControl *p)
{
if (!p) return;
for (int i = 0; i < p->ControlCount; i++)
{
me->Lines->Add(AnsiString(p->Controls[i]->ClassName()) + " — " + p->Controls[i]->Name);
ListControls(dynamic_cast<TWinControl*>(p->Controls[i]));
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ListControls(this);
}
|
и не париться
|
|