DBCtrlGrid中多行显示的问题
laisf 2004-11-22 11:49:17 在使用DBCtrlGrid时发现,如果是通过拖拉控件的创建方式,运行时DBCtrlGrid可以同时显示多条记录。
但如果是动态创建该控件,一次却只能看到一条记录。有没有办法解决动态创建时也能同时显示多条记录?(附代码)
//头文件:Unit1.h
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
private: // User declarations
void __fastcall Button1Click(TObject *Sender);
TClientDataSet *ClientDataSet1;
TDataSource *DataSource1;
TDBGrid *DBGrid1;
TButton *Button1;
TDBCtrlGrid *DBCtrlGrid1;
TDBEdit *DBEdit1,*DBEdit2;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
//CPP文件:Unit1.cpp
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
ClientDataSet1 = new TClientDataSet(NULL);
TFieldDefs *pDefs = ClientDataSet1->FieldDefs;
TFieldDef *pDef = pDefs->AddFieldDef();
pDef->DataType = ftString;
pDef->Name = "id";
pDef = pDefs->AddFieldDef();
pDef->DataType = ftString;
pDef->Size = 10;
pDef->Name = "name";
DataSource1 = new TDataSource(NULL);
DataSource1->DataSet = ClientDataSet1;
DBGrid1 = new TDBGrid(this);
DBGrid1->Parent = this;
DBGrid1->Left = 100;
DBGrid1->Top = 200;
DBGrid1->DataSource = DataSource1;
Button1 = new TButton(this);
Button1->Parent = this;
Button1->Left = 300;
Button1->Top = 350;
Button1->Caption = "test";
Button1->OnClick = Button1Click;
DBCtrlGrid1 = new TDBCtrlGrid(this);
DBCtrlGrid1->Parent = this;
DBCtrlGrid1->Width = 400;
DBCtrlGrid1->Height = 300;
DBCtrlGrid1->Left = 88;
DBCtrlGrid1->Top = 24;
DBCtrlGrid1->RowCount = 3;
DBCtrlGrid1->PanelHeight = 27;
DBCtrlGrid1->Orientation = goVertical;
DBCtrlGrid1->DataSource = DataSource1;
DBEdit1 = new TDBEdit(this);
DBEdit1->Parent = DBCtrlGrid1;
DBEdit1->DataSource = DataSource1;
DBEdit1->DataField = "id";
DBEdit1->Left = 8;
DBEdit1->Top = 3;
DBEdit2 = new TDBEdit(this);
DBEdit2->Parent = DBCtrlGrid1;
DBEdit2->DataSource = DataSource1;
DBEdit2->DataField = "name";
DBEdit2->Left = 216;
DBEdit2->Top = 3;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ClientDataSet1->CreateDataSet();
for (int i=0; i<5; i++)
{
ClientDataSet1->Append();
ClientDataSet1->FieldByName("id")->AsString = IntToStr(i);
ClientDataSet1->FieldByName("name")->AsString = IntToStr(i);
ClientDataSet1->Post();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
FreeAndNil(&ClientDataSet1);
FreeAndNil(&DataSource1);
FreeAndNil(&DBGrid1);
FreeAndNil(&Button1);
FreeAndNil(&DBEdit1);
FreeAndNil(&DBEdit2);
FreeAndNil(&DBCtrlGrid1);
Action = caFree;
Form1 = NULL;
}
//---------------------------------------------------------------------------