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;
}
//---------------------------------------------------------------------------

...全文
270 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
laisf 2004-11-26
  • 打赏
  • 举报
回复
up
laisf 2004-11-25
  • 打赏
  • 举报
回复
楼上的,我是用临时表,跟DB无关。
你可以把我贴的代码试一下。DBCtrlGrid1的RowCount我已经设为3了。如果DBCtrlGrid1所绑定的DataSet中有3条以上记录,在DBCtrlGrid1中是可以同时看到3条的。
但现在只能看到1条,必须按翻页来看到下一条记录。
free1688 2004-11-25
  • 打赏
  • 举报
回复
检查你创建的DB表了吗?有多少数据。动态创建时也能同时显示多条记录,我就是动态创建的30个DBCtrlGrid1。
laisf 2004-11-25
  • 打赏
  • 举报
回复
顶起来
laisf 2004-11-24
  • 打赏
  • 举报
回复
????
laisf 2004-11-23
  • 打赏
  • 举报
回复
有没有高手碰到过这个问题?
kmfangxun 2004-11-23
  • 打赏
  • 举报
回复
不好意思,没看清内容。
kevinlai 2004-11-23
  • 打赏
  • 举报
回复
楼上的,这个跟ColCount没什么关系啊。
kmfangxun 2004-11-22
  • 打赏
  • 举报
回复
设置 DBCtrlGrid1->ColCount即可。
robbyzi 2004-11-22
  • 打赏
  • 举报
回复
没用过DBCtrlGrid。。。。
laisf 2004-11-22
  • 打赏
  • 举报
回复
怎么100分也没人想要啊?
laisf 2004-11-22
  • 打赏
  • 举报
回复
自己UP

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧