一个简单的数据库应用的代码结构?

蒙飞鸿 2012-09-21 10:06:06
按入门教材,建立一基础工程,删除Form1,然后Database->From Wizard...选择一个DSN选择一个表,把字段加入,然后选In a grid.成功做了一个数据库应用程序.

但是在代码里看,只有一个TForm1类,并只实现了两个成员函数:
__fastcall TForm1::TForm1(TComponent *Owner)
: TForm(Owner)
{
}
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Table1->Open();
}

而找不到那几个与数据库有关的成员变量
TIntegerField *Table1id;
TStringField *Table1xingming;
TIntegerField *Table1nianlin;
TIntegerField *Table1shengao;
TDBGrid *DBGrid1;
TDBNavigator *DBNavigator;
TPanel *Panel1;
TDataSource *DataSource1;
TPanel *Panel2;
TTable *Table1;

是怎么初始化怎么联系起来实现数据库操作的代码,这是怎么回事?
从我的认识看来,这里的这些成员变量都没有初始化甚至没有调用构造函数,Unit1的h和cpp里都没有显性把这些成员变量怎么怎么用宏来怎么怎么操作.怎么回事啊,想改变数据库行为从代码上在哪入手啊?
...全文
122 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccrun.com 2012-09-21
  • 打赏
  • 举报
回复
对于一个标准的VCL Form Application工程来说,假设窗体(Form)上有一个TButton组件,那么对应的.h文件中有声明,如
TButton *Button1;
对应的窗体文件(.dfm)中有描述:
  object Button1: TButton
Left = xxx
Top = xxx
Width = xxx
Height = xxx
Caption = 'Button1'
TabOrder = 2
OnClick = Button1Click
end

执行的时候,先创建Application对象,这个对象负责整个应用程序的生命周期以及Form的管理。Application对象创建工程选项中设定好的Form(类似CreateWindow),然后创建每个Form中定义的对象(如上面提到的Button), 根据DFM文件中对Button的描述,初始化其属性(类似SetWindowText为窗口设置文本)等,并且Application对象会接受和派发鼠标及键盘的消息,以实现Button的点击,等等。

我只是大概讲讲,这些知识不是一言两语能解释清的。
蒙飞鸿 2012-09-21
  • 打赏
  • 举报
回复
如果是VC MFC的话,哪个类在哪初始化都什么流程,会能在IDE里比较线性的查看到(通过调用关系的梳理),网上也比较多介绍,比如模态对话框初始化的函数流程.想问CB里

">>>这里的这些成员变量都没有初始化甚至没有调用构造函数
这些对象的初始化和结束工作是C++Builder自动来完成的

"

怎么观察他的调用过程?
ccrun.com 2012-09-21
  • 打赏
  • 举报
回复
>>>这里的这些成员变量都没有初始化甚至没有调用构造函数
这些对象的初始化和结束工作是C++Builder自动来完成的

>>>Unit1的h和cpp里都没有显性把这些成员变量怎么怎么用宏来怎么怎么操作
C++Builder中,你直接使用这些对象的方法就行了,无需数据交换。你需要了解每个对象是干什么用的。

>>>想改变数据库行为从代码上在哪入手啊?
操作TTable对象就行了,如:
Table1->Close(); // 关闭数据集
Table1->Open(); // 打开数据集
Table1->RecordCount属性是记录的数量
。。。
蒙飞鸿 2012-09-21
  • 打赏
  • 举报
回复
我是一名VC转CB6的程序员啊,在VC里,基本上所有动作都可以在h和cpp文件里处理了,所以对CB6的这些关系有点茫然啊,看了一楼二楼的回复,还是不懂啊,主要都没有解答"想改变数据库行为从代码上在哪入手啊?"
ccrun.com 2012-09-21
  • 打赏
  • 举报
回复
TDBGrid *DBGrid1;
TDBNavigator *DBNavigator;
TPanel *Panel1;
TDataSource *DataSource1;
TPanel *Panel2;
TTable *Table1;
这些组件,都是在窗体上拖放的。至于
TIntegerField *Table1id;
TStringField *Table1xingming;
TIntegerField *Table1nianlin;
TIntegerField *Table1shengao;
这是字段对象,是在数据集中Add进来的。

有一些教材是极端不负责任的误导新手,所以,书,不能全信。
缘中人 2012-09-21
  • 打赏
  • 举报
回复
虽然是自动生成,但是和自己做结果一样。

这个cpp里虽然代码很少,但是h头文件里的声明一个都不少,看以看看,另外dfm窗体文件里保存了控件间的关系,控件的属性设置,绑定等等。
ccrun.com 2012-09-21
  • 打赏
  • 举报
回复
C++Builder相关的书籍中,我暂时没有发现哪本书能讲的详细并且实用。大部分都是教读者如何拖放控件的。
蒙飞鸿 2012-09-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
对于一个标准的VCL Form Application工程来说,假设窗体(Form)上有一个TButton组件,那么对应的.h文件中有声明,如
TButton *Button1;
对应的窗体文件(.dfm)中有描述:

Assembly code

object Button1: TButton
Left = xxx
Top = xxx
Width =……
[/Quote]
非常受用,准备结贴.不过如果能推荐介绍窗体文件与各类初始化流程的网文或者教程就好了.

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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