1. TRƯ NG ð I H C C N THƠ
KHOA KHOA H C T NHIÊN
Giáo trình lý thuy t
LẬP TRÌNH CĂN BẢN B
MSMH: TN035
(Áp d ng cho chương trình tín ch )
Biên so n: ThS. VŨ DUY LINH
ThS. NGUY N NH GIA VINH
ThS. LÊ TH DI M
Năm 2010
2.
3. B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang i
M C L C
CHƯƠNG 1: D LI U VÀ THU T TOÁN................................................................1
I. D li u và thông tin: .............................................................................................1
I.1. Khái ni m.......................................................................................................1
I.2. Sơ ñ t ng quát c a m t quá trình x lý thông tin.........................................1
II. T bài toán t i chương trình................................................................................1
II.1. Các giai ño n gi i m t bài toán trên máy tính ñi n t ..................................1
II.2. Thu t toán (Algorithm).................................................................................2
CHƯƠNG 2: BORLAND DELPHI .............................................................................5
I. T ng quan v Delphi.............................................................................................5
I.1. Delphi là gì.....................................................................................................5
I.2. Các phiên b n c a Delphi ..............................................................................5
II. Môi trư ng phát tri n tích h p (IDE) c a Delphi................................................5
II.1. C a s chính c a Delphi...............................................................................6
II.2. Thanh th c ñơn chính và thanh công c .......................................................6
II.3. B ng ch a các thành ph n c a Delphi (Component Palette) .......................7
II.4. C a s thi t k bi u m u (Form Designer) và C a s so n th o mã l nh
(Code Editor) .................................................................................................8
II.5. C a s thu c tính và s ki n c a ñ i tư ng (Object Inspector) ...................9
II.6. C a s li t kê các ñ i tư ng d ng cây (Object TreeView).........................10
III. C u trúc m t d án Delphi ...............................................................................10
III.1. T p tin d án: (Delphi project file) ...........................................................10
III.2. Các t p tin ch a mã l nh (Unit file)..........................................................11
III.3. Các t p tin ñ c t bi u m u (Form file).....................................................11
III.4. Các t p tin tài nguyên (Windows Resource File)......................................13
IV. Các thao tác cơ b n trên Delphi .......................................................................14
IV.1. M m t d án m i.....................................................................................14
IV.2. Lưu d án ..................................................................................................14
IV.3. Lưu Form (t p tin unit) v i tên khác.........................................................18
IV.4. Lưu d án v i tên khác..............................................................................18
IV.5. ðóng d án................................................................................................18
IV.6. Thoát kh i Delphi .....................................................................................18
CHƯƠNG 3: CÁC THÀNH PH N CƠ B N C A NGÔN NG DELPHI (OBJECT
PASCAL).............................................................................................19
I. B ch vi t.........................................................................................................19
II. T khóa..............................................................................................................19
III. Tên danh hi u t ñ t.........................................................................................20
IV. H ng.................................................................................................................20
IV.1. Khái ni m..................................................................................................20
IV.2. H ng tr ......................................................................................................20
4. Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCTii
IV.3. H ng ñ nh ki u: .........................................................................................21
V. Ki u (Type)........................................................................................................21
V.1. Ð nh nghĩa ..................................................................................................21
V.2. Cách khai báo .............................................................................................21
VI. Bi n ..................................................................................................................22
VII. Bi u th c.........................................................................................................22
VII.1. ð nh nghĩa................................................................................................22
VII.2. Th t ưu tiên...........................................................................................22
VIII. Chuy n ki u (Typecast).................................................................................23
IX. L i chú thích và các ch d n biên d ch.............................................................24
X. C u trúc m t d án ch ñ Form (Form Application)....................................25
CHƯƠNG 4: CÁC KI U D LI U SƠ C P CHU N, L NH ðƠN.......................26
I. Các ki u d li u sơ c p (Simple type) ................................................................26
I.1. Ki u s nguyên (Integer)..............................................................................26
I.2. Ki u ký t (Char) .........................................................................................26
I.3. Ki u s th c (Real type)...............................................................................30
I.4. Ki u logic (Boolean)....................................................................................34
II. Câu l nh (statement) ..........................................................................................34
III. L nh ñơn (Simple statement) ...........................................................................35
IV. L nh gán (Assignment statement)....................................................................35
V. L nh g i th t c và hàm ....................................................................................35
VI. L nh Goto.........................................................................................................37
CHƯƠNG 5: L P TRÌNH X LÝ S KI N – CÁC THÀNH PH N TRONG GIAO
DI N DELPHI....................................................................................38
I. L p trình x lý s ki n ........................................................................................38
I.1. L p (Class) và ñ i tư ng (Object) ...............................................................38
I.2. Thu c tính ....................................................................................................43
I.3. Phương th c (Method).................................................................................44
I.4. S ki n (Event).............................................................................................44
I.5. X lý s ki n (Event Handlers)....................................................................45
I.6. Trình h tr mã l nh (Code Completion /IntelliSense)................................46
II. Sinh mã t ñ ng và m t s cách s a l i ............................................................46
II.1. Cách t ñ ng sinh mã (generate code) trong Delphi .................................46
II.2. Cách s a l i sinh mã trong Delphi.............................................................49
II.3. Thêm t p tin unit vào d án........................................................................54
II.4. Vi t l nh sau khi thêm unit form vào d án................................................58
II.5. G b t p tin unit form ra kh i d án .........................................................62
III. Bi u m u (TForm)............................................................................................62
IV. Các thành ph n (Component) giao di n ph bi n............................................68
IV.1. Nhãn (TLabel)...........................................................................................68
IV.2. H p văn b n (TEdit)..................................................................................71
5. B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang iii
IV.3. Nút l nh (TButton)....................................................................................78
IV.4. Nhãn và H p nh p (TLabeledEdit)...........................................................80
IV.5. H p ñánh d u hay h p ki m (TCheckbox) ...............................................81
IV.6. Nút tùy ch n (TRadioButton) ...................................................................87
IV.7. Nhóm tùy ch n (TRadioGroup)................................................................88
IV.8. Vùng văn b n (TMemo)............................................................................91
IV.9. H p danh sách (TListBox)........................................................................96
IV.10. TSpinEdit ..............................................................................................100
IV.11. H p danh sách ñánh d u (TCheckListBox) ..........................................101
IV.12. H p danh sách các khoá (TValueListEditor)........................................107
IV.13. H p li t kê th (TComboBox)...............................................................113
IV.14. Lư i chu i (TStringGrid)......................................................................118
IV.15. B ng ch a các thành ph n (TPanel)......................................................124
IV.16. Thanh th c ñơn chính (TMainMenu)....................................................125
IV.17. Th c ñơn (TMenuItem) ........................................................................126
IV.18. Menu ñ i tư ng (TPopupMenu) ...........................................................134
CHƯƠNG 6: CÁC L NH CÓ C U TRÚC.............................................................138
I. L nh ghép (Compound statement)....................................................................138
II. L nh c u trúc r nhánh ....................................................................................138
II.1. L nh if ... then ... và l nh if ... then ... else................................................138
II.2. L nh Case ... of.........................................................................................146
III. C u trúc l nh l p.............................................................................................149
III.1. L nh l p có s l n xác ñ nh trư c ...........................................................149
III.2. L nh l p có s l n không xác ñ nh trư c ................................................155
CHƯƠNG 7: CHƯƠNG TRÌNH CON....................................................................164
I. Khái ni m..........................................................................................................164
II. Hàm..................................................................................................................165
III. Th t c............................................................................................................172
IV. Truy n tham s ...............................................................................................175
IV.1. ð nh ki u và không ñ nh ki u cho tham s hình th c.............................175
IV.2. Truy n b ng tham tr (Value parameter).................................................177
IV.3. Truy n b ng tham bi n (Variable parameter).........................................179
IV.4. Truy n b ng tham s h ng (Constant parameter) ...................................181
IV.5. Truy n b ng tham s xu t (Out parameter) ............................................184
V. Chương trình con ñ quy.................................................................................190
CHƯƠNG 8: KI U LI T KÊ, MI N CON, T P H P ..........................................194
I. Ki u vô hư ng li t kê (Enumerated scalar type) ..............................................194
I.1. Khái ni m...................................................................................................194
I.2. Cách khai báo: Có hai cách khai báo là gián ti p và tr c ti p ...................194
I.3. M t s hàm chu n áp d ng cho ki u vô hư ng .........................................195
6. Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCTiv
II. Ki u mi n con (Subrange types)......................................................................196
II.1. Khái ni m..................................................................................................196
II.2. Cách khai báo............................................................................................196
III. Ki u t p h p (Set)...........................................................................................197
III.1. Khái ni m ................................................................................................197
III.2. Cách khai báo ..........................................................................................197
III.3. Mô t t p h p...........................................................................................198
III.4. M t s phép toán trên ki u t p h p .........................................................198
CHƯƠNG 9: KI U M NG.....................................................................................208
I. Khái ni m v m ng (Array-type data) ..............................................................208
II. M ng tĩnh (Static array)...................................................................................208
II.1. M ng m t chi u (One-Dimensional array)...............................................208
II.2. M ng nhi u chi u (Multi-Dimensional array)..........................................213
II.3. M ng hai chi u..........................................................................................215
III. M ng ñ ng (Dynamic array) ..........................................................................222
III.1. M ng ñ ng m t chi u.............................................................................222
III.2. M ng ñ ng nhi u chi u ...........................................................................227
III.3. H ng m ng...............................................................................................228
CHƯƠNG 10: KI U CHU I KÝ T ......................................................................229
I. Các lo i chu i ký t trong Object Pascal ..........................................................229
I.1. Chu i ng n (ShortString) ...........................................................................229
I.2. Chu i dài 1 byte (AnsiString) ....................................................................230
I.3. Chu i dài 2 byte (WideString) ...................................................................232
II. Các thao tác trên chu i.....................................................................................232
II.1. Phép toán c ng chu i................................................................................232
II.2. Phép toán so sánh......................................................................................232
II.3. Các th t c và hàm chu n x lý chu i ký t .............................................234
PH L C........ .........................................................................................................246
TÀI LI U THAM KH O ..........................................................................................252
B N QUY N TÁC GI ............................................................................................252
7. Chương 1: D li u và Thu t toán
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 1
CHƯƠNG 1: D LI U VÀ THU T TOÁN
I. D li u và thông tin:
I.1. Khái ni m
D li u (Data) là các s ki n không có c u trúc, không có ý nghĩa rõ ràng t i th i
ñi m xét.
Thông tin (Information) là m t khái ni m tr u tư ng ñư c th hi n qua các thông
báo, các bi u hi n,... ñem l i m t nh n th c ch quan cho m t ñ i tư ng nh n tin. Thông
tin là d li u ñã ñư c x lý xong, mang ý nghĩa rõ ràng t i th i ñi m xét.
M t h th ng thông tin (Information system) là m t ti n trình ghi nh n d li u, x lý
nó và cung c p t o nên d li u m i có ý nghĩa thông tin, liên quan m t ph n ñ n m t t
ch c, ñ tr giúp các ho t ñ ng liên quan ñ n t ch c.
I.2. Sơ ñ t ng quát c a m t quá trình x lý thông tin
M i quá trình x lý thông tin b ng máy tính hay b ng con ngư i ñ u ñư c th c hi n
theo m t quy trình sau:
D li u ñư c nh p ñ u vào (Input). Máy tính hay con ngư i s th c hi n quá trình
x lý nào ñó ñ nh n ñư c thông tin ñ u ra (Output).
Hình 1: Mô hình t ng quát quá trình x lý thông tin
II. T bài toán t i chương trình
Trong cu c s ng, chúng ta có r t nhi u bài toán c n ph i gi i quy t. S d ng máy
tính ñi n t ñ gi i các bài toán là ñi u r t hi u qu do kh năng tính toán c a máy tính. ð
máy tính có th hi u ñư c, chúng ta c n ph i có nh ng bư c gi i c th c a bài toán m t
cách ñúng logic, t ñó s d ng m t ngôn ng chương trình hay ph n m m l p trình ñ
hư ng d n máy tính th c hi n các thao tác c n thi t ñ tìm ra k t qu c a bài toán.
II.1. Các giai ño n gi i m t bài toán trên máy tính ñi n t
Ð gi i quy t m t bài toán trên máy tính ñi n t , c n qua các giai ño n sau:
- Tìm hi u m c tiêu chính c a bài toán: d li u nh p vào và k t qu xu t.
- Xây d ng m t chu i thao tác tính toán theo m t th t logic, g i là thu t gi i.
- L p chương trình di n t chi ti t các bư c tính theo thu t gi i.
- Nh p chương trình vào máy tính, thông d ch và ch y th ñ s a ch a l i.
- Th c hi n gi i bài toán v i s li u thu th p ñư c và ghi nh n k t qu .
NH P D LI U
(INPUT)
X LÝ
(PROCESSING)
XU T D LI U
(OUTPUT)
LƯU TR (STORAGE)
8. Chương 1: D li u và Thu t toán
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT2
- Th nghi m v i nhi u trư ng h p d li u nh p khác nhau c a bài toán ñ
chương trình ki m tra ñúng trong m i trư ng h p t ng quát.
- Phân tích k t qu và hoàn ch nh chương trình.
Trong các bư c trên, vi c thi t k thu t toán là giai ño n quan tr ng nh t.
II.2. Thu t toán (Algorithm)
II.2.1. Ð nh nghĩa
Thu t toán là m t phương pháp trình bày các bư c gi i quy t m t hay nhi u bài toán
theo m t ti n trình xác ñ nh.
II.2.2. ð c tính c a thu t toán
- Tính xác ñ nh: Các thao tác c a thu t toán là rõ ràng và ch c ch n th c hi n ñư c
ñ d n ñ n k t qu nào ñó.
- Tính h u h n và d ng: thu t toán ph i có m t s bư c gi i nh t ñ nh và cu i
cùng ph i có k t thúc ñi m d ng.
- Tính k t qu : V i d li u h p lý, thu t toán ph i cho k t qu th a yêu c u.
- Tính ph d ng: Thu t toán ph i gi i ñư c nhi u bài toán có cùng c u trúc v i các
d li u khác nhau và ñ u d n ñ n m t k t qu mong mu n.
- Tính hi u qu : Thu t gi i ph i ñơn gi n, d hi u trong các bư c gi i, t i thi u
hoá b nh và th i gian th c hi n.
- Tính hình th c: Các bư c trong thu t toán là máy móc, nghĩa là nó ph i th c hi n
ñúng như quy ñ nh mà không c n bi t ñ n m c tiêu cu i cùng.
II.2.3. Các phương pháp bi u di n thu t toán
Thu t toán có th ñư c di n gi i thông qua 3 phương pháp ph bi n, ñó là s d ng
ngôn ng t nhiên, ngôn ng gi và ngôn ng sơ ñ (lưu ñ ).
II.2.3.1 Ngôn ng t nhiên
Là cách di n ñ t t nhiên c a con ngư i b ng ngôn ng c a mình ñ mô t các bư c
gi i bài toán.
Ví d 1: Mô t thu t toán theo ngôn ng t nhiên c a phương trình ax + b = 0
- Bư c 1: Nh p vào 2 h s a và b.
- Bư c 2: Xét ñi u ki n a = 0?
N u ñúng là a = 0, thì ñi ñ n bư c 3, n u không (nghĩa là a ≠ 0) thì ñi ñ n bư c 4.
- Bư c 3: Xét ñi u ki n b = 0?
N u b = 0, thì báo phương trình có vô s nghi m. Ði ñ n bư c 5.
N u b ≠ 0, thông báo phương trình vô nghi m. Ði ñ n bư c 5.
- Bư c 4: Thông báo phương trình có m t nghi m duy nh t là x = - b/a.
- Bư c 5: K t thúc thu t toán.
9. Chương 1: D li u và Thu t toán
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 3
II.2.3.2 Ngôn ng gi
Là cách di n ñ t các bư c gi i c a bài toán thông qua m t s câu l nh có c u trúc
(như câu l nh if..then..else, for..to..do, while..do, repeat..until)
Ví d 2: Mô t thu t toán theo ngôn ng gi c a phương trình b c nh t ax + b = 0
- Bư c 1: Nh p vào 2 h s a và b.
- Bư c 2: if (a=0) then
if (b=0) then phương trình vô s nghi m
else phương trình vô nghi m
else phương trình có m t nghi m duy nh t x = -b/a
- Bư c 3: K t thúc thu t toán.
II.2.3.3 Ngôn ng lưu ñ (Flowchart)
Là cách di n ñ t các bư c gi i c a bài toán thông qua các ký hi u c a lưu ñ . M t s
qui ư c ký hi u lưu ñ :
Ký hi u Mô t
ði m b t ñ u ho c k t thúc thu t toán
Thao tác nh p hay xu t
Kh i x lý công vi c
Kh i quy t ñ nh ch n l a
ði m n i
Chu n b
T p h p các t p tin d li u
Kh i chương trình con
Các ghi chú, gi i thích
Dòng tính toán, thao tác c a chương trình
Hình 2: Các ký hi u lưu ñ
10. Chương 1: D li u và Thu t toán
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT4
Ví d 3: Mô t thu t toán theo ngôn ng lưu ñ c a phương trình ax + b = 0
Hình 3: Lưu ñ thu t toán PTB1
B t ñ u
Nh p a,b
a=0
b=0
Phương trình
vô s nghi m
Phương trình
vô nghi m
x := -b/a
K t thúc
ðúng
ðúng
Sai
Sai
Xu t nghi m x
11. Chương 2: Borland Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 5
CHƯƠNG 2: BORLAND DELPHI
I. T ng quan v Delphi
I.1. Delphi là gì
Delphi là m t ngôn ng l p trình c p cao, có trình biên d ch hoàn h o, h tr m nh
v các ki u d li u có c u trúc và thi t k hư ng ñ i tư ng d a trên n n t ng ngôn ng l p
trình hư ng ñ i tư ng (OOP: Object-Oriented Programming) c a Borland Pascal. Ngày
nay, Delphi ñã ñư c phát tri n thành môi trư ng xây d ng ng d ng t c th i RAD (Rapid
Application Development). T nh ng công c c a RAD, b n có th gi i quy t nh ng v n
ñ ph c t p trong qua trình phát tri n ph n m m như: l p trình ng d ng v cơ s d li u
(Database), l p trình m ng và Internet (Internet/Networking), l p trình Multimedia
(Animation, sound), l p trình trò chơi (Game) cũng như ñ h a (Graphic) ho c l p trình h
th ng, v.v… không nh ng trên n n Windows mà còn cho c Linux và .NET. Trong giáo
trình này, chúng tôi ch gi i thi u các khái ni m c a Delphi trong ph m vi h ñi u hành
Windows. V i kh năng m nh như v y c a Delphi, b n an tâm khi dùng nó ñ tri n khai
các ng d ng c a b n quy mô nh hay l n. ði u c n quan tâm Delphi là m t ngôn ng
r t thân thi n v i ngư i dùng, phù h p cho nh ng ngư i b t ñ u làm quen v i nó cũng như
nh ng nhà l p trình chuyên nghi p.
Vì ñây là giáo trình ñư c so n dành cho ñ i tư ng là các sinh viên b t ñ u h c Tin
h c ð i cương thông qua ngôn ng Delphi. Do v y, giáo trình này ch gi i thi u nh ng
khái ni m căn b n nh m giúp cho ngư i h c có m t s ki n th c nh t ñ nh ñ ñ v n d ng
vào gi i các bài toán ho c vi t nh ng chương trình ng d ng nh . Các chương trong giáo
trình này s trình bày các ph n t cơ b n c a Delphi ñ t o m t chương trình ch y trên
n n Windows, ñó chính là môi trư ng phát tri n tích h p IDE (Integrated Development
Environment) và ngôn ng hư ng ñ i tư ng Borland Pascal. Các b n s ñư c h c cách
thi t k (Design), phát tri n (Develop) hay vi t mã l nh (Code), và ki m tra l i (Test)
chương trình ng d ng b i vi c s d ng Delphi.
I.2. Các phiên b n c a Delphi
Ti n thân c a Delphi chính là ngôn ng ñ i tư ng Borland Pascal, và ñ n ngày nay
Delphi ñã có m t quá trình phát tri n v ng m nh t phiên b n 1 (Delphi1) vào năm 1995,
ñ n phiên b n 8 (Delphi for .NET) năm 2005. Trong giáo trình này, chúng tôi th ng nh t
trình bày v i các b n Delphi 7. ðây là phiên b n phù h p nh t và d dùng nh t hi n nay
cho các b n, ñ i tư ng là các sinh viên h c Tin h c ð i cương.
II. Môi trư ng phát tri n tích h p (IDE) c a Delphi
Môi trư ng so n th o và thi t k ng d ng c a Delphi 7 chia ra làm 5 ph n: C a s
chính c a chương trình Delphi, c a s thi t k bi u m u (Form designer), c a s li t kê các
thành ph n, ñ i tư ng d ng cây (Object TreeView), c a s thi t l p thu c tính ñ i tư ng
(Object Inspector), và c a s so n th o mã l nh (Code Editor). V i môi trư ng IDE này,
b n s có m t giao di n (Interface) ñ thi t k (Design), biên d ch (Compile) và g l i
(Debug) d án mà b n ñang phát tri n.
12. Chương 2: Borland Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT6
Hình 1: Giao di n c a d án m i t o trong Delphi 7
C a s chính c a Delphi 7
C a s thi t k bi u m u
C a s li t kê các ñ i tư ng d ng cây
C a s thi t l p các thu c tính và s ki n c a ñ i tư ng
C a s so n th o mã l nh
II.1. C a s chính c a Delphi
C a s chính c a Delphi chính là c a s có thành tiêu ñ ch a tên d án (Project
name) mà b n ñang phát tri n, nó bao g m th c ñơn chính (Main menu), thanh công c
(Toolbar), và b ng thành ph n (Component palette).
II.2. Thanh th c ñơn chính và thanh công c
II.2.1. Thanh th c ñơn chính
Bao g m các th c ñơn th xu ng (Drop-down menu) như: File, Edit, Search,
View,… và Help. Trong m i menu th xu ng có nhi u ch c năng khác nhau như: m m t
d án m i, lưu d án, biên d ch, g l i, ch y chương trình,… mà giáo trình s trình bày chi
ti t ph n sau.
13. Chương 2: Borland Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 7
Hình 2: Thanh th c ñơn chính
II.2.2. Thanh công c (Toolbars)
Trong Delphi có nhi u thanh công c , như: thanh công c chu n (Standard), thanh g
l i (Debug), thanh hi n th (View),… M i nút (Button) trên thanh công c thư ng là m t
thao tác hay m t l nh mà khi ta Click vào nó s thi hành, ví d như: Biên d ch (Compile),
ch y (Run) ho c k t thúc ch y chương trình (Program Reset), …
Hình 3: Các thanh công c
II.3. B ng ch a các thành ph n c a Delphi (Component Palette)
Thành ph n (Component), hay còn ñư c g i là ñi u khi n, chính là ñ i tư ng có s n
trong Delphi mà b n có th thao tác trên nó trong th i ñi m thi t k form. Có 2 lo i thành
ph n, ñó là thành ph n tr c quan (visual component): nhìn th y khi ch y chương trình, và
thành ph n không tr c quan (nonvisual component): không nhìn th y khi ch y chương
trình. M i thành ph n có m t s tính ch t riêng, và ñư c qu n lý thông qua các thu c tính
(Properties), s ki n (Events) và các phương th c (Methods). Các thu c tính này giúp b n
có th qu n lý và ñi u khi n chương trình c a b n. Khi b n ñ t m t thành ph n lên form,
thì nó s xu t hi n trong c a s Object TreeView và Object Inspector – s ñư c trình bày
ph n sau.
Trong b ng ch a các thành ph n có nhi u th (tab) khác nhau, như th Standard,
Addition, Win32, System, Data Access, ADO, Internet, Rave, Server,… Trên m i th ch a
các bi u tư ng (icon) ñ i di n cho các thành ph n.
Hình 4: B ng ch a các thành ph n trong th Standard
14. Chương 2: Borland Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT8
II.4. C a s thi t k bi u m u (Form Designer) và C a s so n th o mã l nh
(Code Editor)
II.4.1. C a s thi t k bi u m u
Khi b n t o m t d án m i, môi trư ng phát tri n tích h p IDE c a Delphi s t t o
ra m t bi u m u m i (Form) ñ b n tùy nghi thi t l p các giá tr c a thu c tính d a trên
Properties, và các th t c s ki n d a vào Events, ñư c xác ñ nh trong Object Inspector,
cho vi c thi t k chương trình. Trong h u h t trư ng h p, m t d án thư ng có ít nh t m t
form. Cùng v i các thành ph n trên b ng các thành ph n, b n s thi t k ñư c m t giao
di n cho chương trình mà b n ñang xây d ng là thân thi n nh t cho ngư i s d ng.
TLabel (StdCtrls) TEdit (StdCtrls)
TButton (StdCtrls)
TMemo (StdCtrls)
Hình 5: Form “Giai phuong trinh bac nhat” và các Components
Các giá tr c a form và các giá tr c a các component ñ t trên form ñư c lưu trong
t p tin form (form file) và có ph n m r ng .dfm, v i ph n tên ñư c xác ñ nh gi ng như
ph n tên c a ñơn v chương trình form. T p tin form này ch a ñ ng các giá tr c a form
cũng như các giá tr c a các component mà ta ñ t trên form trong quá trình thi t k .
II.4.2. C a s so n th o mã l nh
M i m t form trong d án ñư c qu n lý trong m t t p tin ñơn v chương trình (Unit
file/ Form unit), tên t p tin c a form unit này ñư c ñ t tên trong qua trình lưu (Save) và có
ph n m r ng là .pas, n i dung c a t p tin form unit này ch a ñ ng các khai báo thông
thư ng c a unit (s ñ c p chi ti t ph n sau) cũng như các hàm s ki n tương ng cho
form và các component trên nó.
15. Chương 2: Borland Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 9
Hình 6: C a s so n th o mã l nh cho form unit untPtb1.Pas
ð chuy n ñ i gi a c a s so n th o mã l nh v i c a s thi t k bi u m u, ta s
d ng ch c năng View/Toggle Form/Unit t main menu ho c gõ phím ch c năng F12.
Ví d 1: Trong project “Giai phuong trinh bac nhat” trên, ta lưu unit file v i tên
untPtb1.Pas và form file s ñư c t ñ ng ñ t theo là untPtb1.dfm
II.5. C a s thu c tính và s ki n c a ñ i tư ng (Object Inspector)
Hình 7: th Properties c a Form và th Events c a Button
C a s Object Inspector c a form hay component ñ u có 2 th : Properties và Events.
Th Properties dùng ñ xác ñ nh các tính ch t c a ñ i tư ng nói chung (Form, component)
hi n hành m t cách tr c quan, ch ng h n như Caption, Name, Position, Visible,… Th
Events dùng ñ l p trình s ki n: xác ñ nh nh ng ñáp ng c a ñ i tư ng khi nh n tác ñ ng
16. Chương 2: Borland Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT10
t chu t (Mouse) ho c bàn phím (Keyboard) như: nh p chu t (OnClick), ñóng c a s
(OnClose), gõ phím Enter (OnEnter),… thông qua các th t c s ki n.
Khi thay ñ i các giá tr trong th Properties trong quá trình thi t k , thì mã l nh
tương ng c a ñ i tư ng s ñư c thay ñ i theo trong c a s so n th o mã l nh.
II.6. C a s li t kê các ñ i tư ng d ng cây (Object TreeView)
Hình 8: C a s li t kê các ñ i tư ng d ng cây trên frmPTB1
Object TreeView li t kê các thành ph n tr c quan và không tr c quan mà b n ñ t
chúng trên form hi n hành. M i th i ñi m ch có m t form duy nh t ñư c li t kê.
III. C u trúc m t d án Delphi
III.1. T p tin d án: (Delphi project file)
Hình 9: T p tin d án prjPtb1.dpr
17. Chương 2: Borland Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 11
Khi b n b t ñ u m m i m t chương trình ng d ng b ng thao tác:
File/New/Application, Delphi 7 s t ñ ng t o ra m t t p tin d án có tên m c nhiên ban
ñ u là Project1. Khi b n lưu d án, Delphi s l n lư t nh c b n ñ t tên cho các form unit
và tên d án. ví d gi i phương trình b c nh t trên, form unit có tên là untPTB1.pas
và tên d án là prjPTB1.dpr. Ph n tên c a t p tin d án cũng chính là tên c a chương
trình, ñư c khai báo sau t khóa program.
B n chú ý: ti n t c a unit file là unt, còn project file là prj. Ví d như untPTB1.pas
và prjPTB1.dpr
ð hi n th t p tin d án, ta vào ch c năng Project/View Source
Mã l nh ngu n (Source code) ñư c Delphi t ñ ng sinh ra trong t p tin d án bao
g m:
- Tên chương trình, ñư c khai báo b i t khóa program, ñây cũng chính là tên
chương trình ng d ng (Application file).
- Các câu l nh ch d n t i các form và các unit ñư c s d ng trong d án ñư c
khái báo sau t khóa uses.
- Ch th biên d ch {$R *.res}: s d ng các t p tin tài nguyên (Resources).
- Kh i l nh thân chương trình chính, b t ñ u b i t khóa begin và k t thúc là end.
+ Initialize : Kh i ñ ng chương trình ng d ng.
+ CreateForm : T o form chính (Main form).
+ Run : Ch y chương trình ng d ng.
T p tin d án là t p tin trung tâm c a m t d án ñư c tri n khai b i Delphi. T p tin
này ch a ñ ng các tham kh o (Reference) t i t t c các file khác trong d án và liên k t
v i các form cũng như t p tin ñơn v (Unit file) kèm theo c a form. Khi chương trình ñư c
thi hành (Run, execute), nó s b t ñ u t t p tin d án này.
T p tin này ñư c t ñ ng sinh ra, và như v y, b n không nên thay ñ i n i dung c a
nó ngo i tr trong nh ng trư ng h p c n thi t.
T p tin d án ñư c lưu v i ph n m r ng .dpr
III.2. Các t p tin ch a mã l nh (Unit file)
Trong m i ng d ng ñư c vi t b i Delphi thư ng g m có 1 t p tin d án (Project file) và
nhi u t p tin ñơn v chương trình (Unit file) – xem l i ph n "C a s so n th o mã l nh"
ph n trên. M i khi ta thêm vào m i m t form (ho c Data Module, Frame,…) thì m t t p
tin unit s ñư c t o ra. Thông thư ng m t d án ñư c tri n khai trong th c t s có nhi u
t p tin unit này. N i dung t p tin unit này ch a ñ ng mã l nh c a chương trình và c a các
s ki n ñi u khi n (Event handles) trên form cũng trên các thành ph n (Component) mà
chúng ñư c ñ t trên nó.
Unit file ñư c lưu v i ph n m r ng là .pas
III.3. Các t p tin ñ c t bi u m u (Form file)
N i dung c a t p tin này xác ñ nh m t cách chi ti t các tính ch t hay thu c tính
(Properties) c a form và t t c các ñ i tư ng (nói chung) l p trình viên ñã thi t k . T p tin
này luôn ñi kèm v i m t t p tin unit file.
Form file ñư c lưu v i ph n m r ng là .dfm
ð hi n th n i dung t p tin này, b n RClick trên form r i ch n View as Text.
18. Chương 2: Borland Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT12
Ví d 2: Xem n i dung t p tin form file có tên untPTB1.dfm như sau:
T ch ñ thi t k c a form có tên là frmPTB1, b n RClick trên form r i ch n View
as Text như hình sau:
Hình 10: Chuy n cách hi n th t d ng Form sang d ng Text
N i dung c a t p tin untPTB1.dfm d ng văn b n s có như hình sau:
Hình 11: Hi n th d ng text c a untPTB1.dfm
ð chuy n ñ i t cách hi n th d ng Text sang d ng Form, ta s d ng ch c năng
RClick ch n ch c năng View as Form hay t h p phím Alt+F12:
19. Chương 2: Borland Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 13
Hình 12: Chuy n cách hi n th d ng Text sang d ng Form.
III.4. Các t p tin tài nguyên (Windows Resource File)
T p tin này cũng ñư c t ñ ng sinh ra. N i dung c a nó ch a ñ ng các thông tin v
phiên b n (Version) cũng như bi u tư ng c a ng d ng (Application icon) d ng mã nh
phân.
T p tin này có ph n m r ng .res
Ta có th m t p tin tài nguyên này ch ñ thi t k (Design) b ng chương trình
Image Editor ñư c kèm theo b Delphi.
Hình 13: Giao di n chương trình x lý nh – Image Editor
20. Chương 2: Borland Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT14
IV. Các thao tác cơ b n trên Delphi
IV.1. M m t d án m i
ð t o m t d án m i, b n s d ng l nh File/New/Application. Hình nh m t d án
m i t o như hình sau:
Hình 14: D án m i t o
IV.2. Lưu d án
M t d án trong Delphi s sinh ra khá nhi u t p tin. Do v y, khi lưu d án, b n c n
ph i t o ra 1 thư m c ñ ch a các t p tin trong d án ñó. Quá trình lưu d án như sau:
ð lưu m t d án, b n s d ng l nh: File/Save All hay t h p phím Shift+Ctrl+S.
Thông thư ng b n ph i lưu các form trư c (m i form là m t t p tin unit có ph n m r ng
là pas), r i sau ñó m i lưu t p tin d án (ph n m r ng là dpr).
Ví d 3: Lưu d án hi n th câu "Hello world!..." ch có m t form, vào thư m c
S:HelloWorld như sau:
Hình 15: C a s thi t k Form
21. Chương 2: Borland Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 15
- T c a s thi t k , ch n l nh File/Save All, Delphi s xu t hi n ra c a s "Save
Uniti File" (v i i =1..n) như sau:
Hình 16: H p tho i Save Uniti As
Click ch n h p li t kê th "Save in" ñ ch n ñĩa S: như hình sau:
Hình 17: H p tho i Save Uniti As: Ch n ñĩa
22. Chương 2: Borland Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT16
Ti p ñ n, Click ch n bi u tư ng "Create New Folder" ñ t o thư m c m i ch a các
t p tin c a d án mà b n mu n lưu (thư m c HelloWorld).
Hình 18: H p tho i Save Uniti As: T o thư m c
Sau khi t o thư m c xong, b n Click nút l nh Open ñ m thư m c HelloWorld ra.
Hình 19: H p tho i Save Uniti As: M thư m c
23. Chương 2: Borland Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 17
Ti p ñ n, b n gõ tên t p tin unit mà b n mu n lưu vào trong h p li t kê th "File
name", ñây là tên untHelloWorld.pas, r i Click Save.
Hình 20: H p tho i Save Uniti As: Nh p vào tên t p tin unit
ð n ñây, Delphi s ti p t c xu t hi n h p tho i "Save Projecti As" ñ b n lưu t p tin
d án. B n gõ vào tên t p tin d án vào trong h p li t kê th "File name", ví d này là tên
prjHelloWorld.dpr, và Click Save.
Hình 21: H p tho i Save Projecti As: Nh p tên t p tin d án
24. Chương 2: Borland Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT18
D án ñã ñư c lưu và ñ t tên xong. Sau vi c này, n u b n có ch nh s a chương trình,
ñ lưu l i nh ng s thay ñ i này, b n ch c n ra l nh File/Save All ñ Delphi t ñ ng lưu
toàn b l i d án.
Hình dư i ñây cho b n th y s lư ng các t p tin trong m t d án Hello World ñã
ñư c lưu, thông qua c a s Windows Explorer như sau:
Hình 22: Các t p tin c a d án Hello Wolrd trong thư m c S:HelloWorld
IV.3. Lưu Form (t p tin unit) v i tên khác
B n ch n l nh File/Save As ñ lưu.
IV.4. Lưu d án v i tên khác
B n ch n l nh File/Save Project As ñ lưu d án.
IV.5. ðóng d án
B n ch n l nh File/Close All ñ ñóng l i toàn b d án.
IV.6. Thoát kh i Delphi
Sau khi lưu l i toàn b d án. ð thoát kh i Delphi, b n s d ng l nh: File/Exit
25. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal)
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 19
CHƯƠNG 3: CÁC THÀNH PH N CƠ B N C A NGÔN NG
DELPHI (OBJECT PASCAL)
Trong chương này và chương 4 ti p theo sau, ñ giúp cho vi c làm quen v i các khái
ni m cơ b n ñư c d dàng. Giáo trình s xây d ng các ví d theo d ng chương trình ch
ñ văn b n (Text mode) hay không h tr ñ ho (Console Application). ð t o m t
project m i theo d ng Console Application, b n s d ng ch c năng
File/New/Other/Console Application.
I. B ch vi t
- B 26 ch Latin:
o Ch in : A, B, C, ..., X, Y, Z
o Ch thư ng : a, b, c, ..., x, y, z
- B ch s th p phân : 0, 1, 2, 3, ..., 8, 9
- Ký t g ch n i : _
- Các ký hi u toán h c : +, -, *, /, =, <, >, (, ), [, }
II. T khóa
Là các t riêng c a Object Pascal, có ng nghĩa ñã ñư c xác ñ nh, không ñư c dùng
nó vào các vi c khác ho c ñ t tên m i trùng v i các t khóa.
T khóa chung: program, begin, end, procedure, function
- T khóa ñ khai báo: const, var, type, array, string, record, set, file, label, class,...
- T khóa c a l nh l a ch n: if ... then ... else, case ... of
- T khóa c a l nh l p: for... to... do, for... downto... do, while... do, repeat...
until
- T khóa ñi u khi n: with, goto, exit, halt
- T khóa toán t : and, or, not, in, div, mod
Dư i ñây là danh sách m t s t khóa thông d ng:
and
array
begin
case
class
const
div
do
downto
for
function
goto
if
implementation
interface
label
mod
object
record
repeat
set
to
try
type
unit
until
uses
26. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal).
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT20
else
end
finalization
finally
of
procedure
program
property
var
while
with
B ng 1: Các t khoá
III. Tên danh hi u t ñ t
Trong Delphi ñ ñ t tên cho các bi n, h ng, ki u, chương trình con ta dùng các danh
hi u (Identifier). Quy t c ñ t tên c a danh hi u trong Delphi là:
- Chi u dài t i ña: 256 ký t .
- B t ñ u b ng ch cái ho c d u _ (g ch dư i); ti p theo có th k t h p s và các
ký t khác.
- Không ñ c ch a kho ng tr ng.
- Không trùng v i các t khóa.
- Không phân bi t ch hoa và ch thư ng.
- Các ñ nh danh l ng nhau ñư c dùng d u . (d u ch m) ñ truy xu t.
Ví d 1:
- Danh hi u t ñ t h p l : x; s1; delta; pt_bac_2;
- Danh hi u t ñ t không h p l : 1S (b t ñ u b ng s ), Del ta (tên có kho ng
tr ng),...
IV. H ng
IV.1. Khái ni m
H ng là m t ñ i lư ng có giá tr không ñ i trong quá trình ch y chương trình. Ta
dùng tên h ng ñ chương trình ñư c rõ ràng và d s a ñ i.
Cú pháp khai báo:
Const
Tên_h ng = bi u_th c_xác_ñ nh_giá_tr _c a_h ng;
IV.2. H ng tr
Trong trư ng h p này thì bi u_th c_xác_ñ nh_giá_tr _c a_h ng là m t tr xác ñ nh.
Giá tr c a bi u th c này s ñư c ñ nh tr m t l n và không thay ñ i.
Ví d 2:
Const MaxSize = 100;
Const x = Abs(-100)+Length('Chao ban'); // h ng x =108
Const St = 'Borland'+ ' Delphi'; // h ng St = 'Borland Delphi'
27. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal)
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 21
Chú ý: Bi u th c h ng ñây có th là s , chu i ký t , các h ng true, false, nil,… k t
h p v i các toán t thích h p. Bi u th c h ng không th ch a các l i g i hàm, bi n hay
con tr , ngo i tr m t s hàm ñơn gi n như: Abs, Chr, Length, Succ, Odd,…
IV.3. H ng ñ nh ki u:
Có th ch a các giá tr ki u m ng, b n ghi, ki u th t c và ki u con tr .
Cú pháp khai báo h ng ñ nh ki u:
Const
Tên_h ng: ki u_d _li u = giá_tr _h ng;
Ví d 3:
Const MaxSize : Integer =100;
Trong ví d trên chúng ta khai báo m t h ng có tên là MaxSize, có ki u Integer và
mang giá tr b ng 100. Chúng ta th y, cách khai báo h ng ki u này r t gi ng khai báo và
kh i t o bi n (chúng ta s xem trong ph n bi n). N u ngư i l p trình b t ch th biên d ch
{$J+} thì h ng ñư c xem như bi n; t c là chúng ta có th thay ñ i giá tr c a h ng lúc
chương trình th c thi.
H ng m ng, h ng ki u b n ghi, h ng ki u th t c chúng ta s tìm hi u chi ti t trong
các ph n sau.
V. Ki u (Type)
V.1. Ð nh nghĩa
Ngoài các ki u ñã ñ nh s n, Delphi còn cho phép ta ñ nh nghĩa các ki u d li u khác
t các ki u căn b n theo qui t c xây d ng c a Delphi.
V.2. Cách khai báo
Type
Tên_ki u = Mô_t _xây_d ng_ki u;
Ví d 4: ð nh nghĩa các ki u d li u ngư i dùng (ki u d li u m i) và khai báo
bi n theo ki u v a ñ nh nghĩa
type //Khai báo ki u ngư i dùng
SoNguyen = integer;
Diem = single;
Tuoi = 1 .. 100;
Color = (Red, Blue, Green);
Thu = (ChuNhat, Hai, Ba, Tu, Nam, Sau, Bay);
Và khi ñã khai báo ki u thì ta có quy n s d ng ki u ñã ñ nh nghĩa ñ khai báo bi n
như sau:
var //Khai báo bi n theo ki u ngư i dùng ñ nh nghĩa
i, j: SoNguyen;
dtb: Diem;
t: Tuoi;
28. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal).
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT22
mau: Color;
ngay_hoc: Thu;
VI. Bi n
Bi n là m t c u trúc ghi nh có tên (ñó là tên bi n hay danh hi u c a bi n). Bi n ghi
nh m t d li u nào ñó g i là giá tr (value) c a bi n. Giá tr c a bi n có th ñư c bi n ñ i
trong th i gian s d ng bi n.
S truy xu t c a bi n nghĩa là ñ c giá tr hay thay ñ i giá tr c a bi n ñư c th c hi n
thông qua tên bi n.
Cú pháp khai báo bi n:
Var
tên_bi n [ho c danh_sách_tên_bi n] : Ki u_bi n;
N u chúng ta khai báo m t danh sách các bi n có cùng ki u thì m i tên bi n cách
nhau m t d u ph y. Ki u bi n là m t ki u d li u chu n trong Delphi ho c ki u ñư c ñ nh
nghĩa b i ngư i dùng.
Ví d 5:
var a : extended ; // khai báo a là m t bi n ki u s th c
b, c : integer ; // khai báo 2 bi n b, c có ki u s nguyên
hten : shortstring;
m_Ok: boolean; // khai báo m_Ok là m t bi n ki u logic
Chon : char; // khai báo Chon là m t bi n ki u ký t
C n khai báo các bi n trư c khi s d ng chúng trong chương trình. Khai báo m t
bi n là khai báo s t n t i c a bi n ñó và cho bi t nó thu c ki u gì.
VII. Bi u th c
VII.1. ð nh nghĩa
M t bi u th c là m t công th c tính toán bao g m các phép toán (toán t ), h ng,
bi n, hàm và các d u ngo c.
Ví d 6:
5 + u * sqrt(t) / sin(pi/2) ;
(a=5) and (b<>7) or (c >= 10);
max(x,y); // g i hàm
Trong ñó: a, b, c, x, y, u, t là các bi n ñã ñư c khai báo.
VII.2. Th t ưu tiên
Toán t :
Trong Delphi g m có các toán t ñư c phân chia như sau:
- Toán t s h c : +, -, *, /, div, mod
29. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal)
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 23
- Toán t logic : not, and, or, xor
- Toán t quan h : =, >, <, <>, <=, >=
- Toán t bitwise : not, and, or, xor, shl, shr
- Toán t làm vi c trên t p h p : +, -, *, /, <=, >=, <>*, in
- Toán t thao tác trên con tr : +, -, @ , ^, =, <>
- Toán t x lý l p ñ i tư ng : as, is
Khi tính giá tr c a m t bi u th c, ngôn ng Delphi qui ư c th t ưu tiên c a các
phép toán t cao ñ n th p như sau:
Phép toán Th t ưu tiên
@, not ưu tiên 1
*, /, div, mod, and, shl, shr, as ưu tiên 2
+, -, or, xor ưu tiên 3
=, <>, <, >, <=, >=, in, is ưu tiên 4
B ng 2: Th t ưu tiên toán t
Qui ư c tính th t ưu tiên:
Khi tính m t bi u th c có 3 qui t c v th t ưu tiên như sau:
Qui t c 1. Các phép toán nào có ưu tiên cao hơn s ñư c tính trư c.
Qui t c 2. Trong các phép toán có cùng th t ưu tiên thì s tính toán s ñư c th c
hi n t trái sang ph i.
Qui t c 3. Ph n trong ngo c t trong ra ngoài ñư c tính toán ñ tr thành m t giá
tr ñơn.
VIII. Chuy n ki u (Typecast)
Chuy n ki u hay còn g i là ép ki u là m t k thu t ñư c dùng ñ chuy n giá tr c a
m t bi u th c sang m t ki u d li u khác.
Cú pháp chuy n ñ i ki u d li u: Tên_Ki u(bi u_th c);
V i bi u_th c là m t h ng, thì ta có cách chuy n ki u theo giá tr (value typecasts),
còn v i bi u_th c là m t bi n, thì ta có cách chuy n ki u theo bi n (variable typecasts).
Ví d 7: Chuy n ki u theo tr :
t := integer('A'); // chuy n ký t A sang s , t = 65
v := char(65); // chuy n s sang ký t , v = 'A'
b := boolean(0); // chuy n s sang ki u Booblean, b = False
Ví d 8: Chuy n ki u theo bi n:
var MyChar: char;
Shortint(MyChar) := 122; // Gán ký t 'z' vào bi n MyChar
30. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal).
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT24
Ví d 9: Vi t chương trình minh ho 2 cách chuy n ki u theo tr và theo bi n:
T File/New/Other, DClick vào Console Application ñ m ra 1 d án m i và nh p
các dòng l nh ñ hoàn ch nh như hình sau:
Hình 1: Chương trình chuy n ki u Console mode
Nh n t h p phím Ctrl+F9 ñ biên d ch l i.
Nh n phím ch c năng F9 ñ ch y chương trình, và ta có k t qu ch ñ Console
như sau:
Hình 2: K t qu ch y chương trình.
IX. L i chú thích và các ch d n biên d ch
Trong Delphi có 3 cú pháp ñ ghi chú thích như sau:
{ chú thích ghi trong c p d u ngo c móc }
(* chú thích ñư c bao b i c p d u ngo c và d u sao*)
// chú thích trên m t dòng
Hai ki u chú thích khác nhau có th th c hi n chú thích l ng nhau nhưng cùng ki u
thì không ñư c phép l ng nhau.
31. Chương 3: Các thành ph n cơ b n c a ngôn ng Delphi (Object Pascal)
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 25
X. C u trúc m t d án ch ñ Form (Form Application)
C u trúc c a m t d án (project) trong Delphi g m 2 ph n chính:
Ph n 1: Là t p tin d án (Project file)
Hình 3: Project file.
Ph n 2: Là (các) t p tin ñơn v chương trình (Unit file)
Hình 4: K t qu ch y chương trình.
32. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT26
CHƯƠNG 4: CÁC KI U D LI U SƠ C P CHU N, L NH ðƠN
I. Các ki u d li u sơ c p (Simple type)
I.1. Ki u s nguyên (Integer)
Ki u s nguyên bi u di n m t t p h p con các s . Delphi phân làm hai lo i s
nguyên ñư c ñ nh nghĩa b i các t khóa như sau:
T khóa Ph m vi Kích thư c
Integer -2147483648..2147483647 s nguyên có d u 32 bit
Cardinal 0..4294967295 s nguyên dương 32 bit
B ng 1: Ki u nguyên
Trong ñó, ki u Integer còn ñư c chia ra thành m t s t p con ñư c ñ nh nghĩa b i
các t khóa sau:
T khóa Ph m vi Kích thư c
Shortint -128..127 S nguyên có d u 8 bit
Smallint -32768..32767 S nguyên có d u 16 bit
Longint -2147483648..2147483647 S nguyên có d u 32 bit
Int64 -2^63..2^63-1 S nguyên có d u 64 bit
Byte 0..255 S nguyên dương 8 bit
Word 0..65535 S nguyên dương 16 bit
Longword 0..4294967295 S nguyên dương 32 bit
B ng 2: Các ki u nguyên
I.2. Ki u ký t (Char)
Ki u ký t cơ b n bao g m AnsiChar và WideChar. AnsiChar là ki u ký t thông
thư ng, chi m kích thư c m t byte (tương t b ký t ASCII mà giáo trình s ñ c p
ph n ti p theo). WideChar là ki u ký t hai byte, là ki u ký t dùng ñ bi u di n b mã
Unicode cho t p h p ký t .
Tuy nhiên, các b n v n có th khai báo s d ng ki u ký t v i t khóa Char. Và trên
th c t thì ki u Char tương ñương v i ki u AnsiChar. Ngoài Char và AnsiChar, Delphi còn
h tr t p ký t m t byte thông qua các ki u: PChar, PAnsiChar và AnsiString. Tương t
thì Delphi cũng h tr t p ký t Unicode (ngoài ki u WideChar) thông qua các ki u:
PWideChar, WideString.
M t ký t ñư c vi t trong c p d u nháy ñơn (''). Ð ti n trao ñ i thông tin c n ph i
s p x p, ñánh s các ký t , m i cách s p x p như v y g i là b ng mã. B ng mã thông d ng
hi n nay là b ng mã ASCII (American Standard Code for Information Interchange). H mã
ASCII dùng nhóm 7 bit ho c 8 bit ñ bi u di n t i ña 128 ho c 256 ký t khác nhau và mã
hóa theo ký t liên t c theo cơ s 16.
33. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 27
H mã ASCII 7 bit, mã hoá 128 ký t liên t c như sau:
0 : NUL (ký t r ng)
1 – 31 : 31 ký t ñi u khi n
32 – 47 : các ký t kho ng tr ng SP (space) ! “ # $ % & ‘ ( ) * + , - . /
48 - 57 : ký s t 0 ñ n 9
58 - 64 : các d u : ; < = > ? @
65 - 90 : các ch in hoa t A ñ n Z
91 – 96 : các d u [ ] _ `
97 – 122 : các ch thư ng t a ñ n z
123 – 127 : các d u { | } ~ DEL (xóa)
H mã ASCII 8 bit (ASCII m r ng) có thêm 128 ký t khác ngoài các ký t nêu
trên, g m các ch cái có d u, các hình v , các ñư ng k khung ñơn và khung ñôi và m t s
ký hi u ñ c bi t.
Ð th c hi n các phép toán s h c và so sánh, ta d a vào giá tr s th t mã ASCII
c a t ng ký t , ch ng h n: 'A' < 'a' vì s th t mã ASCII tương ng là 65 và 97.
Hàm Chr(n): Tr v ký t tương ng v i s th t mã ASCII n.
Hàm Ord(ch): Tr v s th t c a ký t ch trong b ng mã ASCII.
Ví d 1: V i khai báo bi n var ch: char; stt:byte; thì các câu l nh sau s
có giá tr như sau:
ch := chr(65); //ch = 'A'
stt := ord('A'); //stt = 65
34. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT28
B NG MÃ ASCII v i 128 ký t chu n
Hex 0 1 2 3 4 5 6 7
0 NUL
0
DLE
16
SP
32
0
48
@
64
P
80
`
96
p
112
1 SOH
1
DC1
17
!
33
1
49
A
65
Q
81
a
97
q
113
2 STX
2
DC2
18
“
34
2
50
B
66
R
82
b
98
r
114
3 ♥
3
DC3
19
#
35
3
51
C
67
S
83
c
99
s
115
4 ♦
4
DC4
20
$
36
4
52
D
68
T
84
d
100
t
116
5 ♣
5
NAK
21
%
37
5
53
E
69
U
85
e
101
u
117
6 ♠
6
SYN
22
&
38
6
54
F
70
V
86
f
102
v
118
7 BEL
7
ETB
23
‘
39
7
55
G
71
W
87
g
103
w
119
8 BS
8
CAN
24
(
40
8
56
H
72
X
88
h
104
x
120
9 HT
9
EM
25
)
41
9
57
I
73
Y
89
I
105
y
121
A LF
10
SUB
26
*
42
:
58
J
74
Z
90
j
106
z
122
B VT
11
ESC
27
+
43
;
59
K
75
[
91
k
107
{
123
C FF
12
FS
28
,
44
<
60
L
76
92
l
108
|
124
D CR
13
GS
29
-
45
=
61
M
77
]
93
m
109
}
125
E SO
14
RS
30
.
46
>
62
N
78
^
94
n
110
~
126
F SI
15
US
31
/
47
?
63
O
79
_
95
o
111
DEL
127
Hình 1: B ng mã ASCII chu n
35. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 29
B NG MÃ ASCII v i 128 m r ng
Hex 8 9 A B C D E F
0 Ç
128
É
144
á
160
░
176
└
192
╨
208
α
224
≡
240
1 ü
129
æ
145
í
161
▒
177
┴
193
╤
209
ß
225
±
241
2 é
130
Æ
146
ó
162
▓
178
┬
194
╥
210
Γ
226
≥
242
3 â
131
ô
147
ú
163
│
179
├
195
╙
211
π
227
≤
243
4 ä
132
ö
148
ñ
164
┤
180
─
196
╘
212
Σ
228
⌠
244
5 à
133
ò
149
Ñ
165
╡
181
┼
197
╒
213
σ
229
⌡
245
6 å
134
û
150
ª
166
╢
182
╞
198
╓
214
µ
230
÷
246
7 ç
135
ù
151
º
167
╖
183
╟
199
╫
215
τ
231
≈
247
8 ê
136
ÿ
152
¿
168
╕
184
╚
200
╪
216
Φ
232
°
248
9 ë
137
Ö
153
⌐
169
╣
185
╔
201
┘
217
Θ
233
·
249
A è
138
Ü
154
¬
170
║
186
╩
202
┌
218 234
·
250
B ï
139
¢
155
½
171
╗
187
╦
203
█
219
δ
235
√
251
C î
140
£
156
¼
172
╝
188
╠
204
▄
220
∞
236
ⁿ
252
D ì
141
¥
157
¡
173
╜
189
═
205
▌
221
φ
237
²
253
E Ä
142
₧
158
«
174
╛
190
╬
206
▐
222
ε
238
■
254
F Å
143
ƒ
159
»
175
┐
191
╧
207
▀
223
∩
239 255
Hình 2: B ng ASCII m r ng
36. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT30
Ví d 2: Vi t chương trình in ra 256 ký t c a b ng mã ASCII:
T File/New/Other, DClick vào Console Application ñ m ra 1 d án m i và nh p
các dòng l nh ñ hoàn ch nh như hình sau:
Hình 3: Chương trình in b ng mã ASCII
Nh n t h p phím Ctrl+F9 ñ biên d ch l i.
Nh n phím ch c năng F9 ñ ch y chương trình, và ta có k t qu ch ñ Console
như sau:
Hình 4: K t qu chương trình ch ñ Console
I.3. Ki u s th c (Real type)
I.3.1. Khái ni m
Delphi, ki u s th c bi u di n m t t p h p các s mang d u ch m ñ ng (float,
real). Kích thư c c a nó tùy thu c vào t khóa mà chúng ta s d ng trong khai báo.
37. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 31
T khóa Ph m vi Kích thư c
(byte)
Real48 2.9 x 10^-39 .. 1.7 x 10^38 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 10
Comp -2^63+1 .. 2^63 -1 8
Currency -922337203685477.5808..
922337203685477.5807
8
B ng 3: Các t khoá c a ki u th c
Tuy nhiên, ki u s th c chúng ta thư ng dùng ñư c khai báo b ng t khóa Real,
trong Delphi ki u Real tương ñương v i ki u Double.
T khóa Ph m vi Kích thư c
(byte)
Real 5.0 x 10^-324 .. 1.7 x 10^308 8
B ng 4: Ki u Real
I.3.2. M t s phép toán và hàm trên ki u s (s nguyên và s th c)
Các phép toán s h c hai ngôi:
Phép toán Ý nghĩa Ki u toán h ng Ki u k t qu
+ C ng integer, real integer, real
- Tr integer, real integer, real
* Nhân integer, real integer, real
/ Chia th c integer, real real
div Chia nguyên integer integer
mod L y ph n dư integer integer
B ng 5: Các phép toán 2 ngôi
Ví d 3: V i các bi n x, y, z ki u integer
x := 3*2; // x = 6
y := 15 div 6; // t = 2
z := 15.5 mod 5; // l i
Tuy nhiên, phép toán + và toán - còn có th là phép toán m t ngôi:
Phép toán Ý nghĩa Ki u toán h ng Ki u k t qu Ví d
+ (unary) d u dương integer, real integer, real +7
- (unary) d u âm (l y s ñ i) integer, real integer, real -7
B ng 6: Các phép toán 1 ngôi
38. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT32
Khi th c hi n các phép toán chúng ta c n chú ý m t s ñi m ñ c bi t sau:
- K t qu c a phép chia th c (/) luôn luôn có ki u Extented, không quan tâm ñ n
ki u c a các toán h ng.
- Phép toán mod là phép toán l y ph n dư.
- Khi th c hi n phép chia x/y (hay là x mod y ho c x div y) thì y ph i khác 0, n u y
có giá tr 0 thì chương trình s phát sinh l i.
M t s hàm chuy n ñ i ki u d li u:
function IntToStr ( Number : Integer ) : string; //Unit: SysUtils
function IntToStr ( BigNumber : Int64 ) : string; //Unit: SysUtils
Hàm IntToStr là hàm th c hi n vi c chuy n ñ i m t s nguyên (ho c s int64) thành
m t chu i s .
function FloatToStr(Value: Extended): string; //Unit: SysUtils
function FloatToStr(Value: Extended; const FormatSettings: TFormatSettings): string;
Hàm FloatToStr chuy n ñ i m t s th c hay s d u ch m ñ ng (Value) thành m t
chu i bi u di n tương ng cho s ñó.
B ng dư i ñây là các hàm liên quan ñ n ki u s :
Hàm Ý nghĩa
abs(x); |x| : l y giá tr tuy t ñ i c a s x
arctan(x:extended): extended; arctang(x)
cos(x: extended): extended; cos(x) : l y cos c a x
exp(x: real): real; ex
frac(x:extended): extended; Tr v ph n th p phân c a bi n x
inc(var x [ ; n: longint ] ); tăng bi n x lên 1 ho c n giá tr
int(x: extended): extended; Tr v ph n nguyên c a bi n x
ln(x); ln x : l y logarit nepe c a tr x (e ≅ 2.71828)
max(a,b:numbertype):numbertype; Tr v s l n hơn trong hai s a và b.
min(a,b:numbertype):numbertype; Tr v s nh thua trong hai s a và b.
odd(n:integer|int64):boolean;
Ki m tra n có ph i là s l hay không:
True: N u n l
False: N u n ch n.
pi: extended; Tr v giá tr pi=3.1415926535897932385.
random[( range: integer)];
Tr v m t s ng u nhiên x và 0 <= x < range,
n u range không ch ra thì 0 <= x < 1.
sqr(x); x2
: l y bình phương tr s x
sqrt(x); : l y căn b c 2 c a x
sin(x); sin (x) : l y sin c a x
succ(x); Tr v giá tr sau c a x
39. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 33
trunc(x: extended): int64; L y ph n nguyên c a x
round(x: extended): int64; Làm tròn giá tr c a x, l y s nguyên g n x nh t
B ng 7: Các hàm x lý s
Ví d 4: Vi t chương trình tính chu vi và di n tích c a hình ch nh t:
T File/New/Other, DClick vào Console Application ñ m ra 1 d án m i và nh p
các dòng l nh ñ hoàn ch nh như hình sau:
Hình 5: Chương trình tính chu vi di n tích hình ch nh t
Nh n t h p phím Ctrl + F9 ñ biên d ch l i.
Nh n phím ch c năng F9 ñ ch y chương trình, và ta có k t qu ch ñ Console
như sau:
Hình 6: K t qu chương trình ch ñ Console
40. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT34
I.4. Ki u logic (Boolean)
I.4.1. Khái ni m
M t d li u thu c ki u boolean là m t ñ i lư ng có th nh n ñư c m t trong hai giá
tr logic là true (ñúng) và false (sai). Delphi cung c p 4 ki u boolean sau:
T khóa Kích thư c (byte)
Boolean 1
ByteBool 1
WordBool 2
LongBool 4
B ng 8: Ki u logic
Trong ñó, ki u Boolean là ki u tương thích v i ki u Boolean c a Pascal và ñư c ưa
thích hơn c . M t giá tr ki u ByteBool, LongBool ho c WordBool ñư c xem là true n u
nó có giá tr khác 0, ngư c l i là false.
I.4.2. Phép toán Boolean
T khóa Ý nghĩa
Not Phép toán ph ñ nh
And Phép toán và
Or Phép toán ho c
B ng 9: Các phép toán trên ki u logic
Cú pháp:
• Phép toán and: (x1) and (x2) and ... and (xn) tr v k t qu là true khi t t c các
toán h ng là true, ngư c l i tr v false.
• Phép or: (x1) or (x2) or ... or (xn) cho k t qu là false khi t t c các toán h ng là
false, ngư c l i tr v true.
Ví d 5: Ví d : v i x, y, z ki u boolean, ta có:
x := (2<3) and (5<5) and (0<>1); // x = False
y := (2>3) or (5>5) or (0<>1); // y = True
z := not (y); // z = False
ð hi n th giá tr boolean lên màn hình, b n s d ng hàm có s n trong Delphi:
function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;
N u b n mu n hi n th giá tr c a B là chu i ký t True ho c False thì cho
UseBoolStrs = True; còn n u mu n hi n th giá tr c a B là '-1' ho c '0' thì thì cho
UseBoolStrs = False.
II. Câu l nh (statement)
Trong m t chương trình Delphi, sau ph n mô t d li u là ph n mô t các câu l nh.
Các câu l nh có nhi m v xác ñ nh các công vi c mà máy tính ph i th c hi n ñ x lý các
d li u ñã ñư c mô t và khai báo. Câu l nh ñư c chia thành câu l nh ñơn gi n và câu l nh
có c u trúc.
41. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 35
Các câu l nh ph i ñư c ngăn cách v i nhau b i d u ch m ph y (;) và các câu l nh
có th vi t trên m t dòng hay nhi u dòng.
III. L nh ñơn (Simple statement)
L nh ñơn là l nh không ch a b t kỳ câu l nh nào khác. Các l nh ñơn bao g m: l nh
gán, l nh g i hàm và th t c, l nh nh y (goto).
IV. L nh gán (Assignment statement)
M t trong các l nh ñơn gi n và cơ b n nh t c a Delphi là l nh gán. M c ñích c a
l nh này là gán cho m t bi n ñã khai báo m t giá tr nào ñó cùng ki u (hay tương thích)
v i bi n.
Cú pháp c a l nh gán là:
Bi n := bi u_th c;
L nh gán s ñ t l i giá tr hi n hành c a bi n b ng giá tr m i n m bên ph i toán t
gán (d u hi u :=).
Ví d 6: Khi ñã khai báo
var
c: char; i: integer;
x: real; p, q: boolean;
thì ta có th có các phép gán sau:
c := 'A'; c := chr(90);
i := 35; i := i div 7;
x := 0.5; x := i + 1;
p:= (i >= 1) and (i < 100); q := not p;
Ý nghĩa:
Bi n và các phát bi u gán là các khái ni m quan tr ng c a m t h các ngôn ng l p
trình, chúng ph n ánh cách th c ho t ñ ng c a máy tính, ñó là:
- Lưu tr các giá tr khác nhau vào m t ô nh t i nh ng th i ñi m khác nhau.
- M t quá trình tính toán có th coi như là m t quá trình làm thay ñ i giá tr c a
m t (hay m t s ) ô nh nào ñó, cho ñ n khi ñ t ñư c giá tr c n tìm.
V. L nh g i th t c và hàm
Trong l p trình OOP, thu t ng hàm (Function), th t c (Procedure) và phương th c
(Method) là khái ni m quen thu c v i ngư i l p trình. ð các b n có th n m b t ñư c
ki n th c l p trình trong Delphi, Giáo trình ñưa ra trư c khái ni m này m t cách ng n g n
như sau:
Hàm và th t c ñư c g i chung là chương trình con. Hàm ñư c xây d ng thông qua
tên hàm và danh sách các tham s hình th c n u có, m i hàm thì luôn tr v duy nh t 1
giá tr . Còn th t c thì có tên th t c và danh sách các tham s hình th c n u có. Khác v i
42. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT36
hàm, th t c KHÔNG tr v m t giá tr nào c , nó thư ng bao g m m t dãy các câu
l nh c n ñư c th c hi n m t cách tu n t ñ gi i quy t m t công vi c nào ñó.
B n c n phân ra 2 giai ño n rõ ràng: Xây d ng chương trình con, và s d ng chương
trình con.
Ví d 7: V hàm - Function
- Xây d ng hàm: B n vi t hàm tính t ng 2 s a và b và k t qu tr v c a hàm chính
là k t qu a + b. Nó có hình d ng như sau:
function Cong(a, b: single) : single;
begin
Cong := a + b;
end;
- S d ng hàm (L i g i hàm): b n c n tính phép c ng c a 2 con s c th nào,
ch ng h n b n mu n 5 c ng v i 7, thì như v y b n s truy n s 5 vào cho a và 7
vào cho b. C th b n s g i như sau:
mTong := Cong(5,7); //v i bi n mTong ki u Single và mTong = 12
Như v y bư c xây d ng: a và b ñư c g i là tham s hình th c. Còn bư c g i hàm thì 5
và 7 ñư c g i là các tham s th c.
Ví d 8: V th t c – Procedure
- Xây d ng th t c: B n vi t th t c hi n th ra màn hình n câu chào “Welcome to
Delphi!…”, v i n có th là 1 l n, 3, 10, … 100 l n ch ng h n:
procedure Welcome(n: integer);
var i: integer;
begin
for i:=1 to n do writeln (‘Welcome to Delphi!…’);
end;
- S d ng th t c (L i g i th t c): ñây mu n hi n th 5 câu chào, thì b n ra câu
l nh như sau:
Welcome(5); //Hi n th 5 câu chào
Khái ni m phương th c trong m t l p cũng ñư c xem là th t c ho c hàm (Member
method). Ki n th c này các b n s ñư c h c chương 5. ñây, các b n c n chú ý ñi u
này: Phương th c là chương trình con mà Delphi ñã xây d ng s n trong m i l p/thành
ph n (Class/Component) cho b n (Th t kh e làm sao!…), b n ch c n l y trong “túi khôn”
c a Delphi ñ s d ng vi t chương trình mà thôi.
Tóm l i: Khi s d ng phương th c hay các chương trình con ñã ñư c xây d ng s n
b i Deplhi, b n c n n m rõ m i phương th c, th t c ho c hàm có bao nhiêu tham s hình
th c và ki u c a chúng là gì ñ truy n vào cho chúng các tham s th c tương ng cho
ñúng yêu c u c a b n.
Ví d v i cú pháp th t c có s n trong Delphi là:
procedure ShowMessage(const Msg: string);
thì b n ch c n l y ra s d ng v i câu l nh ñơn gi n như sau:
ShowMessage(‘Toi dang hoc Delphi day nhe!…’);
Các b n s ñư c h c chi ti t các khái ni m này trong chương “L p Trình X Lý S
Ki n” và “Chương Trình Con” các ph n sau.
43. Chương 4: Các ki u d li u sơ c p chu n, l nh ñơn
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 37
VI. L nh Goto
T thân chương trình con, b n có th s d ng l nh goto ñ chuy n hư ng th c hi n
chương trình t i m t v trí b t kỳ thông qua m t nhãn ñã ñư c khai báo trư c.
Cú pháp l nh goto: Goto nhãn;
V i nhãn ñư c khai báo v i cú pháp sau: Label Tên_nhãn;
L nh goto là l nh nh y không ñi u ki n, nó chuy n hư ng th c thi c a chương trình
ñ n v trí mà nhãn ñang ñ ng.
Trong phong cách l p trình OOP, l nh goto t ra b l i th i và r t ít khi ñư c dân l p
trình s d ng.
Ví d 9: Minh h a l nh goto ñ tính bi u th c a/b.
T File/New/Other, DClick vào Console Application ñ m ra 1 d án m i và nh p
các dòng l nh ñ hoàn ch nh như hình sau:
Hình 7: Ví d minh h a l nh goto và khai báo nhãn - label
Nh n phím ch c năng F9 ñ ch y chương trình, và ta có k t qu ch ñ Console
như sau:
Hình 8: K t qu chương trình.
44. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT38
CHƯƠNG 5: L P TRÌNH X LÝ S KI N – CÁC THÀNH PH N
TRONG GIAO DI N DELPHI
I. L p trình x lý s ki n
I.1. L p (Class) và ñ i tư ng (Object)
Trong các chương trư c, các b n ñã ñư c bi t ñ n cách l p trình tu n t ch ñ
Console Application và bi t ñư c m t s khái ni m cơ s . chương này, các b n s ñư c
trình bày m t phương pháp l p trình chính c a giáo trình và r t ph bi n hi n nay ñó là l p
trình s ki n d a trên n n t ng c a l p trình hư ng ñ i tư ng (OOP: Object-Oriented
Programming).
Trong cu c s ng, b n th y có nhi u ñ i tư ng ñư c x p chung vào m t lo i/l p,
ch ng h n như nh ng ngư i còn ñi h c ta x p chung v i m t l p ñó là l p SINHVIÊN,
nh ng ngư i ñi làm vi c thì x p vào l p CBCNV. Như v y ta có hình nh như sau: t t c
m i ngư i ñ u ñư c x p chung vào m t l p trên cùng là l p NGƯ I. Ta cũng có th phân
chia nh ng ngư i trong l p NGƯ I này thành hai nhóm là SINHVIÊN và CBCNV d a
vào tính ch t ñ phân bi t là ñang ñi làm hay còn ñi h c.
Hình 1: Mô hình các l p
C th : N u xét m t gia ñình công ch c g m 4 th c th ngư i là ngư i A – cha, B -
m : ñi làm; anh C, ch D: ñang ñi h c ch ng h n, thì như th ta có 2 ñ i tư ng A, B ñư c
t o ra t l p CBCNV và 2 ñ i tư ng C, D ñư c sinh ra t l p SINHVIÊN và c 4 ñ i
tư ng này ñ u có nh ng tính ch t chung ñư c th a hư ng t l p NGƯ I, và như v y 2 l p
SINHVIÊN và CBCNV là các l p d n xu t t l p NGƯ I.
I.1.1. L p (Class)
L p là m t khái ni m ñư c s d ng r t nhi u trong cách l p trình OOP. Vi c hi u rõ
các ki n th c v l p thì n m ngoài ph m vi c a giáo trình này. Do v y, giáo trình ch ñưa
ra các khái ni m r t cơ b n v l p, m c ñích ñ các b n d hi u hơn v ñ i tư ng (Object),
là m t thành ph n r t ph bi n trong l p trình c a Delphi. Như v y, l p ñư c dùng ñ ñ nh
nghĩa ra ki u d li u c u trúc mà nó bao g m 3 thành ph n cơ b n:
- Các trư ng (Fields): là các bi n d li u c a l p.
NGƯ I
- H tên
- Ngày sinh
- Phái
- v.v...
- Mã cán b
- B c lương
- v.v...
- v.v...
- Mã s SV
- Ngành h c
- v.v...
SINHVIÊN CBCNV
45. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 39
- Các phương th c (Methods): là các hàm hay th t c ñ th c hi n thao tác nào ñó
trên ñ i tư ng. Có 2 phương th c ñ c bi t trong l p mà b n c n lưu ý ñó là
phương th c t o (Constructor) và phương th c h y (Destructor) s ñư c dùng khi
m t ñ i tư ng (Object) ñư c t o nên ho c b h y.
- Các thu c tính (Attributes) cu m t l p bao g m các bi n, các h ng, hay tham s
n i t i c a l p ñó. Tính ch t quan tr ng nh t c a các thu c tính khi chúng là bi n
là có th b thay ñ i trong quá trình ho t ñ ng c a m t ñ i tư ng. Thông thư ng
ñ truy xu t các bi n trư ng, ta d a vào tr ng thái c a thu c tính là ñ c (read)
hay ghi (write) ñ nh n hay là thi t l p giá tr cho chúng.
L p ñư c khai báo theo cú pháp như sau:
type className = class (ancestorClass)
memberList
end;
Trong ñó:
- ancestorClass là l p cha/t tiên c a l p d n xu t (descendant) là className, l p
className s ñư c th a hư ng (inheritance) t l p cha. Trong Delphi l p th y t
là l p TObject.
- memberList là các thành ph n c a l p là trư ng, phương th c và thu c tính c a
l p ñã ñư c trình bày trên.
Trong ví d gi i phương trình b c nh t trên, ta có m t l p TfrmPTB1 ñư c d n
xu t t l p cha là l p TForm, l p TForm l i ñư c d n xu t t l p TCustomForm,... và c
th nó ñư c d n xu t t l p th y t trong Delphi là l p TObject như hình sau:
Hình 2: L p TfrmPTB1 và các l p t tiên (Ancestor Classes) c a nó
46. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT40
Ví d 1: Khai báo l p TfrmPTB1 cho form unit untPtb1.Pas ví d trên như sau:
type
TfrmPTB1 = class(TForm)
lbl_a: TLabel;
lbl_b: TLabel;
edt_a: TEdit;
edt_b: TEdit;
lbl_KQua: TLabel;
memKQua: TMemo;
pnlLine: TPanel;
btnXuLy: TButton;
btnKetThuc: TButton;
procedure btnXuLyClick(Sender: TObject);
procedure btnKetThucClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
I.1.2. ð i tư ng (Object)
ð i tư ng là th c th (Instance) ñư c sinh ra t m t l p (Class), hay nói cách khác
khi ta khai báo m t bi n thu c m t l p nào ñó, thì bi n ñó chính là m t ñ i tư ng m i
ñư c c p phát. ð i tư ng này ñư c t o ra b i phương th c constructor và s b gi i phóng
b i phương th c destructor.
* Quy cách ñ t tên ñ i tư ng:
Trong phong cách l p trình chuyên nghi p, quy ư c ñ t tên cho ñ i tư ng thư ng
ñư c ghép 2 ph n: ti n t và tên g i nh c a ñ i tư ng ñó. Ti n t thư ng có 3 ký t ñ
xác ñ nh ñ i tư ng ñó thu c lo i thành ph n nào. Trong giáo trình này g i ý cho các b n
các ti n t (prefix) cho các ñ i tư ng c a các thành ph n như sau:
ð i tư ng Ti n t Ví d
Form frm frmWelcome, frmMain
Label lbl lblHeSo, lblHoTen
Edit edt edt_a, edtHoTen
Button btn btnGiai, btnXuLy
SpinEdit: spe speNhietDo, speGia1TC
LabeledEdit lbe lbeDonGia, lbeThanhTien
ListBox lbx lbxBaiHat, lbxFont
CheckBox chk chkMatHang, chkDelphi
ComboBox cbo cboToanTu, cboPhai
GroupBox gbx gbxMonHoc, gbxMatHang
47. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 41
ð i tư ng Ti n t Ví d
CheckListBox clb clbTenMH, clbDMVT
ValueListEditor vle vleMatHang, vleBaoGia
Memo mem memDanhSach, memKQ
RadioButton rbt rbtNam, rbtNu
RadioGroup rgp rgpGioiTinh, rgpCourses
StringGird stg stgAlphabet, stgMaTranA
Panel pnl pnlDieuKhien, pnlDrives
PopupMenu pmu pmnMauSac, pmnGames
MainMenu mmu mmuMainForm, mmuQLSV
MenuItem mni mniCopy, mniPaste
B ng 1: Quy cách ñ t tên các ñ i tư ng
Ví d 2: Khai báo m t th c th (ñ i tư ng) frmPTB1 như sau:
var
frmPTB1: TfrmPTB1; // ñ i tư ng frmPTB1 c a l p TFrmPTB1
L p trình hư ng ñ i tư ng là s g n k t gi a d li u và các hàm x lý d li u t o
thành ñ i tư ng. M i ñ i tư ng bao g m:
- Thu c tính (Properties): là d li u c a ñ i tư ng.
- Phương th c (Methods): là nh ng hành ñ ng mà ñ i tư ng có th thi hành.
- S ki n (Events): là nh ng hành ñ ng c a ñ i tư ng ñó ñáp ng l i thông qua th
t c s ki n do ngư i l p trình cài ñ t, khi ngư i dùng tương tác v i chương trình.
Ví d 3: Trong chương này, các b n s ñư c h c cách s d ng các thu c tính và các
s ki n c a các ñ i tư ng thông qua m t chương trình ñ u tiên là
“prjWelcome.dpr”
- Bư c 1: B n vào ch c năng: File/New/Application ñ t o ra d án m i.
Hình 3: Hình nh c a New Form.
T c a s thu c tính và s ki n c a ñ i tư ng (Object Inspector), d a vào thu c tính
name, b n ñ t tên cho form là frmWelcome ñ Delphi ñ nh nghĩa ra 1 l p có tên là
TfrmWelcome ñư c d n xu t t l p cha là TForm như sau:
48. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT42
type
TfrmWelcome = class(TForm)
// memberList
end;
Và khai báo m t ñ i tư ng có tên là frmWelcome thu c ki u l p TfrmWelcome như sau:
var
frmWelcome: TfrmWelcome;
Hình 4: Hình nh l p TfrmWelcome và ñ i tư ng frmWelcome
- Bư c 2: T b ng các thành ph n (Component Palette), click vào th Standard r i
l n lư t ñ t các thành ph n TLabel, TEdit, và TButton lên Form:
Hình 5: Các ñ i tư ng Label, Edit và Button ñ t trên Form.
49. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 43
Trong môi trư ng l p trình IDE, các l p trong Delphi thư ng ñư c cài ñ t thành các
thành ph n (TComponent) ñ ngư i l p trình d dàng th a hư ng khi thi t k và vi t mã
l nh. Như v y: Tên l p cũng chính là tên thành ph n.
T ñây v sau, thu t ng “ñ i tư ng A c a m t thành ph n TA” ñư c vi t ng n
g n là “ñ i tư ng A”.
Ví d 4: Câu l nh frmWelcome:TForm; ñ c ñ y ñ là “ñ i tư ng frmWelcome
thu c l p (thành ph n) TForm”. Tuy nhiên, ta có th ñ c g n l i như: “ñ i
tư ng frmWelcome”, ho c câu l nh btnGiai:TButton; ñư c ñ c là “nút
l nh btnGiai” hay “ñ i tư ng btnGiai”.
I.2. Thu c tính
M i thành ph n ñ u có nh ng thu c tính ñ xác ñ nh nh ng ñ c tính c a thành ph n
ñó ch ng h n như màu s c (Color), v trí (Position), kích thư c và tr ng thái (State) c a
chúng. Trong các thu c tính này, b n c n quan tâm nh t ñ n thu c tính tên (Name) c a ñ i
tư ng.
- Bư c 3: L n lư t thi t l p các thu c tính Name, Caption cho ñ i tư ng Label và
các thu c tính Name, Text cho ñ i tư ng Edit:
Hình 6: C a s thu c tính và s ki n c a ñ i tư ng lblHoTen và edtHoTen
Tương t , ñ i tư ng thu c thành ph n TButton có thu c tính Name là btnChao và
Caption là “&Chao”, ñ i tư ng c a TForm có thu c tính Name là frmWelcome và Caption
là “Welcome to Delphi 7.0”
Cách truy xu t thu c tính c a ñ i tư ng:
Tên_ñ i_tư ng.Thu c_tính
Tên l p
Tên ñ i
tư ng
50. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT44
Ví d 5: Gán thu c tính Enabled c a lblHoTen b ng True là:
lblHoten.Enabled := True;
I.3. Phương th c (Method)
Là th t c (Procedure) ho c hàm (Function) ñã ñư c xây d ng s n cho công vi c nào
ñó c a ñ i tư ng. Ta có th g i phương th c này trong quá trình vi t mã (Coding) ñ
chúng thi hành khi chương trình ch y.
Cách truy xu t phương th c ñ i tư ng:
Tên_ñ i_tư ng.Phương_th c;
Ví d 6: G i phương th c Hide và Show ñ th c hi n vi c n và hi n c a ñ i tư ng
frmWelcome là: frmWelcome.Hide;
và frmWelcome.Show;
I.4. S ki n (Event)
ðó chính là m t thao tác c a ngư i s d ng tác ñ ng lên ñ i tư ng và nó s ñáp ng
l i b ng vi c th c hi n m t công vi c nào ñó. Các s ki n thông thư ng là trên mouse và
keyboard như: Click, RightClick, DoubleClick, KeyPress, Drag and drop,…
Hình 7: S ki n OnClick c a btnChao
Như hình trên, ñ i tư ng btnChao có nhi u s ki n như: OnClick, OnContextPopup,
OnDragDrop,... c a tab Event tương ng trên c t Action. M i s ki n này tương ng v i
m t th t c s ki n ñ x lý s ki n ñó (Event handers) n m c t bên ph i tương ng.
Tên s ki n
Tên th t c
s ki n s
ki n.
51. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 45
I.5. X lý s ki n (Event Handlers)
ðó chính là th t c s ki n, thân th t c s ki n này bao g m các câu l nh mà ngư i
l p trình vi t trong nó ñ th c hi n m t công vi c, ch c năng nào ñó.
Cách hình thành th t c s ki n:
procedure Tên_Thành_Ph n_Form.Tên_ñ i_tư ngS _ki n([DanhSáchCácThamS ]);
Ví d 7: Th t c s ki n OnClick cho nút l nh btnChao c a frmWelcome (hay còn
g i là th t c s ki n btnChaoClick c a l p TfrmWelcome) ñư c hình
thành như sau:
procedure TfrmWelcome.btnChaoClick(Sender: TObject);
- Bư c 4: hình 5, nh p ñúp lên nút l nh Chao, ho c hình 7 b n nh p ñúp lên
c t bên ph i c a s ki n OnClick tương ng ñ m ra m t th t c s ki n có tên
là TfrmWelcome.btnChaoClick (Sender: TObject) như sau:
Hình 8: Th t c s ki n btnChaoClick m i t o c a s ki n OnClick
Ti p ñ n b n gõ m t s l nh vào trong thân c a th t c s ki n như hình sau:
tên thành ph n hay
tên l p form
tên nút l nh
btnChao
s ki n
OnClick
52. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT46
Hình 9: Vi t code cho th t c s ki n btnChaoClick
I.6. Trình h tr mã l nh (Code Completion /IntelliSense)
Trong cách l p trình hư ng ñ i tư ng (OOP) và nh t là khi ngôn ng l p trình có
h tr môi trư ng phát tri n IDE thì s thu c tính, phương th c, s ki n và các th t c s
ki n c a t ng ñ i tư ng là vô cùng phong phú (do tính th a hư ng). Vi c nh chính xác cú
pháp c a chúng là m t vi c làm không tư ng ñ i v i b t kỳ m t l p trình viên nào (vì
không ch có duy nh t m t ngôn ng l p trình Delphi!). ð giúp cho ngư i l p trình "d
th " hơn, Delphi có ñưa ra menu ng c nh r t h u ích ñ h tr cho vi c vi t code này và
ñư c g i là Trình h tr mã l nh (Code Completion).
Trong lúc b n vi t code, khi b n gõ tên ñ i tư ng r i ñ n d u ch m, thì Code
Completion s xu t hi n như hình sau:
Hình 10: Trình h tr mã l nh
II. Sinh mã t ñ ng và m t s cách s a l i
II.1. Cách t ñ ng sinh mã (generate code) trong Delphi
- Khi m i t o m i m t d án (Form Application) như hình nh sau:
53. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 47
Hình 11: Mã l nh sinh t ñ ng trong d án m i.
thì b n th y tên ki u (Type) l p TForm1 ñư c xây d ng thông qua l p (Class) d n
xu t t l p cha là l p TForm. Trong ki u TForm1 (không k s th a hư ng t l p TForm)
chưa có thu c tính (Properties), Phương th c (Methods) ho c s ki n (Events) nào c a
chính nó, như b n th y trong ño n code sau ñây:
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
- Khi b n ñ t lên form (ho c g b ) m t ñ i tư ng (Object) c a ñ i tư ng b t kỳ như
Button, Edit,... thì tên (name) c a ñ i tư ng ñó s ñư c t ñ ng thêm vào (ho c xóa b ñi)
trong ph n thu c tính (Property) c a Form ph n ñ nh nghĩa ki u l p Form. Ch ng h n,
b n thêm vào ñ i tư ng Button1 thu c thành ph n TButton (ng n g n là Button1: TButton)
lên Form như hình sau:
54. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT48
Hình 12: Thêm nút l nh Button1
thì ño n code s t ñ ng thêm vào bi n d li u là Button1: TButton như sau:
type
TForm1 = class(TForm)
Button1: TButton; //m i t ñ ng sinh mã thêm
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
- Khi b n t o ra 1 th t c s ki n d a trên s ki n nào ñó, thì Delphi s t ñ ng khai
báo (Declare) thêm ph n nguyên m u (Prototype) c a th t c s ki n trong ph n d li u
(thu c tính – Properties) c a l p. Ch ng h n, b n t o ra th t c (Procedure) c a s ki n
(Event) nh p chu t (OnClick) c a nút l nh có tên Button1, thì Delphi s t ñ ng thêm vào
ph n khai báo th t c s ki n trong l p TForm1 như ño n code sau:
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject); //m i thêm vào
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
và s cài ñ t (Implementation) các câu l nh cho th t c s ki n mà ta m i t o sau
t khóa implementation, như ño n code sau:
55. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 49
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//------------ ph n cài ñ t th t c m i ñư c t ñ ng thêm vào ----------------
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
// ---------------------------------------------------------------------------------------
end. // K t thúc Form Unit.
II.2. Cách s a l i sinh mã trong Delphi
Khi b n m i h c s d ng Delphi, nh t là khi m i làm quen v i l p trình, thì vi c phát
sinh ra các l i (errors, bugs) do thao tác không ñúng ho c chưa hi u ñ y ñ ki n th c v
OOP là d g p ph i. ñây, s ch ra nh ng sai sót thư ng g p và cách s a chúng.
a. Sai trong thao tác t o th t c s ki n: N u b n làm ñúng hư ng d n trong ph n
"X lý s ki n" (ph n I.5) thì không b sai. Tuy nhiên do chưa quen, b n thư ng t gõ vào
ph n cài ñ t th t c s ki n (TTSK) mà không bi t ho c quên ñưa vào ph n khai báo
nguyên m u (Prototype), g m t khóa procedure Tên_TTSK([các_tham_s ]); c a th t c
s ki n.
Ví d như ño n code sau:
type
TForm1 = class(TForm)
Button1: TButton;
{--------- thi u khai báo nguyên m u này -----
procedure Button1Click(Sender: TObject);
------------------------------------------------}
56. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT50
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// ------------ ph n b n t gõ vào --------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Welcome to Delphi 7.0!...');
end;
// ---------------------------------------------------------------------------------------
end. // K t thúc Form Unit.
thì khi b n bi n d ch, Delphi s thông báo l i như hình sau:
Hình 13: Báo l i do thi u ph n khai báo prototype
Khi xu t hi n h p thông báo l i này, b n có 3 ch n l a:
- Ch n nút l nh Yes, n u mu n g b tên th t c s ki n trong s ki n tương ng c a
ñ i tư ng. Trong ví d này, b n mu n g b TTSK Button1Click trong s ki n OnClick
c a nút l nh Button1.
57. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 51
Chưa g b TTSK ðã g b TTSK
Hình 14: Minh h a tên TTSK Button1Click trong s ki n OnClick
- Ch n nút l nh No, n u không g b tên th t c s ki n trong s ki n tương ng c a
ñ i tư ng. Trong ví d này, b n v n mu n gi l i TTSK Button1Click trong s ki n
OnClick c a nút l nh Button1.
- Ch n nút l nh Cancel thì h y b b ng thông báo l i này. ði u này cũng như ch n
nút l nh No.
C 3 ch n l a trên v n không t ñ ng s a h t l i cho b n. N u b n nh n phím
Ctrl+F9 ho c F9, thì Delphi s nh y con tr (con nháy) ñ n ñúng ph n cài ñ t TTSK và
thông báo l i trong c a s Messages phía dư i c a s so n th o mã l nh như hình sau:
Hình 15: C a s Messages
Hình nh ph n c a s so n th o mã l nh cùng v i các c a s khác.
G b TTSK
58. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT52
Hình 16: Thông báo l i và con nháy nh y ñ n TTSK b l i.
ð s a l i này, b n chuy n lên ph n ñ nh nghĩa l p TForm1, và thêm vào ph n khai
báo (Prototype) c a th t c s ki n này như sau:
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject); //gõ thêm vào
private
{ Private declarations }
public
{ Public declarations }
end;
C n chú ý: N u bư c trên b n ch n Yes, thì sau khi h t l i b n ph i g n tên TTSK
vào s ki n tương ng cho ñ i tư ng Button1; Còn n u ch n No thì tên TTSK v n còn gi
nguyên (ñã g n s n) cho b n.
- M t l i khác là b n m TTSK không ñư c như khi b n DClick lên nút l nh
Button1 thì có thông báo l i như sau:
59. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 53
Hình 17: L i không th t o TTSK
trong tư ng h p này, b n ch n OK, sau ñó nh n phím ch c năng F12 ñ chuy n vào c a
s so n th o mã l nh ñ s a l i.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms,Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end. //Nguyên nhân phát sinh l i, b n xóa b l nh này ñi.
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Welcome to Delphi 7.0!');
end;
end.
60. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT54
- M t l i khác thư ng x y ra là b n xóa ñi t khóa end.trong t p tin unit thì s nh n
ñư c thông báo:
Hình 18: L i thi u t khóa end. trong unit form
ð s a l i này, b n nh n phím ch c năng F12 ñ chuy n sang c a s mã l nh, r i
thêm t khóa end. vào cu i t p tin unit.
* Tóm l i: Có r t nhi u l i khác nhau phát sinh n u b n thao tác không chính xác. C n
ph i chú ý 2 ñi m:
- Thao tác ñúng theo s hư ng d n ñã trình bày trong giáo trình.
- M t TTSK ph i ñ y ñ 2 thành ph n:
+ Ph n khai báo tên th t c (Prototype) trong ph n ñ nh nghĩa l p c a Form.
+ Ph n cài ñ t ñ y ñ TTSK sau ph n cài ñ t (Implementation).
II.3. Thêm t p tin unit vào d án
Vi c này giúp cho b n, trư ng nhóm l p trình viên hay ch d án (group leader,
leader team) có th ghép nhi u form khác nhau nh ng project khác nhau c a nh ng l p
trình viên khác nhau vi t, thành m t d án (thành ph m) cu i cùng.
Ví d : B n th tư ng tư ng s phân công công vi c c a 1 s n ph m "Gi i Phương
Trình" có 2 phương trình b c nh t và b c hai. Trư ng nhóm, anh A, phân công cho l p
trình viên B vi t chương trình gi i phương trình b c nh t (tên form: frmPTB1, unit file:
untPTB1.pas, project file: prjPTB1.dpr) và l p trình viên C vi t chương trình b c hai (tên
form: frmPTB2, unit file: untPTB2.pas, project file: prjPTB2.dpr). Công vi c c a anh A là
vi t giao di n (Interface) cho gói s n ph m này (tên form: frmMain, unit file: untMain.pas,
project file: prjMain.dpr). Sau khi ph n chương trình vi t riêng bi t c a m i anh A, B, C ñã
xong, thì anh A s ghép thêm frmPTB1, frmPTB2 vào d án c a anh ta trong ñó frmMain
là giao di n c a chương trình.
T ch c c a s n ph m "Gi i Phương Trình" ñư c ñ t trong 3 thư m c con c a thư
m c S:GT Del-03.2007Add Form như hình sau:
61. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 55
Hình 19: C u trúc thư m c c a s n ph m "Gi i Phương Trình"
ð làm ñư c ñi u này, t d án ñang m c a anh A, dùng l nh Project/ Add To
Project... Shift+F11 ñ thêm frmPTB1, untPTB1.pas vào d án prjMain.dpr như hình sau:
Hình 20: Thêm unit form untPTB1.pas vào d án c a anh A
ti p ñ n, b n ch n t p tin unit form untPTB1.pas trong thư m c PTB1 (d án c a anh
B) và nh n nút l nh Open ñ thêm vào.
62. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT56
Hình 21: C a s thêm untPTB1.pas vào d án chính.
Hoàn toàn tương t , b n thêm vào unit form untPTB2.pas trong thư m c PTB2 (d
án c a anh C).
Và như v y trong s n ph m c a anh A bây gi là 1 d án có 3 form, như hình sau:
Hình 22: D án anh A ñã ch a ñ y ñ 3 form.
Trong t p tin d án (Project file: prjMain.dpr) có s tham chi u (Reference/link) t i
các t p tin unit form trong các folder c a anh B và anh C như hình sau:
63. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 57
Hình 23: S tham chi u t i các unit form: untPTP1.pas và untPTP2.pas
T i ñây, câu h i ñư c ñ t ra là trong thư m c c a anh A ñã ch a ñ y ñ các t p tin
c a s n ph m chưa? Li u b n có th xóa b ñi 2 thư m c PTB1 và PTB2 không? Câu tr
l i là không. M t yêu c u ñư c ñ t ra là anh A (trư ng nhóm) mu n t t c các t p tin ch
n m trong 1 folder c a anh ta (thư m c S:GT Del-03.2007Add FormMain) thì làm như
th nào? Câu tr l i là anh A s lưu l i unit file: untPTB1.pas (tương t cho untPTB2.pas)
vào thư m c Main b ng l nh File/Save As như sau:
Hình 24: Lưu l i untPTB1.pas vào thư m c c a anh A
Xem l i t p tin d án, b n th y các tham chi u t i các unit file ñã n m trong thư m c
hi n hành (c a anh A):
64. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT58
Hình 25: Các t p tin unit form ñã trong cùng 1 thư m c anh A
II.4. Vi t l nh sau khi thêm unit form vào d án
Bây gi , t main form (frmMain), anh A mu n hi n th (Show) form c a anh B ho c
anh C thì sao? Ch ng h n khi Click vào m c Bac 1 trong th c ñơn Giai phuong trinh ñ
hi n th form PTB1 lên như hình sau:
Hình 26: Hi n th form "Phuong trinh bac nhat"
ð làm ñư c thì anh A s gõ thêm câu l nh frmPTB1.Show; ñ hi n th frmPTB1:
65. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 59
Hình 27: Không xu t hi n trình Code Completion
Tuy nhiên, trình h tr mã l nh c a Delphi (Code Completion) không t ñ ng xu t
hi n ñ anh A ch n phương th c Show mà l i xu t hi n thông báo l i trong c a s
Messages như sau:
"[Pascal error] untMain.pas(1): Unable to invoke Code Completion due to
errors in source code".
Thông báo l i này phát sinh là do trong t p tin untMain.Pas, b n chưa khai báo s
d ng unit untPTB1 thông qua t khóa uses
Hình 28: Chưa có khai báo unit untPTB1 và untPTB2
66. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT60
Có 02 cách ñ b n s a l i này:
- Cách 1: N u b n bi t chính xác tên phương th c mà b n c n, thì b n c vi c gõ
ti p phương th c Show như sau: frmPTB1.Show; (b t ch p thông báo l i – không ñư c
h tr b i menu Code Completion). Sau ñó, b n biên d ch l i (nh n t h p phím Ctrl+F9),
s xu t hi n thông báo như sau:
Hình 29: Thông báo thi u khai báo unit untPTB1
B n Click nút l nh Yes ñ Delphi t ñ ng khai báo thêm untPTB1 vào t p tin unit
untMain. Tương t cho unit frmPTB2, ta cũng Click nút l nh Yes ñ thêm vào.
Hình 30: Thông báo thi u khai báo unit untPTB2
Sau 2 bư c trên, ño n khai báo các unit s như sau:
67. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 61
Hình 31: ðã khai báo xong 2 unit: untPTB1, untPTB2
- Cách 2: Vì trong unit untMain, anh A s d ng frmPTB1 và frmPTB2. Do v y,
trư c khi anh A vi t code cho 2 TTSK trên, anh A ph i gõ thêm khai báo vi c s d ng 2
unit: untPTB1 và untPTB2, r i m i vi t l nh frmPTB1.Show; vào. Cách này t t và chính
xác hơn cách 1 vì có trình Code Completion h tr cho b n khi vi t l nh như hình sau:
Hình 32: Thêm khai báo unit trư c và có trình Code Completion
Chú ý: B n có th s d ng l nh File/Use Unit... ñ thêm unit vào d án hi n hành.
68. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
Trang B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT62
II.5. G b t p tin unit form ra kh i d án
Công vi c này giúp b n lo i b ra kh i d án (Project) nh ng form (unit file) không
c n thi t, ho c b sai. ð g b , b n ch n ch c năng Project/Remove from Project...
Ví d 8: Anh A, trư ng nhóm, th y ph n chương trình c a anh C – Phương trình b c
hai, vi t còn chưa t t (hay còn bugs). Anh A ñ ngh anh C hoàn ch nh và ki m tra (testing)
ph n chương trình l i, sau ñó g i l i ñ anh A ñóng gói thành ph m. Như v y, anh A t m
th i g b (remove) ph n chương trình c a anh C ra kh i d án hi n hành. ð làm vi c ñó,
anh A ra l nh Project/Remove from Project... thì Delphi s xu t hi n h p tho i "Remove
From Project", r i ch n unit untPTB2 và Click OK như hình sau:
Hình 33: C a s g b t p tin unit
Delphi yêu c u b n kh ng ñ nh l i công vi c g b này ra kh i d án, b n ch n Yes
ñ g b :
Hình 34: H p xác nh n vi c g b
III. Bi u m u (TForm)
Form là m t ñ i tư ng chuyên d ng trong môi trư ng l p trình Windows. Trong bi u
m u form này, b n có th ñ t các ñ i tư ng thu c thành ph n khác như TLabel, TEdit,
TButton,... lên nó ñ thi t k giao di n c a chương trình hay còn ñư c g i là Form chính
(Main form) ho c các bi u m u ph khác trong d án.
* Bi u tư ng:
69. Chương 5: L p trình x lý s ki n – Các thành ph n c a Delphi
B môn Tin H c ng D ng – Khoa Khoa H c T Nhiên – Trư ng ðHCT Trang 63
* M t s thu c tính thư ng dùng:
Tên thu c tính Ý nghĩa
Name
Xác ñ nh tên cho ñ i tư ng form, tên này ph i có tính g i nh ñ giúp
b n d qu n lý và l p trình, nh t là khi b n tham gia vào nh ng d án
l n. (Xem l i B ng1: Quy cách ñ t tên các ñ i tư ng).
AutoSize
Có giá tr True ho c False: t ñ ng hay không t ñ ng thay ñ i kích
thư c c a form sao cho kích thư c c a nó v a ñ ñ ch a các thành
ph n (component) ñ t trong nó.
Caption Chu i ký t ñư c hi n th trên thanh tiêu ñ (Title bar) c a form.
BorderStyle
Các ki u dáng hi n th form:
- bsDialog: là h p h i tho i, không thay ñ i kích thư c ñư c.
- bsSingle: ðư ng vi n khung ñư c k ñư ng 1 nét và không thay
ñ i ñư c kích thư c c a form.
- bsNone: Không có ñư ng vi n khung và không thay ñ i ñư c
kích thư c c a form.
- bsSizeable: D ng chu n/ m c nhiên c a form. ðây là d ng m t c a
s r t ph bi n trên môi trư ng l p trình Windows.
- bsToolWindow: Gi ng bsSingle, nhưng thanh tiêu ñ nh h p hơn.
- bsSizeToolWin: Gi ng bsSizeable, nhưng thanh tiêu ñ nh h p
hơn.
BorderIcons
Xác ñ nh trên thanh tiêu ñ có h p ñi u khi n hay còn g i là h p
“Control box”, “Control menu” và “System menu” bên trái thanh
tiêu ñ và các nút ñi u khi n bên ph i thanh tiêu ñ :
- biSystemMenu: Form có h p ñi u khi n.
- biMinimize : Form có nút thu nh (Minimize)
- biMaximize: Form có nút phóng to (Maximize), ph c ch (Restore)
- biHelp : Form có nút tr giúp n u b n thi t l p giá tr c a
biMinimize = False và biMaximize = False.
Cursor Các ki u dáng hi n th con tr (Mouse) trên form.
Form style
Các ki u form: (MDI: Multi Document Interface)
- fsMDIForm: MDIForm (Multi Document Interface) là form
MDI cha c a t t c các form khác (n u có) trong chương trình. Khi
b n ñóng MDIForm, thì ñ ng nghĩa v i vi c ñóng t t c các form
khác và k t thúc chương trình.
- fsMDIChild: ðây là form MDI con. Trong chương trình, b n
có th m ra nhi u c a s MDIChild.
ð d hi u, b n có th xem MDIForm chính là c a s ng d ng ph n
m m Microsoft Word, còn MDIChild chính là các c a s t p tin như
Document1, Document2,... ñư c t o ra thông qua l nh File/New
- fsNormal: Là lo i form thư ng dùng nh t và ñây cũng là giá tr m c
ñ nh (Default) khi b n thêm 1 form m i. Lo i form này không có
tính ch t c a lo i form MDI.
- fsStayOnTop: giúp cho form luôn n i lên trên nh t, ngay c khi có
form khác ñang ho t ñ ng (Active).