马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
容器型控件(Panel, GroupBox, ScrollBox)可以将其他控件放到其中,又称为父组件。父组件能对子组件发生作用,父组件销毁(Destroy)时子组件同时被销毁。 看一个子组件是否在父组件中,并不仅仅看其在父组件的上面,而是看Object TreeView的相互关系。此图三个子组件都在父组件之中。
此图BitBtn1看上去在Panel1中,但实际上与panel一点关系也没有,从旁边王父组件拖动子组件时就会出现此问题。 从Object TreeView中用鼠标拖动可以改变父子关系。 Panel控件的属性 Enable—当为False时,虽然其中的子组件看起来正常,但都无法使用。 ControlCount—其中的子组件的数量。 而GroupBox相当于带标题的Panel,ScrollBox相当于带滚动条的Panel。 RadioGroup和CheckListBox都是父子组合型组件,不能再加入其他组件。 ToolBar工具栏控件自动处于窗体的上方,菜单之下,也是父子组合型控件。右键New Button可增加新图形按钮,这些按钮是没有图像的,需添加一个ImageList控件导入ico文件,注意这些图像不一定和按钮意义对应,可条件ImageList窗口的image图像次序或在按钮改变ImageIndex索引值。
StatusBar状态栏自动位于窗体的下方,显示当前程序的一些状态信息。
用其编辑器可增删每个小panel,并调整次序,同时可调整panel的长度。 往状态栏添加信息: 显示内容的方法是给StatusBar1.Panels[index].Text赋值。或者给StatusBar1.Panels.items[index].Text赋值。 例题是显示memo的状态,总行数是Memo1.Lines.count,总字数是Memo1.SelStart,当前行是Memo1.CaretPos.Y,当前列是Memo1.CaretPos.X。通过format格式化字符串把两个整数转换成字符串:format('第%d行,第%d列', [Memo1.CaretPos.Y + 1, Memo1.CaretPos.X + 1]) 本段程序如下: procedure TForm1. Memo1Change (Sender:TObject); begin StatusBar1.Panels.items[1].Text := '总行数: ' +IntToStr(Memo1.Lines.count); StatusBar1.Panels[2].Text := '总字数: ' +IntToStr(Memo1.SelStart); StatusBar1.Panels[3].Text := format('第%d行,第%d列',[Memo1.CaretPos.Y + 1, Memo1.CaretPos.X+ 1]); end; 这里有一个问题,它是靠Memo1Change的事件驱动的,鼠标点击改变光标位置则不会显示变化。
|