冬雪雪冬 发表于 2017-8-20 19:25:26

围观窗体与组件06 - 零基础入门学习Delphi030

容器型控件(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.Text赋值。或者给StatusBar1.Panels.items.Text赋值。例题是显示memo的状态,总行数是Memo1.Lines.count,总字数是Memo1.SelStart,当前行是Memo1.CaretPos.Y,当前列是Memo1.CaretPos.X。通过format格式化字符串把两个整数转换成字符串:format('第%d行,第%d列', )本段程序如下:procedure TForm1. Memo1Change (Sender:TObject);begin StatusBar1.Panels.items.Text := '总行数: ' +IntToStr(Memo1.Lines.count); StatusBar1.Panels.Text := '总字数: ' +IntToStr(Memo1.SelStart); StatusBar1.Panels.Text := format('第%d行,第%d列',);end;这里有一个问题,它是靠Memo1Change的事件驱动的,鼠标点击改变光标位置则不会显示变化。
页: [1]
查看完整版本: 围观窗体与组件06 - 零基础入门学习Delphi030