string类型和动态数组类型都是系统自管理的,不用担心内存泄漏。
系统事件中的参数Sender: TObject,是指触发该事件的控件,但Sender是TObject类型的,在实际使用时需要强制向下转型。
--例如有多个Button,以及一个用于显示Label, 且这些按钮的功能都是一样的,比如说将自己的caption赋给Label,则可以用Sender来实现复用按钮事件
--即用Sender来判断是哪个按钮,再赋值,主要代码如下:
procedure TForm1.btn1Click(Sender: TObject);
begin
--判断是哪个按钮可用 Sender = btn1(即按钮变量名)
Label.Caption := TButton(Sender).Caption; --TButton(Sender):将Sender强制向下转型为TButton类型
end;
--最后将其它按钮的OnClick事件都设置为btn1Click就行了。
窗口Form中BorderStyle设置为Dialog,则用户不能改变窗口大小
控件及其重要的属性:
1,MainMenu:主菜单控件,不可视,一个窗口只有一个主菜单,但可以有多个弹出菜单(右键触发的PopMenu)。
Items:保存的菜单项(菜单项的类型是TMenuItem),点击可以设置各种菜单项;
Image:指定一个绑定的ImageList(在win32下)
菜单项中的属性:caption:名称(Caption为'-'时,在菜单上显示的就是一条横线);
Bitmap:图标
shortcut:快捷键(不同于&定义的快捷键,这里的快捷键可以做到在按钮没显示出来是就能按到,而&定义的需要先看到这个按钮,快捷键才有效)
选中菜单项,右键选择Create SubMenu可以新建一个子菜单
ImageIndex:图标序号,需要先设置Mainmenu中的Image属性
Checked:该菜单项是否被点击过,为true时菜单项前会有一个√
AutoCheck:为True时自动设置Checked属性
Visible:为True时显示控件,为False时不显示控件
2,PopMenu: 弹出菜单控件,不可视,对于大部分控件都有一个PopMenu属性,即在该控件上点击右键会显示选项。里面的属性和主菜单属性的含义一样。
重要的事件:OnPopUp:当弹出该PopMenu时触发。
TPopMenu类有一个PopupComponent属性,表示是在哪个控件上触发的Popup事件。
还有一个方法PopUp(X, Y:Integer);用于设置弹出菜单的位置。例如设置菜单在当前鼠标位置弹出,主要代码如下
var position: TPoint;
position := Mouse.CursorPos;
PopMenu.PopUp(position.X, position.Y);
3,ImageList:图像列表控件,不可视,用于保存多个BMP\PNG\ICO文件供其他组件使用
4,Label控件:标签。用于显示短文本。
重要属性:Caption:要显示的文本
Color:背景颜色
Transparent:为True时将忽略Color属性,使背景透明
AutoSize:为True时,当文本长度大于Width时会自动增加Label长度
WordTrap:为True时,当中文文本长度大于Width时会换行,配合height和Width可以实现竖向显示文本
5,Edit控件:编辑框。
重要属性:Text:编辑框的文本
SelText:编辑框中被选中的文本
ReadOnly:只读(大部分编辑控件都有的属性)
OnChange():当编辑框中文本发生变化时触发
6, Memo控件:多行的编辑框
重要属性:Lines:Memo中的一行行文本
相关方法:1,Lines.Add(String):添加一行文本;
2,Lines.Clear:清空Memo中所有文本;
3,Lines.Delete(Col):删除第Col行文本(从0开始)
4,Lines.LoadFromFile(FilePath):从文件中获取数据
5,Lines.SaveToFile(FilePath):保存到文件中
scollBars:滚动条,ssVertical:垂直滚动
SelectAll();选中memo中所有的文本,但前提是焦点(setFocus)在memo上(点击SpeedButton时焦点不会出现在该按钮上)
SelText:选中的文本
将选中文本复制到剪切板:
Uses Clipbrd;
Clipboard.AsText := memo.SelText;
CopyToClipboard:将memo中的文本复制到剪切板
PasteFromClipboard:将剪切板中的文本粘贴到memo中
7,SpeedButton:可以加图标,点击时焦点不发生改变
8,Button:
重要属性: ModalResult:showModal的返回值,有mrOK, mrCancel, mrYes, mrNo, mrTryAgain等值
Default: 键盘输入Enter时默认点击该按钮
Cancel: 键盘输入Esc时默认点击该按钮
Click(): 相当于点击了该按钮
9,CheckBox:复选框
重要属性: alignment:设置复选框相对于提示文本的位置
Checked:该复选框是否被选择,只有True或false(一般情况下只有选中和没选中,而当设置AllowGray=True时,状态(state)的变化是没选中(cbUnChecked)——》部分选中(cbGrayed)——》选中(cbChecked))
OnClick:当Checked属性发生变化时触发
10,RadioButton:单选框,在一个容器中的所有单选框只有一个可以是选中状态的(通常用一个GroupBox装相关联的单选框)。
11, RadioGroup:单选组,包含多个单选框
重要属性:Items:选项的文本,一行就是一个选项
ItemIndex:选中的选项的序号(从0开始),如果组中没有选中的,则为-1
Columns:组里Items分几列显示
12, ListBox:选项组
重要属性:Items:选项的文本,一行就是一个选项
Items.Count:有多少个选项
Count:有多少个选项
SelCount:选中的有多少个
Selected:一个数组,保存的是Items中被选中的情况,选中为True
ItemIndex: 默认选中的选项的序号(从0开始),如果组中没有选中的,则为-1
multiSelect:是否允许多选(按Ctrl多选)
Columns:
Sorted:是否要按字符串排序Items
添加和清除数据同Memo控件
DeleteSelected;删除选中行
13, ComboBox:下拉列表
重要属性:Items、ItemIndex
DropDownCount:下拉时显示多少条选项
Style:
csDropDownList:只能选不能输入
csSimple:可以选也可以输入
14, Dialogs:各种对话框,如打开文件对话框,主要用于获取文件路径,操作文件以后再学。
Filter:Dialog的过滤器,类似于 *.txt, *.jpg之类的
OpenDialog:打开文件夹对话框,使用如下:
if OpenDialog.Execute then
sFilePath := OpenDialog.FileName;
SaveDialog:保存数据到文件
if SaveDialog.Execute then --如果有选择文件
memo.Lines.SaveToFile(SaveDialog.FileName); --将Memo中的文本保存到选中的文件中
FontDialog:字体样式选择对话框
if FontDialog。Execute then
mmo.Font := FontDialog.Font;
ColorDialog:颜色对话框:Color
窗口(Form)在创建完所有控件后会触发OnCreate事件,可以在这个事件里初始化组件。