#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
Агреггатные компоненты
пишу агреггатный компонент на основе панеле, который в себе должен содержать мой компонент.
пишу так:
в h файле:
Код:
В 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));
}
}
: 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 :???:
Кто нить сталкивался с такой гадостью:???:
Цитата:
Originally posted by vladsoft
Всем привет!
пишу агреггатный компонент на основе панеле, который в себе должен содержать мой компонент.
пишу так:
в h файле:
В cpp файле :
1 Вопрос почему при установке агреггатного компонента
ставиться мой компонент, который был внутри агрегатного + агрегатный сам ставиться :???:
2 вопрос почему когда на форму бросаешь агрегатный компонент, builder не помещает его на форму и говорит что : Has nat parent window :???:
Кто нить сталкивался с такой гадостью:???:
Всем привет!
пишу агреггатный компонент на основе панеле, который в себе должен содержать мой компонент.
пишу так:
в 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
#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));
}
}
: 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;
Во-втрорых: У тебя декларирован класс TGrid а регистрируешь почему-то класс TSGrid. Взглянуть на этот самый TSGrid можно?
P.S. И кстати - зачем тебе столько this->? Не проще-ли обращаться непосредственно по имени полей/методов?
Цитата:
Originally posted by ddnh_bc
Во первых - в конструктор добавь
- из-за этого у тебя и возникает ошибка "has not parent window".
Во-втрорых: У тебя декларирован класс TGrid а регистрируешь почему-то класс TSGrid. Взглянуть на этот самый TSGrid можно?
P.S. И кстати - зачем тебе столько this->? Не проще-ли обращаться непосредственно по имени полей/методов?
Во первых - в конструктор добавь
Код:
Parent=Owner;
Во-втрорых: У тебя декларирован класс TGrid а регистрируешь почему-то класс TSGrid. Взглянуть на этот самый TSGrid можно?
P.S. И кстати - зачем тебе столько this->? Не проще-ли обращаться непосредственно по имени полей/методов?
Пришлось пока все это дело заморозить так катострафически не хватает времени!
За ответ спасибо, если что нового откапаешь пиши, буду рад! :)
Цитата:
Originally posted by ddnh_bc
Во первых - в конструктор добавь Parent=Owner
Во первых - в конструктор добавь Parent=Owner
__fastcall TGrid::TGrid(TComponent* Owner)
: TPanel(Owner)
А это, что...
Цитата:
Originally posted by GIZMO
__fastcall TGrid::TGrid(TComponent* Owner)
: TPanel(Owner)
А это, что...
__fastcall TGrid::TGrid(TComponent* Owner)
: TPanel(Owner)
А это, что...
А это, батенька, Owner, сиречь, владелец. Т.е., компонент, ответственный за ликвидацию данного компонента. Parent же, или родитель, - это всегда оконный элемент, визуально содержащий в себе данный элемент. RTFM, RTFM и ещё раз RTFM!!! :)
Цитата:
Originally posted by fellow
А это, батенька, Owner, сиречь, владелец. Т.е., компонент, ответственный за ликвидацию данного компонента. Parent же, или родитель, - это всегда оконный элемент, визуально содержащий в себе данный элемент. RTFM, RTFM и ещё раз RTFM!!! :)
А это, батенька, Owner, сиречь, владелец. Т.е., компонент, ответственный за ликвидацию данного компонента. Parent же, или родитель, - это всегда оконный элемент, визуально содержащий в себе данный элемент. RTFM, RTFM и ещё раз RTFM!!! :)
Да. Затупил, признаюсь...