C++ Builder初学问与答1

一直以来都想写一点为BCB初学者快速入门的东西,前不久写了几篇《闲谈BCB》想把自己学习BCB中如何来解决难点的方法说给大家,没想到被骂得不成样子。本想不写了,但觉得这些东西留下来能做什么呢?还是用另一种方法来重新演译我的思维吧,最近有些忙,那几篇没有写完的文章,我也会尽快写完的,至于《深入QR》,我想我一定会用另一种手法来写,让你一看就会把QR这个娇女的所有衣服都脱光,不整理到这个地步,我是不敢轻易再拿出来,还请朋友见谅!

本文分为《基础入门》、《快速提高》与《成功编程者》三部分。

第一部分:基础入门

1.窗体
1) 问:Windows的编程就是在窗体的基础上实现的, C++Builder是怎样处理窗体的呢?
  答:窗体的一部分功能通过窗体的属性来实现,窗体的属性非常多,这里只对其中比较重要的属性进行介绍。

  1. ActiveControl指定窗体上的某个组件为输入焦点。如下面的语句将窗体上的Label1组件成为输入焦点:ActiveControl=Label1。在同一时时刻,应用程序只能有一个输入焦点。
  2. BorderIcons用来设定标题栏上出现哪些系统图标。它是一个集合,可以设成以下几个类型:最大化按钮(biMaximize)、最小化按钮(biMinimize)、帮助按钮(biHelp)和系统菜单(biSystemMenu)。
  3. Icon属性用来指定当窗体最小化时显示的图标。
  4. KeyPreview属性为true时,表示击键事件发生时先传给窗体,然后再传给有输入焦点的组件上,相当于窗体截获了原本属于组件的事件。缺省值为false,表示击键事件只送到当前有输入焦点的组件上。
  5. Menu属性用来指定窗体的主菜单。
  6. Visible属性用来确定窗体是否可见。

此外还有一些运行时态属性,这些属性只有在程序运行的时候才能通过编程访问。这种属性主要有:
Active 属性用来确定窗体是否获得输入焦点。
ActiveMDIChild 这个函数将返回当前活动的子窗体。
DropTarget 属性用来指定窗体是否是拖放操作的对象。
Parent 属性用来设定包含窗体的窗口控件,通常是另一个窗体。如果窗体没有包含它的控件,那么它的Parent属性为nil。

2)
问: Windows窗体有很多样式,比如对话框,弹出窗口。如果我要控制窗体的边界样式,应该怎么办?
答:属性BorderStyle可以指定窗体边界的外观和行为。它一共有六种可能的取值。
bsDialog 表示大小不可变的标准的对话框边界。
bsSingle 表示大小不可变的单线边界。
bsNone 表示大小不可变、没有边界。
bsSizeable 表示标准的可改变大小的窗体。
bsToolWindow 与bsSingle时类似,但是标题较小,用做工具框窗口。
bsSizeToolWin与bsSizeable时相似,但是标题较小,做工具框窗口。
要注意的是,对于MDI子窗体,bsDialog或bsNone将不起作用。

3) 问:同样是获得焦点,ActiveControl与SetFocus()有什么不同?
答: ActiveControl是把焦点交给组件,它是一个属性。而SetFocus()是组件主动要焦点,是一个方法。书写格式也不一样。例如,我们想使同样的一个Button1获得焦点,可以下的两种写法:
ActiveControl=Button1或Button1=SetFocus()
二者作用是一样的,不过一般都习惯用第一种方式。

4) 问:属性FormStyle有什么作用?
答:属性FormStyle可以确定窗体的类型,它一共有四种属性值。
fsNormal 表示窗体既不是MDI父窗口也不是MDI子窗口,只可能是单文档SDI窗口或者对话框。这个属性值是缺省值。
fsMDIChild 表示这个窗体是一个MDI子窗口。
fsMDIForm 表示这个窗体是一个MDI父窗口。
fsStayOnTop 表示窗体始终保持在窗体所属工程中其它窗体的上面,除非还有别的窗体的FormStyle属性也被设置成了fsStayOnTop。
要特别注意的是,在程序运行期间不要修改窗体的FormStyle属性。

5) 问:属性Position有什么作用?
答:属性Position可以确定程序运行时出现在屏幕上的窗体的大小和位置,它有五种可能的取值。
1.poDesigned表示使用设计时指定的尺寸和位置属性时显示窗体。尺寸属性是指Height和Width,位置属性是指Left和Top。这个属性值是缺省值。
2.poDefault表示窗体在屏幕上显示的位置和大小由Windows决定。每次运行应用程序时,窗体都会稍微向下向右移动。
3.poDefaultPosOnly表示窗体以设计时的窗体尺寸显示窗体,但是在屏幕上显示的位置由Windows确定。每次运行应用程序时,窗体都会稍微向下向右移动。当无法再向下移动时,就又会从屏幕的左上角开始显示。
4.poDefaultSizeOnly表示窗体的位置由设计时指定的值确定,而尺寸由Windows确定。
5.poScreenCenter表示使用设计时指定的尺寸和位置属性,在屏幕的中央显示窗体。

6) 问:如何最大化或最小化窗体?
答:属性WindowState与窗体的显示有关,它有三种可能的取值。
wsNormal 窗体既不是最大化显示也不是最小化显示。这个值是缺省值。
wsMinimized 窗体最小化显示。
wsMaximized 窗体最大化显示。

7) 问:属性ClientHeight和ClientWidth有什么作用?
答:这两个属性用来定义窗体用户区域的高和宽。所谓用户区域窗体的实际工作区域,就是除了窗体的标题栏、菜单条、工具条和状态条以及边框之外的窗体区域。所以对于新创建的窗体,它的用户区域比窗体的大小要稍微小一些,相对而言,窗体的大小是由属性Height和Width确定的。

8) 问:如何动态创建一个窗体呢?
答:我们先创建一个主窗体MainForm,把她的Caption改为“主窗体”,把FormStyle属性改为fsMDIForm。再创建一个子窗体windows1,把Caption改为“子窗体”,把FormStyle属性改为fsMDIChild。
选择“Project|Options…”菜单项,将会弹出一个如图所示的对话框。



在这里我们可以通过下拉框选择主窗体(Main form),在左侧的Auto-create forms里列出了所有的窗口,这里面的窗口通常是动态创建,你可以把需要动态创建的窗口(Available forms)通过中间的那四个按钮调到右侧,然后OK就可以了。
动态的创建的方法如下:
void _fastcall TForm1::Button1Click(TObject *Sender)
{
Tform2 *Forms;
try
{
Form2=new TForm2(Application);//动态创建Form2

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值