Гость_DoS |
Отправлено: 30.09.2003, 22:15 |
|
Не зарегистрирован
|
Появилась необходимость впихнуть TreeView в ComboBox. да и вообще интересует техника отображения одного контрола в другом! подскажите пожалста в какую сторону копать? (доки какие-нить ссылки т.д.) |
|
Admin |
Отправлено: 01.10.2003, 11:58 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Смотря что нужно.
Если связать ComboBox с чем либо, например TreeView,
то это через AddObject():
ComboBox1->Items->AddObject("MyTreeView",(TObject*)TreeView1);
Если хотите прорисовать что-либо в ComboBox, то
смотрите события onDrawItem и onMeasureItem компонента ComboBox.
Не забудьте установить свойство Style в csOwnerDrawVariable.
Что-то типа:
CODE | //---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1DrawItem(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
// ComboBox1->Canvas->FillRect(Rect);
Rect = TreeView1->Canvas->ClipRect; // *****
ComboBox1->Canvas->CopyRect(Rect,TreeView1->Canvas,TreeView1->Canvas->ClipRect);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ComboBox1MeasureItem(TWinControl *Control,
int Index, int &Height)
{
Height = TreeView1->Height;
}
//---------------------------------------------------------------------------
|
Если нужно вообще впихнуть один контрол в другой — создайте
один в другом. Как на форме динамически:
CODE |
TTreeView* Tv = new TTreeView(Form1);
Tv->Parent = Form1;
Tv->Left = 50;
Tv->Top = 10;
Tv->Width = 300;
Tv->Height = 80;
Tv->Items->AddChild(NULL,"MyFirstNode");
|
Так что смотрите что конкретно из этого требуется.
Отредактировано Admin — 01/10/2003, 13:02
|
|
Гость_DoS |
Отправлено: 02.10.2003, 09:10 |
|
Не зарегистрирован
|
спасибо за исчерпывающий ответ! очень помогло! буду ковырять
Еще раз спасибо |
|
|