1.窗体
1) 问:Windows 的编程就是在窗体的基础上实现的, C++Builder 是怎样处理窗体
的呢?
答:窗体的一部分功能通过窗体的属性来实现,窗体的属性非常多,这里只对
其中比较重要的属性进行介绍。
ActiveControl 指定窗体上的某个组件为输入焦点。如下面的语句将窗体上的 Label1
组件成为输入焦点:ActiveControl=Label1。在同一时时刻,应用程序只能有一个
输入焦点。
BorderIcons 用来设定标题栏上出现哪些系统图标。它是一个集合,可以设成以下
几个类型:最大化按钮(biMaximize)、最小化按钮(biMinimize)、帮助按钮(biHelp)
和系统菜单(biSystemMenu)。
Icon 属性用来指定当窗体最小化时显示的图标。
KeyPreview 属性为 true 时,表示击键事件发生时先传给窗体,然后再传给有输入
焦点的组件上,相当于窗体截获了原本属于组件的事件。缺省值为 false,表示击
键事件只送到当前有输入焦点的组件上。
Menu 属性用来指定窗体的主菜单。
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 获得