delphi基础语法

因工作需要维护上个世纪之工程,故学 delphi,已无甚意义,故简记之,供自学用。

技术总结

0、安装IDE。
1、看基础语法(不要求短时间内完全了解)。
2、IDE使用,快捷键。
3、各控件使用、属性等,弹出窗口,多窗口显示,logo,标题,最大/小化。退出程序。对话框弹出。

基础语法

似乎不区分大小写。
function 必须有返回值,procedure 无返回值。 两者表现形式似乎没有区别。
type定义类型,var声明变量。

#:ascii字符: const key = #9
十六进制:$34 ==> 0x34

字符串:string abc
有符号32:integer longint
无符号8:byte,无符号16 word,无符号32 cardinal或longword
有符号8:shortint 有符号16 smallint 有符号64 longint(似乎没有uint64_t)
字符:char(ansichar) widechar(16位,unicode)
布尔:boolean
字符串:string pchar pansichar pwidechar

数字转字符:IntToStr(100)
字符转数字:StrToInt(‘123’)
弹出对话框
ShowMessage(‘hello’)

函数示例:
function foobar(a, b:integer): string;
var
ret:integer;
begin
result := IntToStr(a+b);
end;
(注:没有括号,相同参数只写一个类型,与golang类似。返回值只用result表示)

指针示例:

1
2
3
4
5
6
7
8
9
10
function test2():integer;
var
i:integer;
p:^integer; // 整型指针

begin
i := 100;
p := @i; // 取地址
result := p^; // 取地址的值
end;

else 前不能有分号;

非主函数中,用exit退出当前函数,相当于“返回”,需注意在此之前要赋值给result。

delphi中{$R*.DFM}的意思是?–》包含同名窗体资源。

枚举:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 枚举和数组示例
// 通过枚举值索引数组
function test3():string;
type
EWEEK = (MON, TUE, WED, THU, FRI, SAT, SUN);
EColors = (RED, GREEN, BLUE);
Tb = array of integer;

var
myColor: EColors;
myWeek: EWEEK;
a: array[0..3] of integer;

// 错误
//cWeek: array[0..6] of PWideChar = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');

begin
myColor := BLUE;
myWeek := FRI;
a[0] := 1;
A[1] := 2;
a[2] := 100;
result := format('%d %d', [ord(RED), b[2]]);
//result := cWeek[ord(THU)];

end;

自定义类方法:
1、新建单元,保存,在工程中添加单元。
2、定义类:

1
2
3
4
5
type
CFoo = class
public
function FooTest(value: integer): integer;
end;

实现方法:

1
2
3
4
5
6
7
function CFoo.FooTest(value: integer): integer;
var
i:integer;
begin
i := 100;
result := i + value;
end;

3、使用。在uses中引入单元名。定义类,调用类方法: a := myFoo.FooTest(100);

控件及其它缩写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
控件类名及解释 缩写
TActionList, TAction表示动作的列表项 act
TButton, TSpeedButton, TBitBtn等所有的按钮类 btn
TCheckBox, TDBCheckBox等所有的检查框 chk
TRadioButton单选按钮类 rdo
TToolBar工具条 tb
TMainMenu所有的主菜单类 mm
TMainMenuItem所有的菜单项类 mi
TPopupMenu所有的弹出式菜单类 pm
TPopupMenuItem所有的弹出式菜单项类 pmi
TLabel, TStaticText等所有用来显示的标签类 lbl
TPanel等所有的面板类 pnl
TPageControl等所有的页式控件类 pgc
TEdit, TMaskEdit等所有的单行编辑框类 edt
TMemo, TRichEdit等所有的多行编辑框类 mmo
TDrawGrid, TStringGrid等所有的网格类 grd
TAnimate等所有的动画类 ani
TImageList等所有的图片列表类 il
TImage等图片类 img
TChart图表类 cht
TComboBox, TDBComboBox等所有的下拉式列表框类 cbo
TListBox, TDBList等所有的列表框类 lst
TTreeView tv
TListView lv
THotKey hk
TSplitter等所有的分隔符类 spt
TOpenDialog等所有的对话框元件类 dlg
TTable等所有的数据表类 tbl
TQuery等所有的SQL查询类元件 qry
TClientDataSet所有的客户数据集元件 cds
TDataSource ds
TDatabase db
TSockConnection,TDCOMConnection等连接元件类 con
TQuickRep, TFastReport等所有的报表元件类 rpt
TDDEClientConv,TDDEClientItem等所有的DDE元件类 dde
TMonthCalendar等所有的日历类 cal
TGroupBox等控件类 grp

Frm Form
Mnu MainMenu, PopupMenu, MenuItem
Lbl Label, DBLabel
Edt Edit, Memo, DBEdit, DBMemo, MaskEdit
Rtf RichEdit
Btn Button (BitBtn, SpeedButton)
Chk CheckBox, DBCheckBox
Opt RadioButton
Lst ListBoxes (e.g. TListBox)
Cbx ComboBoxes (e.g. TComboBox)
Sbr ScrollBar
Grp GroupBox, RadioGroup, DBRadioGroup
Pnl Panel

Tvw TreeView
Lvw ListView
Iml ImageList
Pge PageControl
Trk TrackBar, RzTrackBar
Pbr ProgressBar, RzProgressBar
Sts StatusBar, RzStatusXxx
Key HotKey

Sbx ScrollBox
Tab TabSet, TabControl
Nbk Notebook
Tbk TabbedNotebook
Out Outline
Grd StringGrid, DrawGrid, DBGrid, ColorGrid, DBCtrlGrid
Img Image, DBImage
Pbx PaintBox
Shp Shape
Bvl Bevel
Hdr Header, HeaderControl
Med MediaPlayer

Dbs Database
Tbl Table
Qry Query
Stp StoredProc
Ses Session
Sql UpdateSQL
Src DataSource
Bat BatchMove
Rpt Report
Nav DBNavigator

Dlg Dialog Boxes (e.g. OpenDialog)
Tmr Timer
Ole OleContainer
Dde DDE Controls (e.g. DdeClientConv)
Vbx VBX Controls
Ocx OCX Controls
Gge Guage
Spn SpinButton, UpDown
Cal Calendar

注:有时文本编辑框缩写为txt

窗体:frm

片段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
MessageBox(0 , '是否要退出本系统?' , '提示信息', MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2 + MB_TASKMODAL);

在API函数中:
function MessageBox(hWnd:HWND,const Text, Caption: PChar; Flags: Longint = MB_OK): Integer;
hWnd:对话父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可以用0,使其直接作为桌面窗体的子窗口。
Text:欲显示的信息字符串。
Caption:对话框标题客串。
Flags:对话框类型常量。该函数的返回值为整数,用于对话框按钮的识别。类型常量:对话框的类型常量可由按钮组合、缺省按钮、显

示图标、运行模式四种常量组合而成。



//对话框出现的按钮组合常量

MB_ABORTRETRYIGNORE = $00000002 (终止、重试、忽略)
MB_OK = $00000000 (确定)
MB_OKCANCEL = $00000001 (确定、取消)
MB_RETRYCANCEL = $00000005 (重试、取消)
MB_YESNO = $00000004 (是、否)
MB_YESNOCANCEL = $00000003 (是、否、取消)



//对话框返回值

0 (返回值为'0'='对话框建立失败')
IDOK 1 (返回值为'1'='确定')
IDCANCEL 2 (返回值为'2'='取消')
IDABORT 3 (返回值为'3'='终止')
IDRETRY 4 (返回值为'4'='重试')
IDIGNORE 5 (返回值为'5'='忽略')
IDYES 6 (返回值为'6'='是')
IDNO 7 (返回值为'7'='否')



//对话框图标常量
MB_ICONHAND = $00000010; //(禁止号,"X")
MB_ICONERROR = MB_ICONHAND; //(禁止号,"X")
MB_ICONSTOP = MB_ICONHAND; //(禁止号,"X")
MB_ICONQUESTION = $00000020; //(问号,"?")
MB_ICONEXCLAMATION = $00000030; //(感叹号,"!")
MB_ICONWARNING = MB_ICONEXCLAMATION; //(感叹号,"!")
MB_ICONASTERISK = $00000040; //(信息号,"i")
MB_ICONINFORMATION = MB_ICONASTERISK; //(信息号,"i")
MB_USERICON = $00000080; //(用户图标)



//对话框默认按钮

MB_DEFBUTTON1 = $00000000; (默认第1个按钮)
MB_DEFBUTTON2 = $00000100; (默认第2个按钮)
MB_DEFBUTTON3 = $00000200; (默认第3个按钮)
MB_DEFBUTTON4 = $00000300; (默认第4个按钮)

//运行模式常量

MB_APPLMODAL = $00000000; //应用程序模式,在未结束对话框前也能切换到另一应用程序。
MB_SYSTEMMODAL = $00001000; //系统模式,必须结束对话框,才能做其它操作。
MB_TASKMODAL = $00002000; //任务模式,在结束对话框前也能切换到另一应用程序。
MB_HELP = $00004000; //帮助 (不详)
1
2
STR := Format('111111111111111111'+
'bbbb: %s\r\n', [currentVs]);