Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Агреггатные компоненты

272
28 октября 2004 года
vladsoft
512 / / 20.08.2000
Всем привет!
пишу агреггатный компонент на основе панеле, который в себе должен содержать мой компонент.
пишу так:
в h файле:
Код:
#ifndef iisgridH
#define iisgridH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include "MyListView.h"
//---------------------------------------------------------------------------
class PACKAGE TGrid : public TPanel
{
private:
TPanel *Pp;
TMemo *Pm;
TImage *Pi;
TMyListView *pDB;
protected:
public:
        __fastcall TGrid(TComponent* Owner);
__published:

};
#endif


В cpp файле :
Код:
__fastcall TGrid::TGrid(TComponent* Owner)
        : TPanel(Owner)
{
 // создание необходимых элементов управления
        this->Pp=new TPanel(this);
        this->Pp->Parent=this;
        this->Pp->Left=0;

        this->Pp->Color=clGray;
        this->Pp->Align=alBottom;
        this->Pp->BevelInner=bvNone;
        this->Pp->BevelOuter=bvNone;
        this->Pp->Height=20;
        this->Pp->Visible=false;
        this->Pp->Font->Color=clWhite;
        this->Pp->Alignment=taLeftJustify;
 // создадим кнопку

 this->Pi=new  TImage(this->Pp);
 this->Pi->Parent=this->Pp;
 this->Pi->Left=this->Pp->ClientRect.left+3;
 this->Pi->Top=this->Pp->ClientRect.top+3;
 RECT r;
 this->Pi->Height=15;
 this->Pi->Width=15;
 r=this->Pi->Canvas->ClipRect;
 DrawFrameControl(this->Pi->Canvas->Handle,&r,DFC_CAPTION,DFCS_CAPTIONCLOSE|DFCS_FLAT|DFCS_MONO);
// создадим мемо
this->Pm=new TMemo(this->Pp);
this->Pm->Parent=this->Pp;
this->Pm->Ctl3D=false;
this->Pm->Color=clGray;
this->Pm->Font->Color=clWhite;
this->Pm->BorderStyle=bsNone;
this->Pm->Left=this->Pi->Left+this->Pi->Width+2;
this->Pm->Top=this->Pp->Top+3;
this->Pm->Height=17;
this->Pm->Width=this->Pp->Width-this->Pm->Left;
this->Pm->ReadOnly=true;
// создадим DBListView
//this->pDB=new TMyListView(this, this->Pp,this->Pi,this->Pm);
//this->pDB->Left=0;
//this->pDB->Top=0;
//this->pDB->Parent=this;
//this->pDB->Align=alClient;
}
//---------------------------------------------------------------------------
namespace grid
{
        void __fastcall PACKAGE Register()
        {
                 TComponentClass classes[1] = {__classid(TSGrid)};
                 RegisterComponents("_S", classes, 0);
                 PTypeInfo ti= *GetPropInfo(__typeinfo(TFieldView),"FieldName")->PropType;
                 RegisterPropertyEditor(ti, __classid(TFieldView), "FieldName",__classid(TFolderStatusPropertyEditor));
        }
}

1 Вопрос почему при установке агреггатного компонента
ставиться мой компонент, который был внутри агрегатного + агрегатный сам ставиться :???:
2 вопрос почему когда на форму бросаешь агрегатный компонент, builder не помещает его на форму и говорит что : Has nat parent window :???:
Кто нить сталкивался с такой гадостью:???:
487
29 октября 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by vladsoft
Всем привет!
пишу агреггатный компонент на основе панеле, который в себе должен содержать мой компонент.
пишу так:
в h файле:
Код:
#ifndef iisgridH
#define iisgridH
//---------------------------------------------------------------------------
#include <SysUtils.hpp>
#include <Controls.hpp>
#include <Classes.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include "MyListView.h"
//---------------------------------------------------------------------------
class PACKAGE TGrid : public TPanel
{
private:
TPanel *Pp;
TMemo *Pm;
TImage *Pi;
TMyListView *pDB;
protected:
public:
        __fastcall TGrid(TComponent* Owner);
__published:

};
#endif


В cpp файле :
Код:
__fastcall TGrid::TGrid(TComponent* Owner)
        : TPanel(Owner)
{
 // создание необходимых элементов управления
        this->Pp=new TPanel(this);
        this->Pp->Parent=this;
        this->Pp->Left=0;

        this->Pp->Color=clGray;
        this->Pp->Align=alBottom;
        this->Pp->BevelInner=bvNone;
        this->Pp->BevelOuter=bvNone;
        this->Pp->Height=20;
        this->Pp->Visible=false;
        this->Pp->Font->Color=clWhite;
        this->Pp->Alignment=taLeftJustify;
 // создадим кнопку

 this->Pi=new  TImage(this->Pp);
 this->Pi->Parent=this->Pp;
 this->Pi->Left=this->Pp->ClientRect.left+3;
 this->Pi->Top=this->Pp->ClientRect.top+3;
 RECT r;
 this->Pi->Height=15;
 this->Pi->Width=15;
 r=this->Pi->Canvas->ClipRect;
 DrawFrameControl(this->Pi->Canvas->Handle,&r,DFC_CAPTION,DFCS_CAPTIONCLOSE|DFCS_FLAT|DFCS_MONO);
// создадим мемо
this->Pm=new TMemo(this->Pp);
this->Pm->Parent=this->Pp;
this->Pm->Ctl3D=false;
this->Pm->Color=clGray;
this->Pm->Font->Color=clWhite;
this->Pm->BorderStyle=bsNone;
this->Pm->Left=this->Pi->Left+this->Pi->Width+2;
this->Pm->Top=this->Pp->Top+3;
this->Pm->Height=17;
this->Pm->Width=this->Pp->Width-this->Pm->Left;
this->Pm->ReadOnly=true;
// создадим DBListView
//this->pDB=new TMyListView(this, this->Pp,this->Pi,this->Pm);
//this->pDB->Left=0;
//this->pDB->Top=0;
//this->pDB->Parent=this;
//this->pDB->Align=alClient;
}
//---------------------------------------------------------------------------
namespace grid
{
        void __fastcall PACKAGE Register()
        {
                 TComponentClass classes[1] = {__classid(TSGrid)};
                 RegisterComponents("_S", classes, 0);
                 PTypeInfo ti= *GetPropInfo(__typeinfo(TFieldView),"FieldName")->PropType;
                 RegisterPropertyEditor(ti, __classid(TFieldView), "FieldName",__classid(TFolderStatusPropertyEditor));
        }
}

1 Вопрос почему при установке агреггатного компонента
ставиться мой компонент, который был внутри агрегатного + агрегатный сам ставиться :???:
2 вопрос почему когда на форму бросаешь агрегатный компонент, builder не помещает его на форму и говорит что : Has nat parent window :???:
Кто нить сталкивался с такой гадостью:???:



Во первых - в конструктор добавь

 
Код:
Parent=Owner;
- из-за этого у тебя и возникает ошибка "has not parent window".

Во-втрорых: У тебя декларирован класс TGrid а регистрируешь почему-то класс TSGrid. Взглянуть на этот самый TSGrid можно?

P.S. И кстати - зачем тебе столько this->? Не проще-ли обращаться непосредственно по имени полей/методов?
272
29 октября 2004 года
vladsoft
512 / / 20.08.2000
Цитата:
Originally posted by ddnh_bc


Во первых - в конструктор добавь
 
Код:
Parent=Owner;
- из-за этого у тебя и возникает ошибка "has not parent window".

Во-втрорых: У тебя декларирован класс TGrid а регистрируешь почему-то класс TSGrid. Взглянуть на этот самый TSGrid можно?

P.S. И кстати - зачем тебе столько this->? Не проще-ли обращаться непосредственно по имени полей/методов?



Пришлось пока все это дело заморозить так катострафически не хватает времени!
За ответ спасибо, если что нового откапаешь пиши, буду рад! :)

246
01 ноября 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by ddnh_bc


Во первых - в конструктор добавь Parent=Owner


__fastcall TGrid::TGrid(TComponent* Owner)
: TPanel(Owner)
А это, что...

310
01 ноября 2004 года
fellow
853 / / 17.03.2003
Цитата:
Originally posted by GIZMO

__fastcall TGrid::TGrid(TComponent* Owner)
: TPanel(Owner)
А это, что...



А это, батенька, Owner, сиречь, владелец. Т.е., компонент, ответственный за ликвидацию данного компонента. Parent же, или родитель, - это всегда оконный элемент, визуально содержащий в себе данный элемент. RTFM, RTFM и ещё раз RTFM!!! :)

246
01 ноября 2004 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by fellow


А это, батенька, Owner, сиречь, владелец. Т.е., компонент, ответственный за ликвидацию данного компонента. Parent же, или родитель, - это всегда оконный элемент, визуально содержащий в себе данный элемент. RTFM, RTFM и ещё раз RTFM!!! :)


Да. Затупил, признаюсь...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог