You are on page 1of 258

TRNG I HC CN TH

KHOA KHOA HC T NHIN

Gio trnh l thuyt

LP TRNH CN BN B
MSMH: TN035

(p dng cho chng trnh tn ch)

Bin son: ThS. V DUY LINH


ThS. NGUYN NH GIA VINH
ThS. L TH DIM

Nm 2010

MC LC
CHNG 1: D LIU V THUT TON................................................................1
I. D liu v thng tin: .............................................................................................1
I.1. Khi nim.......................................................................................................1
I.2. S tng qut ca mt qu trnh x l thng tin.........................................1
II. T bi ton ti chng trnh ................................................................................1
II.1. Cc giai on gii mt bi ton trn my tnh in t..................................1
II.2. Thut ton (Algorithm).................................................................................2
CHNG 2: BORLAND DELPHI .............................................................................5
I. Tng quan v Delphi.............................................................................................5
I.1. Delphi l g.....................................................................................................5
I.2. Cc phin bn ca Delphi ..............................................................................5
II. Mi trng pht trin tch hp (IDE) ca Delphi................................................5
II.1. Ca s chnh ca Delphi...............................................................................6
II.2. Thanh thc n chnh v thanh cng c.......................................................6
II.3. Bng cha cc thnh phn ca Delphi (Component Palette) .......................7
II.4. Ca s thit k biu mu (Form Designer) v Ca s son tho m lnh
(Code Editor) .................................................................................................8
II.5. Ca s thuc tnh v s kin ca i tng (Object Inspector) ...................9
II.6. Ca s lit k cc i tng dng cy (Object TreeView).........................10
III. Cu trc mt d n Delphi ...............................................................................10
III.1. Tp tin d n: (Delphi project file) ...........................................................10
III.2. Cc tp tin cha m lnh (Unit file) ..........................................................11
III.3. Cc tp tin c t biu mu (Form file).....................................................11
III.4. Cc tp tin ti nguyn (Windows Resource File)......................................13
IV. Cc thao tc c bn trn Delphi .......................................................................14
IV.1. M mt d n mi.....................................................................................14
IV.2. Lu d n ..................................................................................................14
IV.3. Lu Form (tp tin unit) vi tn khc.........................................................18
IV.4. Lu d n vi tn khc..............................................................................18
IV.5. ng d n ................................................................................................18
IV.6. Thot khi Delphi .....................................................................................18
CHNG 3: CC THNH PHN C BN CA NGN NG DELPHI (OBJECT
PASCAL).............................................................................................19
I. B ch vit .........................................................................................................19
II. T kha ..............................................................................................................19
III. Tn danh hiu t t .........................................................................................20
IV. Hng .................................................................................................................20
IV.1. Khi nim ..................................................................................................20
IV.2. Hng tr......................................................................................................20
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang i

IV.3. Hng nh kiu: .........................................................................................21


V. Kiu (Type)........................................................................................................21
V.1. nh ngha ..................................................................................................21
V.2. Cch khai bo .............................................................................................21
VI. Bin ..................................................................................................................22
VII. Biu thc .........................................................................................................22
VII.1. nh ngha................................................................................................22
VII.2. Th t u tin...........................................................................................22
VIII. Chuyn kiu (Typecast).................................................................................23
IX. Li ch thch v cc ch dn bin dch .............................................................24
X. Cu trc mt d n ch Form (Form Application)....................................25
CHNG 4: CC KIU D LIU S CP CHUN, LNH N .......................26
I. Cc kiu d liu s cp (Simple type) ................................................................26
I.1. Kiu s nguyn (Integer)..............................................................................26
I.2. Kiu k t (Char) .........................................................................................26
I.3. Kiu s thc (Real type)...............................................................................30
I.4. Kiu logic (Boolean) ....................................................................................34
II. Cu lnh (statement) ..........................................................................................34
III. Lnh n (Simple statement) ...........................................................................35
IV. Lnh gn (Assignment statement)....................................................................35
V. Lnh gi th tc v hm ....................................................................................35
VI. Lnh Goto.........................................................................................................37
CHNG 5: LP TRNH X L S KIN CC THNH PHN TRONG GIAO
DIN DELPHI ....................................................................................38
I. Lp trnh x l s kin ........................................................................................38
I.1. Lp (Class) v i tng (Object) ...............................................................38
I.2. Thuc tnh ....................................................................................................43
I.3. Phng thc (Method) .................................................................................44
I.4. S kin (Event).............................................................................................44
I.5. X l s kin (Event Handlers)....................................................................45
I.6. Trnh h tr m lnh (Code Completion /IntelliSense)................................46
II. Sinh m t ng v mt s cch sa li ............................................................46
II.1. Cch t ng sinh m (generate code) trong Delphi .................................46
II.2. Cch sa li sinh m trong Delphi.............................................................49
II.3. Thm tp tin unit vo d n ........................................................................54
II.4. Vit lnh sau khi thm unit form vo d n................................................58
II.5. G b tp tin unit form ra khi d n .........................................................62
III. Biu mu (TForm) ............................................................................................62
IV. Cc thnh phn (Component) giao din ph bin ............................................68
IV.1. Nhn (TLabel) ...........................................................................................68
IV.2. Hp vn bn (TEdit)..................................................................................71
Trang ii

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

IV.3. Nt lnh (TButton)....................................................................................78


IV.4. Nhn v Hp nhp (TLabeledEdit) ...........................................................80
IV.5. Hp nh du hay hp kim (TCheckbox) ...............................................81
IV.6. Nt ty chn (TRadioButton) ...................................................................87
IV.7. Nhm ty chn (TRadioGroup) ................................................................88
IV.8. Vng vn bn (TMemo)............................................................................91
IV.9. Hp danh sch (TListBox) ........................................................................96
IV.10. TSpinEdit ..............................................................................................100
IV.11. Hp danh sch nh du (TCheckListBox) ..........................................101
IV.12. Hp danh sch cc kho (TValueListEditor) ........................................107
IV.13. Hp lit k th (TComboBox)...............................................................113
IV.14. Li chui (TStringGrid)......................................................................118
IV.15. Bng cha cc thnh phn (TPanel)......................................................124
IV.16. Thanh thc n chnh (TMainMenu)....................................................125
IV.17. Thc n (TMenuItem) ........................................................................126
IV.18. Menu i tng (TPopupMenu) ...........................................................134
CHNG 6: CC LNH C CU TRC.............................................................138
I. Lnh ghp (Compound statement)....................................................................138
II. Lnh cu trc r nhnh ....................................................................................138
II.1. Lnh if ... then ... v lnh if ... then ... else................................................138
II.2. Lnh Case ... of .........................................................................................146
III. Cu trc lnh lp.............................................................................................149
III.1. Lnh lp c s ln xc nh trc ...........................................................149
III.2. Lnh lp c s ln khng xc nh trc ................................................155
CHNG 7: CHNG TRNH CON....................................................................164
I. Khi nim..........................................................................................................164
II. Hm..................................................................................................................165
III. Th tc............................................................................................................172
IV. Truyn tham s...............................................................................................175
IV.1. nh kiu v khng nh kiu cho tham s hnh thc.............................175
IV.2. Truyn bng tham tr (Value parameter).................................................177
IV.3. Truyn bng tham bin (Variable parameter) .........................................179
IV.4. Truyn bng tham s hng (Constant parameter) ...................................181
IV.5. Truyn bng tham s xut (Out parameter) ............................................184
V. Chng trnh con quy .................................................................................190
CHNG 8: KIU LIT K, MIN CON, TP HP ..........................................194
I. Kiu v hng lit k (Enumerated scalar type) ..............................................194
I.1. Khi nim...................................................................................................194
I.2. Cch khai bo: C hai cch khai bo l gin tip v trc tip ...................194
I.3. Mt s hm chun p dng cho kiu v hng .........................................195
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang iii

II. Kiu min con (Subrange types)......................................................................196


II.1. Khi nim..................................................................................................196
II.2. Cch khai bo............................................................................................196
III. Kiu tp hp (Set)...........................................................................................197
III.1. Khi nim ................................................................................................197
III.2. Cch khai bo ..........................................................................................197
III.3. M t tp hp...........................................................................................198
III.4. Mt s php ton trn kiu tp hp .........................................................198
CHNG 9: KIU MNG.....................................................................................208
I. Khi nim v mng (Array-type data) ..............................................................208
II. Mng tnh (Static array) ...................................................................................208
II.1. Mng mt chiu (One-Dimensional array) ...............................................208
II.2. Mng nhiu chiu (Multi-Dimensional array) ..........................................213
II.3. Mng hai chiu..........................................................................................215
III. Mng ng (Dynamic array) ..........................................................................222
III.1. Mng ng mt chiu .............................................................................222
III.2. Mng ng nhiu chiu ...........................................................................227
III.3. Hng mng...............................................................................................228
CHNG 10: KIU CHUI K T ......................................................................229
I. Cc loi chui k t trong Object Pascal ..........................................................229
I.1. Chui ngn (ShortString) ...........................................................................229
I.2. Chui di 1 byte (AnsiString) ....................................................................230
I.3. Chui di 2 byte (WideString) ...................................................................232
II. Cc thao tc trn chui.....................................................................................232
II.1. Php ton cng chui................................................................................232
II.2. Php ton so snh......................................................................................232
II.3. Cc th tc v hm chun x l chui k t.............................................234
PH LC........ .........................................................................................................246
TI LIU THAM KHO ..........................................................................................252
BN QUYN TC GI ............................................................................................252

Trang iv

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 1: D liu v Thut ton

CHNG 1: D LIU V THUT TON


I. D liu v thng tin:

I.1. Khi nim


D liu (Data) l cc s kin khng c cu trc, khng c ngha r rng ti thi
im xt.
Thng tin (Information) l mt khi nim tru tng c th hin qua cc thng
bo, cc biu hin,... em li mt nhn thc ch quan cho mt i tng nhn tin. Thng
tin l d liu c x l xong, mang ngha r rng ti thi im xt.
Mt h thng thng tin (Information system) l mt tin trnh ghi nhn d liu, x l
n v cung cp to nn d liu mi c ngha thng tin, lin quan mt phn n mt t
chc, tr gip cc hot ng lin quan n t chc.

I.2. S tng qut ca mt qu trnh x l thng tin


Mi qu trnh x l thng tin bng my tnh hay bng con ngi u c thc hin
theo mt quy trnh sau:
D liu c nhp u vo (Input). My tnh hay con ngi s thc hin qu trnh
x l no nhn c thng tin u ra (Output).
NHP D LIU
(INPUT)

X L
(PROCESSING)

XUT D LIU
(OUTPUT)

LU TR (STORAGE)
Hnh 1:

M hnh tng qut qu trnh x l thng tin

II. T bi ton ti chng trnh


Trong cuc sng, chng ta c rt nhiu bi ton cn phi gii quyt. S dng my
tnh in t gii cc bi ton l iu rt hiu qu do kh nng tnh ton ca my tnh.
my tnh c th hiu c, chng ta cn phi c nhng bc gii c th ca bi ton mt
cch ng logic, t s dng mt ngn ng chng trnh hay phn mm lp trnh
hng dn my tnh thc hin cc thao tc cn thit tm ra kt qu ca bi ton.

II.1. Cc giai on gii mt bi ton trn my tnh in t


gii quyt mt bi ton trn my tnh in t, cn qua cc giai on sau:
-

Tm hiu mc tiu chnh ca bi ton: d liu nhp vo v kt qu xut.

Xy dng mt chui thao tc tnh ton theo mt th t logic, gi l thut gii.

Lp chng trnh din t chi tit cc bc tnh theo thut gii.

Nhp chng trnh vo my tnh, thng dch v chy th sa cha li.

Thc hin gii bi ton vi s liu thu thp c v ghi nhn kt qu.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 1

Chng 1: D liu v Thut ton


-

Th nghim vi nhiu trng hp d liu nhp khc nhau ca bi ton


chng trnh kim tra ng trong mi trng hp tng qut.

Phn tch kt qu v hon chnh chng trnh.

Trong cc bc trn, vic thit k thut ton l giai on quan trng nht.

II.2. Thut ton (Algorithm)


II.2.1. nh ngha
Thut ton l mt phng php trnh by cc bc gii quyt mt hay nhiu bi ton
theo mt tin trnh xc nh.
II.2.2. c tnh ca thut ton
-

Tnh xc nh: Cc thao tc ca thut ton l r rng v chc chn thc hin c
dn n kt qu no .

Tnh hu hn v dng: thut ton phi c mt s bc gii nht nh v cui


cng phi c kt thc im dng.

Tnh kt qu: Vi d liu hp l, thut ton phi cho kt qu tha yu cu.

Tnh ph dng: Thut ton phi gii c nhiu bi ton c cng cu trc vi cc
d liu khc nhau v u dn n mt kt qu mong mun.

Tnh hiu qu: Thut gii phi n gin, d hiu trong cc bc gii, ti thiu
ho b nh v thi gian thc hin.

Tnh hnh thc: Cc bc trong thut ton l my mc, ngha l n phi thc hin
ng nh quy nh m khng cn bit n mc tiu cui cng.

II.2.3. Cc phng php biu din thut ton


Thut ton c th c din gii thng qua 3 phng php ph bin, l s dng
ngn ng t nhin, ngn ng gi v ngn ng s (lu ).

II.2.3.1 Ngn ng t nhin


L cch din t t nhin ca con ngi bng ngn ng ca mnh m t cc bc
gii bi ton.
V d 1: M t thut ton theo ngn ng t nhin ca phng trnh ax + b = 0
- Bc 1: Nhp vo 2 h s a v b.
-

Bc 2: Xt iu kin a = 0?

Nu ng l a = 0, th i n bc 3, nu khng (ngha l a 0) th i n bc 4.
-

Bc 3: Xt iu kin b = 0?
Nu b = 0, th bo phng trnh c v s nghim. i n bc 5.
Nu b 0, thng bo phng trnh v nghim. i n bc 5.

Bc 4: Thng bo phng trnh c mt nghim duy nht l x = - b/a.

Bc 5: Kt thc thut ton.

Trang 2

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 1: D liu v Thut ton

II.2.3.2 Ngn ng gi
L cch din t cc bc gii ca bi ton thng qua mt s cu lnh c cu trc
(nh cu lnh if..then..else, for..to..do, while..do, repeat..until)
V d 2: M t thut ton theo ngn ng gi ca phng trnh bc nht ax + b = 0
- Bc 1: Nhp vo 2 h s a v b.
-

Bc 2: if (a=0) then

if (b=0) then phng trnh v s nghim


else phng trnh v nghim
else phng trnh c mt nghim duy nht x = -b/a
Bc 3: Kt thc thut ton.

II.2.3.3 Ngn ng lu (Flowchart)


L cch din t cc bc gii ca bi ton thng qua cc k hiu ca lu . Mt s
qui c k hiu lu :
M t

K hiu

im bt u hoc kt thc thut ton


Thao tc nhp hay xut
Khi x l cng vic
Khi quyt nh chn la
im ni
Chun b
Tp hp cc tp tin d liu
Khi chng trnh con
Cc ghi ch, gii thch
Dng tnh ton, thao tc ca chng trnh
Hnh 2:

Cc k hiu lu

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 3

Chng 1: D liu v Thut ton


V d 3: M t thut ton theo ngn ng lu ca phng trnh ax + b = 0
Bt u

Nhp a,b

x := -b/a

Sai
a=0
ng

Xut nghim x

b=0

Sai

Phng trnh
v nghim

ng
Phng trnh
v s nghim

Kt thc
Hnh 3: Lu thut ton PTB1

Trang 4

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 2: Borland Delphi

CHNG 2: BORLAND DELPHI


I. Tng quan v Delphi

I.1. Delphi l g
Delphi l mt ngn ng lp trnh cp cao, c trnh bin dch hon ho, h tr mnh
v cc kiu d liu c cu trc v thit k hng i tng da trn nn tng ngn ng lp
trnh hng i tng (OOP: Object-Oriented Programming) ca Borland Pascal. Ngy
nay, Delphi c pht trin thnh mi trng xy dng ng dng tc thi RAD (Rapid
Application Development). T nhng cng c ca RAD, bn c th gii quyt nhng vn
phc tp trong qua trnh pht trin phn mm nh: lp trnh ng dng v c s d liu
(Database), lp trnh mng v Internet (Internet/Networking), lp trnh Multimedia
(Animation, sound), lp trnh tr chi (Game) cng nh ha (Graphic) hoc lp trnh h
thng, v.v khng nhng trn nn Windows m cn cho c Linux v .NET. Trong gio
trnh ny, chng ti ch gii thiu cc khi nim ca Delphi trong phm vi h iu hnh
Windows. Vi kh nng mnh nh vy ca Delphi, bn an tm khi dng n trin khai
cc ng dng ca bn quy m nh hay ln. iu cn quan tm Delphi l mt ngn ng
rt thn thin vi ngi dng, ph hp cho nhng ngi bt u lm quen vi n cng nh
nhng nh lp trnh chuyn nghip.
V y l gio trnh c son dnh cho i tng l cc sinh vin bt u hc Tin
hc i cng thng qua ngn ng Delphi. Do vy, gio trnh ny ch gii thiu nhng
khi nim cn bn nhm gip cho ngi hc c mt s kin thc nht nh vn dng
vo gii cc bi ton hoc vit nhng chng trnh ng dng nh. Cc chng trong gio
trnh ny s trnh by cc phn t c bn ca Delphi to mt chng trnh chy trn
nn Windows, chnh l mi trng pht trin tch hp IDE (Integrated Development
Environment) v ngn ng hng i tng Borland Pascal. Cc bn s c hc cch
thit k (Design), pht trin (Develop) hay vit m lnh (Code), v kim tra li (Test)
chng trnh ng dng bi vic s dng Delphi.

I.2. Cc phin bn ca Delphi


Tin thn ca Delphi chnh l ngn ng i tng Borland Pascal, v n ngy nay
Delphi c mt qu trnh pht trin vng mnh t phin bn 1 (Delphi1) vo nm 1995,
n phin bn 8 (Delphi for .NET) nm 2005. Trong gio trnh ny, chng ti thng nht
trnh by vi cc bn Delphi 7. y l phin bn ph hp nht v d dng nht hin nay
cho cc bn, i tng l cc sinh vin hc Tin hc i cng.
II. Mi trng pht trin tch hp (IDE) ca Delphi
Mi trng son tho v thit k ng dng ca Delphi 7 chia ra lm 5 phn: Ca s
chnh ca chng trnh Delphi, ca s thit k biu mu (Form designer), ca s lit k cc
thnh phn, i tng dng cy (Object TreeView), ca s thit lp thuc tnh i tng
(Object Inspector), v ca s son tho m lnh (Code Editor). Vi mi trng IDE ny,
bn s c mt giao din (Interface) thit k (Design), bin dch (Compile) v g li
(Debug) d n m bn ang pht trin.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 5

Chng 2: Borland Delphi

Hnh 1:

Giao din ca d n mi to trong Delphi 7

Ca s chnh ca Delphi 7

Ca s thit k biu mu

Ca s lit k cc i tng dng cy

Ca s thit lp cc thuc tnh v s kin ca i tng

Ca s son tho m lnh

II.1. Ca s chnh ca Delphi


Ca s chnh ca Delphi chnh l ca s c thnh tiu cha tn d n (Project
name) m bn ang pht trin, n bao gm thc n chnh (Main menu), thanh cng c
(Toolbar), v bng thnh phn (Component palette).

II.2. Thanh thc n chnh v thanh cng c


II.2.1. Thanh thc n chnh
Bao gm cc thc n th xung (Drop-down menu) nh: File, Edit, Search,
View, v Help. Trong mi menu th xung c nhiu chc nng khc nhau nh: m mt
d n mi, lu d n, bin dch, g li, chy chng trnh, m gio trnh s trnh by chi
tit phn sau.

Trang 6

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 2: Borland Delphi

Hnh 2:

Thanh thc n chnh

II.2.2. Thanh cng c (Toolbars)


Trong Delphi c nhiu thanh cng c, nh: thanh cng c chun (Standard), thanh g
li (Debug), thanh hin th (View), Mi nt (Button) trn thanh cng c thng l mt
thao tc hay mt lnh m khi ta Click vo n s thi hnh, v d nh: Bin dch (Compile),
chy (Run) hoc kt thc chy chng trnh (Program Reset),

Hnh 3:

Cc thanh cng c

II.3. Bng cha cc thnh phn ca Delphi (Component Palette)


Thnh phn (Component), hay cn c gi l iu khin, chnh l i tng c sn
trong Delphi m bn c th thao tc trn n trong thi im thit k form. C 2 loi thnh
phn, l thnh phn trc quan (visual component): nhn thy khi chy chng trnh, v
thnh phn khng trc quan (nonvisual component): khng nhn thy khi chy chng
trnh. Mi thnh phn c mt s tnh cht ring, v c qun l thng qua cc thuc tnh
(Properties), s kin (Events) v cc phng thc (Methods). Cc thuc tnh ny gip bn
c th qun l v iu khin chng trnh ca bn. Khi bn t mt thnh phn ln form,
th n s xut hin trong ca s Object TreeView v Object Inspector s c trnh by
phn sau.
Trong bng cha cc thnh phn c nhiu th (tab) khc nhau, nh th Standard,
Addition, Win32, System, Data Access, ADO, Internet, Rave, Server, Trn mi th cha
cc biu tng (icon) i din cho cc thnh phn.

Hnh 4:

Bng cha cc thnh phn trong th Standard

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 7

Chng 2: Borland Delphi

II.4. Ca s thit k biu mu (Form Designer) v Ca s son tho m lnh


(Code Editor)
II.4.1. Ca s thit k biu mu
Khi bn to mt d n mi, mi trng pht trin tch hp IDE ca Delphi s t to
ra mt biu mu mi (Form) bn ty nghi thit lp cc gi tr ca thuc tnh da trn
Properties, v cc th tc s kin da vo Events, c xc nh trong Object Inspector,
cho vic thit k chng trnh. Trong hu ht trng hp, mt d n thng c t nht mt
form. Cng vi cc thnh phn trn bng cc thnh phn, bn s thit k c mt giao
din cho chng trnh m bn ang xy dng l thn thin nht cho ngi s dng.

TLabel (StdCtrls)

TEdit (StdCtrls)

TButton (StdCtrls)

TMemo (StdCtrls)
Hnh 5:

Form Giai phuong trinh bac nhat v cc Components

Cc gi tr ca form v cc gi tr ca cc component t trn form c lu trong


tp tin form (form file) v c phn m rng .dfm, vi phn tn c xc nh ging nh
phn tn ca n v chng trnh form. Tp tin form ny cha ng cc gi tr ca form
cng nh cc gi tr ca cc component m ta t trn form trong qu trnh thit k.
II.4.2. Ca s son tho m lnh
Mi mt form trong d n c qun l trong mt tp tin n v chng trnh (Unit
file/ Form unit), tn tp tin ca form unit ny c t tn trong qua trnh lu (Save) v c
phn m rng l .pas, ni dung ca tp tin form unit ny cha ng cc khai bo thng
thng ca unit (s cp chi tit phn sau) cng nh cc hm s kin tng ng cho
form v cc component trn n.

Trang 8

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 2: Borland Delphi

Hnh 6:

Ca s son tho m lnh cho form unit untPtb1.Pas

chuyn i gia ca s son tho m lnh vi ca s thit k biu mu, ta s


dng chc nng View/Toggle Form/Unit t main menu hoc g phm chc nng F12.
V d 1: Trong project Giai phuong trinh bac nhat trn, ta lu unit file vi tn
untPtb1.Pas v form file s c t ng t theo l untPtb1.dfm

II.5. Ca s thuc tnh v s kin ca i tng (Object Inspector)

Hnh 7:

th Properties ca Form v th Events ca Button

Ca s Object Inspector ca form hay component u c 2 th: Properties v Events.


Th Properties dng xc nh cc tnh cht ca i tng ni chung (Form, component)
hin hnh mt cch trc quan, chng hn nh Caption, Name, Position, Visible, Th
Events dng lp trnh s kin: xc nh nhng p ng ca i tng khi nhn tc ng
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 9

Chng 2: Borland Delphi


t chut (Mouse) hoc bn phm (Keyboard) nh: nhp chut (OnClick), ng ca s
(OnClose), g phm Enter (OnEnter), thng qua cc th tc s kin.
Khi thay i cc gi tr trong th Properties trong qu trnh thit k, th m lnh
tng ng ca i tng s c thay i theo trong ca s son tho m lnh.

II.6. Ca s lit k cc i tng dng cy (Object TreeView)

Hnh 8:

Ca s lit k cc i tng dng cy trn frmPTB1

Object TreeView lit k cc thnh phn trc quan v khng trc quan m bn t
chng trn form hin hnh. Mi thi im ch c mt form duy nht c lit k.
III. Cu trc mt d n Delphi

III.1. Tp tin d n: (Delphi project file)

Hnh 9:

Trang 10

Tp tin d n prjPtb1.dpr

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 2: Borland Delphi


Khi bn bt u m mi mt chng trnh ng dng bng thao tc:
File/New/Application, Delphi 7 s t ng to ra mt tp tin d n c tn mc nhin ban
u l Project1. Khi bn lu d n, Delphi s ln lt nhc bn t tn cho cc form unit
v tn d n. v d gii phng trnh bc nht trn, form unit c tn l untPTB1.pas
v tn d n l prjPTB1.dpr. Phn tn ca tp tin d n cng chnh l tn ca chng
trnh, c khai bo sau t kha program.
Bn ch : tin t ca unit file l unt, cn project file l prj. V d nh untPTB1.pas
v prjPTB1.dpr
hin th tp tin d n, ta vo chc nng Project/View Source
M lnh ngun (Source code) c Delphi t ng sinh ra trong tp tin d n bao
gm:
- Tn chng trnh, c khai bo bi t kha program, y cng chnh l tn
chng trnh ng dng (Application file).
- Cc cu lnh ch dn ti cc form v cc unit c s dng trong d n c
khi bo sau t kha uses.
- Ch th bin dch {$R *.res}: s dng cc tp tin ti nguyn (Resources).
- Khi lnh thn chng trnh chnh, bt u bi t kha begin v kt thc l end.
+ Initialize
: Khi ng chng trnh ng dng.
+ CreateForm : To form chnh (Main form).
+ Run
: Chy chng trnh ng dng.
Tp tin d n l tp tin trung tm ca mt d n c trin khai bi Delphi. Tp tin
ny cha ng cc tham kho (Reference) ti tt c cc file khc trong d n v lin kt
vi cc form cng nh tp tin n v (Unit file) km theo ca form. Khi chng trnh c
thi hnh (Run, execute), n s bt u t tp tin d n ny.
Tp tin ny c t ng sinh ra, v nh vy, bn khng nn thay i ni dung ca
n ngoi tr trong nhng trng hp cn thit.
Tp tin d n c lu vi phn m rng .dpr

III.2. Cc tp tin cha m lnh (Unit file)


Trong mi ng dng c vit bi Delphi thng gm c 1 tp tin d n (Project file) v
nhiu tp tin n v chng trnh (Unit file) xem li phn "Ca s son tho m lnh"
phn trn. Mi khi ta thm vo mi mt form (hoc Data Module, Frame,) th mt tp
tin unit s c to ra. Thng thng mt d n c trin khai trong thc t s c nhiu
tp tin unit ny. Ni dung tp tin unit ny cha ng m lnh ca chng trnh v ca cc
s kin iu khin (Event handles) trn form cng trn cc thnh phn (Component) m
chng c t trn n.
Unit file c lu vi phn m rng l .pas

III.3. Cc tp tin c t biu mu (Form file)


Ni dung ca tp tin ny xc nh mt cch chi tit cc tnh cht hay thuc tnh
(Properties) ca form v tt c cc i tng (ni chung) lp trnh vin thit k. Tp tin
ny lun i km vi mt tp tin unit file.
Form file c lu vi phn m rng l .dfm
hin th ni dung tp tin ny, bn RClick trn form ri chn View as Text.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 11

Chng 2: Borland Delphi


V d 2: Xem ni dung tp tin form file c tn untPTB1.dfm nh sau:
T ch thit k ca form c tn l frmPTB1, bn RClick trn form ri chn View
as Text nh hnh sau:

Hnh 10: Chuyn cch hin th t dng Form sang dng Text
Ni dung ca tp tin untPTB1.dfm dng vn bn s c nh hnh sau:

Hnh 11: Hin th dng text ca untPTB1.dfm


chuyn i t cch hin th dng Text sang dng Form, ta s dng chc nng
RClick chn chc nng View as Form hay t hp phm Alt+F12:

Trang 12

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 2: Borland Delphi

Hnh 12: Chuyn cch hin th dng Text sang dng Form.

III.4. Cc tp tin ti nguyn (Windows Resource File)


Tp tin ny cng c t ng sinh ra. Ni dung ca n cha ng cc thng tin v
phin bn (Version) cng nh biu tng ca ng dng (Application icon) dng m nh
phn.
Tp tin ny c phn m rng .res
Ta c th m tp tin ti nguyn ny ch thit k (Design) bng chng trnh
Image Editor c km theo b Delphi.

Hnh 13: Giao din chng trnh x l nh Image Editor

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 13

Chng 2: Borland Delphi


IV. Cc thao tc c bn trn Delphi

IV.1. M mt d n mi
to mt d n mi, bn s dng lnh File/New/Application. Hnh nh mt d n
mi to nh hnh sau:

Hnh 14: D n mi to

IV.2. Lu d n
Mt d n trong Delphi s sinh ra kh nhiu tp tin. Do vy, khi lu d n, bn cn
phi to ra 1 th mc cha cc tp tin trong d n . Qu trnh lu d n nh sau:
lu mt d n, bn s dng lnh: File/Save All hay t hp phm Shift+Ctrl+S.
Thng thng bn phi lu cc form trc (mi form l mt tp tin unit c phn m rng
l pas), ri sau mi lu tp tin d n (phn m rng l dpr).
V d 3: Lu d n hin th cu "Hello world!..." ch c mt form, vo th mc
S:\HelloWorld nh sau:

Hnh 15: Ca s thit k Form

Trang 14

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 2: Borland Delphi


- T ca s thit k, chn lnh File/Save All, Delphi s xut hin ra ca s "Save
Uniti File" (vi i =1..n) nh sau:

Hnh 16: Hp thoi Save Uniti As


Click chn hp lit k th "Save in" chn a S: nh hnh sau:

Hnh 17: Hp thoi Save Uniti As: Chn a


B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 15

Chng 2: Borland Delphi


Tip n, Click chn biu tng "Create New Folder" to th mc mi cha cc
tp tin ca d n m bn mun lu (th mc HelloWorld).

Hnh 18: Hp thoi Save Uniti As: To th mc


Sau khi to th mc xong, bn Click nt lnh Open m th mc HelloWorld ra.

Hnh 19: Hp thoi Save Uniti As: M th mc


Trang 16

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 2: Borland Delphi


Tip n, bn g tn tp tin unit m bn mun lu vo trong hp lit k th "File
name", y l tn untHelloWorld.pas, ri Click Save.

Hnh 20: Hp thoi Save Uniti As: Nhp vo tn tp tin unit


n y, Delphi s tip tc xut hin hp thoi "Save Projecti As" bn lu tp tin
d n. Bn g vo tn tp tin d n vo trong hp lit k th "File name", v d ny l tn
prjHelloWorld.dpr, v Click Save.

Hnh 21: Hp thoi Save Projecti As: Nhp tn tp tin d n


B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 17

Chng 2: Borland Delphi


D n c lu v t tn xong. Sau vic ny, nu bn c chnh sa chng trnh,
lu li nhng s thay i ny, bn ch cn ra lnh File/Save All Delphi t ng lu
ton b li d n.
Hnh di y cho bn thy s lng cc tp tin trong mt d n Hello World
c lu, thng qua ca s Windows Explorer nh sau:

Hnh 22: Cc tp tin ca d n Hello Wolrd trong th mc S:\HelloWorld

IV.3. Lu Form (tp tin unit) vi tn khc


Bn chn lnh File/Save As lu.

IV.4. Lu d n vi tn khc
Bn chn lnh File/Save Project As lu d n.

IV.5. ng d n
Bn chn lnh File/Close All ng li ton b d n.

IV.6. Thot khi Delphi


Sau khi lu li ton b d n. thot khi Delphi, bn s dng lnh: File/Exit

Trang 18

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 3: Cc thnh phn c bn ca ngn ng Delphi (Object Pascal)

CHNG 3: CC THNH PHN C BN CA NGN NG


DELPHI (OBJECT PASCAL)
Trong chng ny v chng 4 tip theo sau, gip cho vic lm quen vi cc khi
nim c bn c d dng. Gio trnh s xy dng cc v d theo dng chng trnh ch
vn bn (Text mode) hay khng h tr ho (Console Application). to mt
project mi theo dng Console Application,
bn s dng chc nng
File/New/Other/Console Application.
I. B ch vit
-

B 26 ch Latin:
o Ch in

: A, B, C, ..., X, Y, Z

o Ch thng : a, b, c, ..., x, y, z
-

B ch s thp phn : 0, 1, 2, 3, ..., 8, 9

K t gch ni

Cc k hiu ton hc : +, -, *, /, =, <, >, (, ), [, }

: _

II. T kha
L cc t ring ca Object Pascal, c ng ngha c xc nh, khng c dng
n vo cc vic khc hoc t tn mi trng vi cc t kha.
T kha chung: program, begin, end, procedure, function
-

T kha khai bo: const, var, type, array, string, record, set, file, label, class,...
T kha ca lnh la chn: if ... then ... else,
case ... of
T kha ca lnh lp: for... to... do, for... downto... do, while... do, repeat...
until
T kha iu khin: with, goto, exit, halt
T kha ton t: and, or, not, in, div, mod

Di y l danh sch mt s t kha thng dng:


and

for

record

array

function

repeat

begin

goto

set

case

if

to

class

implementation

try

const

interface

type

div

label

unit

do

mod

until

downto

object

uses

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 19

Chng 3: Cc thnh phn c bn ca ngn ng Delphi (Object Pascal).


else

of

var

end

procedure

while

finalization

program

with

finally

property
Bng 1: Cc t kho

III. Tn danh hiu t t


Trong Delphi t tn cho cc bin, hng, kiu, chng trnh con ta dng cc danh
hiu (Identifier). Quy tc t tn ca danh hiu trong Delphi l:
-

Chiu di ti a: 256 k t.

Bt u bng ch ci hoc du _ (gch di); tip theo c th kt hp s v cc


k t khc.

Khng c cha khong trng.

Khng trng vi cc t kha.

Khng phn bit ch hoa v ch thng.

Cc nh danh lng nhau c dng du . (du chm) truy xut.

V d 1:
-

Danh hiu t t hp l:

Danh hiu t t khng hp l:


trng),...

x;

s1;

delta;

pt_bac_2;

1S (bt u bng s), Del ta (tn c khong

IV. Hng

IV.1. Khi nim


Hng l mt i lng c gi tr khng i trong qu trnh chy chng trnh. Ta
dng tn hng chng trnh c r rng v d sa i.
C php khai bo:
Const
Tn_hng = biu_thc_xc_nh_gi_tr_ca_hng;

IV.2. Hng tr
Trong trng hp ny th biu_thc_xc_nh_gi_tr_ca_hng l mt tr xc nh.
Gi tr ca biu thc ny s c nh tr mt ln v khng thay i.
V d 2:
Const MaxSize = 100;
Const x = Abs(-100)+Length('Chao ban'); // hng x =108
Const St = 'Borland'+ ' Delphi'; // hng St = 'Borland Delphi'

Trang 20

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 3: Cc thnh phn c bn ca ngn ng Delphi (Object Pascal)


Ch : Biu thc hng y c th l s, chui k t, cc hng true, false, nil, kt
hp vi cc ton t thch hp. Biu thc hng khng th cha cc li gi hm, bin hay
con tr, ngoi tr mt s hm n gin nh: Abs, Chr, Length, Succ, Odd,

IV.3. Hng nh kiu:


C th cha cc gi tr kiu mng, bn ghi, kiu th tc v kiu con tr.
C php khai bo hng nh kiu:
Const
Tn_hng: kiu_d_liu = gi_tr_hng;
V d 3:
Const MaxSize : Integer =100;
Trong v d trn chng ta khai bo mt hng c tn l MaxSize, c kiu Integer v
mang gi tr bng 100. Chng ta thy, cch khai bo hng kiu ny rt ging khai bo v
khi to bin (chng ta s xem trong phn bin). Nu ngi lp trnh bt ch th bin dch
{$J+} th hng c xem nh bin; tc l chng ta c th thay i gi tr ca hng lc
chng trnh thc thi.
Hng mng, hng kiu bn ghi, hng kiu th tc chng ta s tm hiu chi tit trong
cc phn sau.
V. Kiu (Type)

V.1. nh ngha
Ngoi cc kiu nh sn, Delphi cn cho php ta nh ngha cc kiu d liu khc
t cc kiu cn bn theo qui tc xy dng ca Delphi.

V.2.

Cch khai bo
Type
Tn_kiu = M_t_xy_dng_kiu;
V d 4: nh ngha cc kiu d liu ngi dng (kiu d liu mi) v khai bo
bin theo kiu va nh ngha
type //Khai bo kiu ngi dng
SoNguyen = integer;
Diem = single;
Tuoi = 1 .. 100;
Color = (Red, Blue, Green);
Thu = (ChuNhat, Hai, Ba, Tu, Nam, Sau, Bay);

V khi khai bo kiu th ta c quyn s dng kiu nh ngha khai bo bin


nh sau:
var //Khai bo bin theo kiu ngi dng nh ngha
i, j: SoNguyen;
dtb: Diem;
t: Tuoi;
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 21

Chng 3: Cc thnh phn c bn ca ngn ng Delphi (Object Pascal).


mau: Color;
ngay_hoc: Thu;
VI. Bin
Bin l mt cu trc ghi nh c tn ( l tn bin hay danh hiu ca bin). Bin ghi
nh mt d liu no gi l gi tr (value) ca bin. Gi tr ca bin c th c bin i
trong thi gian s dng bin.
S truy xut ca bin ngha l c gi tr hay thay i gi tr ca bin c thc hin
thng qua tn bin.
C php khai bo bin:
Var
tn_bin [hoc danh_sch_tn_bin] : Kiu_bin;
Nu chng ta khai bo mt danh sch cc bin c cng kiu th mi tn bin cch
nhau mt du phy. Kiu bin l mt kiu d liu chun trong Delphi hoc kiu c nh
ngha bi ngi dng.
V d 5:
var a
: extended ; // khai bo a l mt bin kiu s thc
b, c : integer ; // khai bo 2 bin b, c c kiu s nguyn
hten : shortstring;
m_Ok: boolean; // khai bo m_Ok l mt bin kiu logic
Chon : char;
// khai bo Chon l mt bin kiu k t
Cn khai bo cc bin trc khi s dng chng trong chng trnh. Khai bo mt
bin l khai bo s tn ti ca bin v cho bit n thuc kiu g.
VII. Biu thc

VII.1. nh ngha
Mt biu thc l mt cng thc tnh ton bao gm cc php ton (ton t), hng,
bin, hm v cc du ngoc.
V d 6:
5 + u * sqrt(t) / sin(pi/2) ;
(a=5) and (b<>7) or (c >= 10);
max(x,y);

// gi hm

Trong : a, b, c, x, y, u, t l cc bin c khai bo.

VII.2. Th t u tin
 Ton t:
Trong Delphi gm c cc ton t c phn chia nh sau:
-

Ton t s hc

Trang 22

+, -, *, /, div, mod

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 3: Cc thnh phn c bn ca ngn ng Delphi (Object Pascal)


-

Ton t logic

not, and, or, xor

Ton t quan h :

=, >, <, <>, <=, >=

Ton t bitwise :

not, and, or, xor, shl, shr

Ton t lm vic trn tp hp : +, -, *, /, <=, >=, <>*, in

Ton t thao tc trn con tr

: +, -, @ , ^, =, <>

- Ton t x l lp i tng : as, is


Khi tnh gi tr ca mt biu thc, ngn ng Delphi qui c th t u tin ca cc
php ton t cao n thp nh sau:
Th t u tin

Php ton
@, not

u tin 1

*, /, div, mod, and, shl, shr, as

u tin 2

+, -, or, xor

u tin 3

=, <>, <, >, <=, >=, in, is

u tin 4

Bng 2: Th t u tin ton t


 Qui c tnh th t u tin:
Khi tnh mt biu thc c 3 qui tc v th t u tin nh sau:
Qui tc 1.
Qui tc 2.
Qui tc 3.

Cc php ton no c u tin cao hn s c tnh trc.


Trong cc php ton c cng th t u tin th s tnh ton s c thc
hin t tri sang phi.
Phn trong ngoc t trong ra ngoi c tnh ton tr thnh mt gi
tr n.

VIII. Chuyn kiu (Typecast)


Chuyn kiu hay cn gi l p kiu l mt k thut c dng chuyn gi tr ca
mt biu thc sang mt kiu d liu khc.
C php chuyn i kiu d liu: Tn_Kiu(biu_thc);
Vi biu_thc l mt hng, th ta c cch chuyn kiu theo gi tr (value typecasts),
cn vi biu_thc l mt bin, th ta c cch chuyn kiu theo bin (variable typecasts).
V d 7: Chuyn kiu theo tr:
t := integer('A');
v := char(65);
b := boolean(0);

// chuyn k t A sang s, t = 65
// chuyn s sang k t, v = 'A'
// chuyn s sang kiu Booblean, b = False

V d 8: Chuyn kiu theo bin:


var MyChar: char;
Shortint(MyChar) := 122;

// Gn k t 'z' vo bin MyChar

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 23

Chng 3: Cc thnh phn c bn ca ngn ng Delphi (Object Pascal).


V d 9: Vit chng trnh minh ho 2 cch chuyn kiu theo tr v theo bin:
T File/New/Other, DClick vo Console Application m ra 1 d n mi v nhp
cc dng lnh hon chnh nh hnh sau:

Hnh 1: Chng trnh chuyn kiu Console mode


Nhn t hp phm Ctrl+F9 bin dch li.
Nhn phm chc nng F9 chy chng trnh, v ta c kt qu ch Console
nh sau:

Hnh 2: Kt qu chy chng trnh.


IX. Li ch thch v cc ch dn bin dch
Trong Delphi c 3 c php ghi ch thch nh sau:
{ ch thch ghi trong cp du ngoc mc }
(* ch thch c bao bi cp du ngoc v du sao*)
// ch thch trn mt dng
Hai kiu ch thch khc nhau c th thc hin ch thch lng nhau nhng cng kiu
th khng c php lng nhau.

Trang 24

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 3: Cc thnh phn c bn ca ngn ng Delphi (Object Pascal)


X. Cu trc mt d n ch Form (Form Application)
Cu trc ca mt d n (project) trong Delphi gm 2 phn chnh:
Phn 1: L tp tin d n (Project file)

Hnh 3: Project file.


Phn 2: L (cc) tp tin n v chng trnh (Unit file)

Hnh 4: Kt qu chy chng trnh.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 25

Chng 4: Cc kiu d liu s cp chun, lnh n

CHNG 4: CC KIU D LIU S CP CHUN, LNH N


I. Cc kiu d liu s cp (Simple type)

I.1. Kiu s nguyn (Integer)


Kiu s nguyn biu din mt tp hp con cc s. Delphi phn lm hai loi s
nguyn c nh ngha bi cc t kha nh sau:
T kha

Phm vi

Kch thc

Integer

-2147483648..2147483647

s nguyn c du 32 bit

Cardinal

0..4294967295

s nguyn dng 32 bit

Bng 1: Kiu nguyn


Trong , kiu Integer cn c chia ra thnh mt s tp con c nh ngha bi
cc t kha sau:
T kha

Phm vi

Kch thc

Shortint

-128..127

S nguyn c du 8 bit

Smallint

-32768..32767

S nguyn c du 16 bit

Longint

-2147483648..2147483647

S nguyn c du 32 bit

Int64

-2^63..2^63-1

S nguyn c du 64 bit

Byte

0..255

S nguyn dng 8 bit

Word

0..65535

S nguyn dng 16 bit

Longword

0..4294967295

S nguyn dng 32 bit

Bng 2: Cc kiu nguyn

I.2. Kiu k t (Char)


Kiu k t c bn bao gm AnsiChar v WideChar. AnsiChar l kiu k t thng
thng, chim kch thc mt byte (tng t b k t ASCII m gio trnh s cp
phn tip theo). WideChar l kiu k t hai byte, l kiu k t dng biu din b m
Unicode cho tp hp k t.
Tuy nhin, cc bn vn c th khai bo s dng kiu k t vi t kha Char. V trn
thc t th kiu Char tng ng vi kiu AnsiChar. Ngoi Char v AnsiChar, Delphi cn
h tr tp k t mt byte thng qua cc kiu: PChar, PAnsiChar v AnsiString. Tng t
th Delphi cng h tr tp k t Unicode (ngoi kiu WideChar) thng qua cc kiu:
PWideChar, WideString.
Mt k t c vit trong cp du nhy n (''). tin trao i thng tin cn phi
sp xp, nh s cc k t, mi cch sp xp nh vy gi l bng m. Bng m thng dng
hin nay l bng m ASCII (American Standard Code for Information Interchange). H m
ASCII dng nhm 7 bit hoc 8 bit biu din ti a 128 hoc 256 k t khc nhau v m
ha theo k t lin tc theo c s 16.
Trang 26

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 4: Cc kiu d liu s cp chun, lnh n


H m ASCII 7 bit, m ho 128 k t lin tc nh sau:
0

NUL (k t rng)

1 31

31 k t iu khin

32 47

cc k t khong trng SP (space) ! # $ % & ( ) * + , - . /

48 - 57

k s t 0 n 9

58 - 64

cc du : ; < = > ? @

65 - 90

cc ch in hoa t A n Z

91 96

cc du [ \ ] _ `

97 122

cc ch thng t a n z

123 127 :

cc du { | } ~ DEL (xa)

H m ASCII 8 bit (ASCII m rng) c thm 128 k t khc ngoi cc k t nu


trn, gm cc ch ci c du, cc hnh v, cc ng k khung n v khung i v mt s
k hiu c bit.
thc hin cc php ton s hc v so snh, ta da vo gi tr s th t m ASCII
ca tng k t, chng hn: 'A' < 'a' v s th t m ASCII tng ng l 65 v 97.
Hm Chr(n): Tr v k t tng ng vi s th t m ASCII n.
Hm Ord(ch): Tr v s th t ca k t ch trong bng m ASCII.
V d 1: Vi khai bo bin var ch: char; stt:byte; th cc cu lnh sau s
c gi tr nh sau:
ch := chr(65);
stt := ord('A');

//ch = 'A'
//stt = 65

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 27

Chng 4: Cc kiu d liu s cp chun, lnh n


BNG M ASCII vi 128 k t chun
Hex
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F

0
NUL
0
SOH
1
STX
2

6
BEL
7
BS
8
HT
9
LF
10
VT
11
FF
12
CR
13
SO
14
SI
15

1
DLE
16
DC1
17
DC2
18
DC3
19
DC4
20
NAK
21
SYN
22
ETB
23
CAN
24
EM
25
SUB
26
ESC
27
FS
28
GS
29
RS
30
US
31

2
SP
32
!
33

34
#
35
$
36
%
37
&
38

39
(
40
)
41
*
42
+
43
,
44
45
.
46
/
47

3
0
48
1
49
2
50
3
51
4
52
5
53
6
54
7
55
8
56
9
57
:
58
;
59
<
60
=
61
>
62
?
63

4
@
64
A
65
B
66
C
67
D
68
E
69
F
70
G
71
H
72
I
73
J
74
K
75
L
76
M
77
N
78
O
79

5
P

6
`

80
Q

p
96

a
81

87

103
h

88
Y

104
I

89
Z

105
j

90
[

106
k

91
\

107
l

92

117
v

102
g

116

101

86
W

115

100

85
V

114

99

84
U

113

98

83
T

112

97

82
S

108
]
m
93
109
^
n
94
110
_
o
95
111

118
w
119
x
120
y
121
z
122
{
123
|
124
}
125
~
126
DEL
127

Hnh 1: Bng m ASCII chun

Trang 28

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 4: Cc kiu d liu s cp chun, lnh n


BNG M ASCII vi 128 m rng
Hex
0

128
1

145

130

132

148

133
6

135

8
9

139
C

140
D

157

142
F

173

158

189

174

190

191

207

252

237

222

251

236

221

206

250

235

220

205

175

204

249

234

219

159

188

143

172

248

233

218

203

247

232

217

202

187

186

171

156

141

246

231

216

201

245

230

215

200

185

170

155

184

169

154

199

244

229

214

243

228

213

198

183

168

153

138
B

167

227

212

197

182

152

137
A

166

151

136

181

242

241

226

211

196

165

150

180

149

134
7

164

225

240

210

195

224

209

194

179

208

193

178

163

192

177

162

147

176

161

146

131
4

160

144

129

253

238

254

239

255

223

Hnh 2: Bng ASCII m rng

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 29

Chng 4: Cc kiu d liu s cp chun, lnh n


V d 2: Vit chng trnh in ra 256 k t ca bng m ASCII:
T File/New/Other, DClick vo Console Application m ra 1 d n mi v nhp
cc dng lnh hon chnh nh hnh sau:

Hnh 3: Chng trnh in bng m ASCII


Nhn t hp phm Ctrl+F9 bin dch li.
Nhn phm chc nng F9 chy chng trnh, v ta c kt qu ch Console
nh sau:

Hnh 4: Kt qu chng trnh ch Console

I.3. Kiu s thc (Real type)


I.3.1. Khi nim
Delphi, kiu s thc biu din mt tp hp cc s mang du chm ng (float,
real). Kch thc ca n ty thuc vo t kha m chng ta s dng trong khai bo.

Trang 30

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 4: Cc kiu d liu s cp chun, lnh n


T kha

Phm vi

Kch thc
(byte)

Real48

2.9 x 10^-39 .. 1.7 x 10^38

Single

1.5 x 10^-45 .. 3.4 x 10^38

Double

5.0 x 10^-324 .. 1.7 x 10^308

Extended

3.6 x 10^-4951 .. 1.1 x 10^4932

10

Comp

-2^63+1 .. 2^63 -1

Currency

-922337203685477.5808..
922337203685477.5807

Bng 3: Cc t kho ca kiu thc


Tuy nhin, kiu s thc chng ta thng dng c khai bo bng t kha Real,
trong Delphi kiu Real tng ng vi kiu Double.
T kha
Real

Phm vi

Kch thc
(byte)

5.0 x 10^-324 .. 1.7 x 10^308

Bng 4: Kiu Real


I.3.2. Mt s php ton v hm trn kiu s (s nguyn v s thc)
Cc php ton s hc hai ngi:
Php ton

ngha

Kiu ton hng Kiu kt qu

Cng

integer, real

integer, real

Tr

integer, real

integer, real

Nhn

integer, real

integer, real

Chia thc

integer, real

real

div

Chia nguyn

integer

integer

mod

Ly phn d

integer

integer

Bng 5: Cc php ton 2 ngi


V d 3: Vi cc bin x, y, z kiu integer
x := 3*2;

// x = 6

y := 15 div 6;

// t = 2

z := 15.5 mod 5;

// li

Tuy nhin, php ton + v ton - cn c th l php ton mt ngi:


Php ton

ngha

Kiu ton hng Kiu kt qu

V d

+ (unary)

du dng

integer, real

integer, real

+7

- (unary)

du m (ly s i)

integer, real

integer, real

-7

Bng 6: Cc php ton 1 ngi


B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 31

Chng 4: Cc kiu d liu s cp chun, lnh n


Khi thc hin cc php ton chng ta cn ch mt s im c bit sau:
-

Kt qu ca php chia thc (/) lun lun c kiu Extented, khng quan tm n
kiu ca cc ton hng.

Php ton mod l php ton ly phn d.

Khi thc hin php chia x/y (hay l x mod y hoc x div y) th y phi khc 0, nu y
c gi tr 0 th chng trnh s pht sinh li.

Mt s hm chuyn i kiu d liu:


function IntToStr ( Number : Integer ) : string;

//Unit: SysUtils

function IntToStr ( BigNumber : Int64 ) : string;

//Unit: SysUtils

Hm IntToStr l hm thc hin vic chuyn i mt s nguyn (hoc s int64) thnh


mt chui s.
function FloatToStr(Value: Extended): string;

//Unit: SysUtils

function FloatToStr(Value: Extended; const FormatSettings: TFormatSettings): string;


Hm FloatToStr chuyn i mt s thc hay s du chm ng (Value) thnh mt
chui biu din tng ng cho s .
Bng di y l cc hm lin quan n kiu s:
Hm

ngha

abs(x);

|x| : ly gi tr tuyt i ca s x

arctan(x:extended): extended;

arctang(x)

cos(x: extended): extended;

cos(x) : ly cos ca x

exp(x: real): real;

ex

frac(x:extended): extended;

Tr v phn thp phn ca bin x

inc(var x [ ; n: longint ] );

tng bin x ln 1 hoc n gi tr

int(x: extended): extended;

Tr v phn nguyn ca bin x

ln(x);

ln x : ly logarit nepe ca tr x (e 2.71828)

max(a,b: numbertype): numbertype;

Tr v s ln hn 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;

Kim tra n c phi l s l hay khng:


True: Nu n l
False: Nu n chn.

pi: extended;

Tr v gi tr pi=3.1415926535897932385.

random[( range: integer)];

Tr v mt s ngu nhin x v 0 <= x < range,


nu range khng ch ra th 0 <= x < 1.

sqr(x);

x2 : ly bnh phng tr s x

sqrt(x);

: ly cn bc 2 ca x

sin(x);

sin (x) : ly sin ca x

succ(x);

Tr v gi tr sau ca x

Trang 32

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 4: Cc kiu d liu s cp chun, lnh n


trunc(x: extended): int64;

Ly phn nguyn ca x

round(x: extended): int64;

Lm trn gi tr ca x, ly s nguyn gn x nht


Bng 7: Cc hm x l s

V d 4: Vit chng trnh tnh chu vi v din tch ca hnh ch nht:


T File/New/Other, DClick vo Console Application m ra 1 d n mi v nhp
cc dng lnh hon chnh nh hnh sau:

Hnh 5: Chng trnh tnh chu vi din tch hnh ch nht


Nhn t hp phm Ctrl + F9 bin dch li.
Nhn phm chc nng F9 chy chng trnh, v ta c kt qu ch Console
nh sau:

Hnh 6: Kt qu chng trnh ch Console

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 33

Chng 4: Cc kiu d liu s cp chun, lnh n

I.4. Kiu logic (Boolean)


I.4.1. Khi nim
Mt d liu thuc kiu boolean l mt i lng c th nhn c mt trong hai gi
tr logic l true (ng) v false (sai). Delphi cung cp 4 kiu boolean sau:
T kha

Kch thc (byte)

Boolean

ByteBool

WordBool

LongBool
4
Bng 8: Kiu logic
Trong , kiu Boolean l kiu tng thch vi kiu Boolean ca Pascal v c a
thch hn c. Mt gi tr kiu ByteBool, LongBool hoc WordBool c xem l true nu
n c gi tr khc 0, ngc li l false.
I.4.2. Php ton Boolean
T kha

ngha

Not

Php ton ph nh

And

Php ton v

Or
Php ton hoc
Bng 9: Cc php ton trn kiu logic
C php:

Php ton and: (x1) and (x2) and ... and (xn) tr v kt qu l true khi tt c cc
ton hng l true, ngc li tr v false.

Php or: (x1) or (x2) or ... or (xn) cho kt qu l false khi tt c cc ton hng l
false, ngc li tr v true.

V d 5: V d: vi x, y, z kiu 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
hin th gi tr boolean ln mn hnh, bn s dng hm c sn trong Delphi:
function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string;
Nu bn mun hin th gi tr ca B l chui k t True hoc False th cho
UseBoolStrs = True; cn nu mun hin th gi tr ca B l '-1' hoc '0' th th cho
UseBoolStrs = False.
II. Cu lnh (statement)
Trong mt chng trnh Delphi, sau phn m t d liu l phn m t cc cu lnh.
Cc cu lnh c nhim v xc nh cc cng vic m my tnh phi thc hin x l cc
d liu c m t v khai bo. Cu lnh c chia thnh cu lnh n gin v cu lnh
c cu trc.

Trang 34

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 4: Cc kiu d liu s cp chun, lnh n


Cc cu lnh phi c ngn cch vi nhau bi du chm phy (;) v cc cu lnh
c th vit trn mt dng hay nhiu dng.
III. Lnh n (Simple statement)
Lnh n l lnh khng cha bt k cu lnh no khc. Cc lnh n bao gm: lnh
gn, lnh gi hm v th tc, lnh nhy (goto).

IV. Lnh gn (Assignment statement)


Mt trong cc lnh n gin v c bn nht ca Delphi l lnh gn. Mc ch ca
lnh ny l gn cho mt bin khai bo mt gi tr no cng kiu (hay tng thch)
vi bin.
C php ca lnh gn l:
Bin := biu_thc;
Lnh gn s t li gi tr hin hnh ca bin bng gi tr mi nm bn phi ton t
gn (du hiu :=).
V d 6: Khi khai bo
var
c: char;

i: integer;

x: real;

p, q: boolean;

th ta c th c cc php gn 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;

ngha:
Bin v cc pht biu gn l cc khi nim quan trng ca mt h cc ngn ng lp
trnh, chng phn nh cch thc hot ng ca my tnh, l:
-

Lu tr cc gi tr khc nhau vo mt nh ti nhng thi im khc nhau.

Mt qu trnh tnh ton c th coi nh l mt qu trnh lm thay i gi tr ca


mt (hay mt s) nh no , cho n khi t c gi tr cn tm.

V. Lnh gi th tc v hm
Trong lp trnh OOP, thut ng hm (Function), th tc (Procedure) v phng thc
(Method) l khi nim quen thuc vi ngi lp trnh. cc bn c th nm bt c
kin thc lp trnh trong Delphi, Gio trnh a ra trc khi nim ny mt cch ngn gn
nh sau:
Hm v th tc c gi chung l chng trnh con. Hm c xy dng thng qua
tn hm v danh sch cc tham s hnh thc nu c, mi hm th lun tr v duy nht 1
gi tr. Cn th tc th c tn th tc v danh sch cc tham s hnh thc nu c. Khc vi

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 35

Chng 4: Cc kiu d liu s cp chun, lnh n


hm, th tc KHNG tr v mt gi tr no c, n thng bao gm mt dy cc cu
lnh cn c thc hin mt cch tun t gii quyt mt cng vic no .
Bn cn phn ra 2 giai on r rng: Xy dng chng trnh con, v s dng chng
trnh con.
V d 7: V hm - Function
- Xy dng hm: Bn vit hm tnh tng 2 s a v b v kt qu tr v ca hm chnh
l kt qu a + b. N c hnh dng nh sau:
function Cong(a, b: single) : single;
begin
Cong := a + b;
end;

- S dng hm (Li gi hm): bn cn tnh php cng ca 2 con s c th no,


chng hn bn mun 5 cng vi 7, th nh vy bn s truyn s 5 vo cho a v 7
vo cho b. C th bn s gi nh sau:
mTong := Cong(5,7);

//vi bin mTong kiu Single v mTong = 12

Nh vy bc xy dng: a v b c gi l tham s hnh thc. Cn bc gi hm th 5


v 7 c gi l cc tham s thc.
V d 8: V th tc Procedure
- Xy dng th tc: Bn vit th tc hin th ra mn hnh n cu cho Welcome to
Delphi!, vi n c th l 1 ln, 3, 10, 100 ln chng hn:
procedure Welcome(n: integer);
var i: integer;
begin
for i:=1 to n do writeln (Welcome to Delphi!);
end;

- S dng th tc (Li gi th tc): y mun hin th 5 cu cho, th bn ra cu


lnh nh sau:
Welcome(5);

//Hin th 5 cu cho

Khi nim phng thc trong mt lp cng c xem l th tc hoc hm (Member


method). Kin thc ny cc bn s c hc chng 5. y, cc bn cn ch iu
ny: Phng thc l chng trnh con m Delphi xy dng sn trong mi lp/thnh
phn (Class/Component) cho bn (Tht khe lm sao!), bn ch cn ly trong ti khn
ca Delphi s dng vit chng trnh m thi.
Tm li: Khi s dng phng thc hay cc chng trnh con c xy dng sn
bi Deplhi, bn cn nm r mi phng thc, th tc hoc hm c bao nhiu tham s hnh
thc v kiu ca chng l g truyn vo cho chng cc tham s thc tng ng cho
ng yu cu ca bn.
V d vi c php th tc c sn trong Delphi l:
procedure ShowMessage(const Msg: string);

th bn ch cn ly ra s dng vi cu lnh n gin nh sau:


ShowMessage(Toi dang hoc Delphi day nhe!);

Cc bn s c hc chi tit cc khi nim ny trong chng Lp Trnh X L S


Kin v Chng Trnh Con cc phn sau.

Trang 36

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 4: Cc kiu d liu s cp chun, lnh n


VI. Lnh Goto
T thn chng trnh con, bn c th s dng lnh goto chuyn hng thc hin
chng trnh ti mt v tr bt k thng qua mt nhn c khai bo trc.
C php lnh goto:
Goto nhn;
Vi nhn c khai bo vi c php sau:

Label Tn_nhn;

Lnh goto l lnh nhy khng iu kin, n chuyn hng thc thi ca chng trnh
n v tr m nhn ang ng.
Trong phong cch lp trnh OOP, lnh goto t ra b li thi v rt t khi c dn lp
trnh s dng.
V d 9: Minh ha lnh goto tnh biu thc a/b.
T File/New/Other, DClick vo Console Application m ra 1 d n mi v nhp
cc dng lnh hon chnh nh hnh sau:

Hnh 7: V d minh ha lnh goto v khai bo nhn - label


Nhn phm chc nng F9 chy chng trnh, v ta c kt qu ch Console
nh sau:

Hnh 8: Kt qu chng trnh.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 37

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

CHNG 5: LP TRNH X L S KIN CC THNH PHN


TRONG GIAO DIN DELPHI
I. Lp trnh x l s kin

I.1. Lp (Class) v i tng (Object)


Trong cc chng trc, cc bn c bit n cch lp trnh tun t ch
Console Application v bit c mt s khi nim c s. chng ny, cc bn s c
trnh by mt phng php lp trnh chnh ca gio trnh v rt ph bin hin nay l lp
trnh s kin da trn nn tng ca lp trnh hng i tng (OOP: Object-Oriented
Programming).
Trong cuc sng, bn thy c nhiu i tng c xp chung vo mt loi/lp,
chng hn nh nhng ngi cn i hc ta xp chung vi mt lp l lp SINHVIN,
nhng ngi i lm vic th xp vo lp CBCNV. Nh vy ta c hnh nh nh sau: tt c
mi ngi u c xp chung vo mt lp trn cng l lp NGI. Ta cng c th phn
chia nhng ngi trong lp NGI ny thnh hai nhm l SINHVIN v CBCNV da
vo tnh cht phn bit l ang i lm hay cn i hc.

NGI

- M s SV
- Ngnh hc
- v.v...

SINHVIN

- H tn
- Ngy sinh
- Phi
- v.v...

CBCNV

- M cn b
- Bc lng
- v.v...
- v.v...

Hnh 1: M hnh cc lp
C th: Nu xt mt gia nh cng chc gm 4 thc th ngi l ngi A cha, B m: i lm; anh C, ch D: ang i hc chng hn, th nh th ta c 2 i tng A, B c
to ra t lp CBCNV v 2 i tng C, D c sinh ra t lp SINHVIN v c 4 i
tng ny u c nhng tnh cht chung c tha hng t lp NGI, v nh vy 2 lp
SINHVIN v CBCNV l cc lp dn xut t lp NGI.
I.1.1. Lp (Class)
Lp l mt khi nim c s dng rt nhiu trong cch lp trnh OOP. Vic hiu r
cc kin thc v lp th nm ngoi phm vi ca gio trnh ny. Do vy, gio trnh ch a
ra cc khi nim rt c bn v lp, mc ch cc bn d hiu hn v i tng (Object),
l mt thnh phn rt ph bin trong lp trnh ca Delphi. Nh vy, lp c dng nh
ngha ra kiu d liu cu trc m n bao gm 3 thnh phn c bn:
- Cc trng (Fields): l cc bin d liu ca lp.

Trang 38

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


-

Cc phng thc (Methods): l cc hm hay th tc thc hin thao tc no


trn i tng. C 2 phng thc c bit trong lp m bn cn lu l
phng thc to (Constructor) v phng thc hy (Destructor) s c dng khi
mt i tng (Object) c to nn hoc b hy.

Cc thuc tnh (Attributes) cu mt lp bao gm cc bin, cc hng, hay tham s


ni ti ca lp . Tnh cht quan trng nht ca cc thuc tnh khi chng l bin
l c th b thay i trong qu trnh hot ng ca mt i tng. Thng thng
truy xut cc bin trng, ta da vo trng thi ca thuc tnh l c (read)
hay ghi (write) nhn hay l thit lp gi tr cho chng.

Lp c khai bo theo c php nh sau:


type className = class (ancestorClass)
memberList
end;
Trong :
- ancestorClass l lp cha/t tin ca lp dn xut (descendant) l className, lp
className s c tha hng (inheritance) t lp cha. Trong Delphi lp thy t
l lp TObject.
- memberList l cc thnh phn ca lp l trng, phng thc v thuc tnh ca
lp c trnh by trn.
Trong v d gii phng trnh bc nht trn, ta c mt lp TfrmPTB1 c dn
xut t lp cha l lp TForm, lp TForm li c dn xut t lp TCustomForm,... v c
th n c dn xut t lp thy t trong Delphi l lp TObject nh hnh sau:

Hnh 2: Lp TfrmPTB1 v cc lp t tin (Ancestor Classes) ca n


B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 39

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


V d 1: Khai bo lp TfrmPTB1 cho form unit untPtb1.Pas v d trn 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 tng (Object)
i tng l thc th (Instance) c sinh ra t mt lp (Class), hay ni cch khc
khi ta khai bo mt bin thuc mt lp no , th bin chnh l mt i tng mi
c cp pht. i tng ny c to ra bi phng thc constructor v s b gii phng
bi phng thc destructor.
* Quy cch t tn i tng:
Trong phong cch lp trnh chuyn nghip, quy c t tn cho i tng thng
c ghp 2 phn: tin t v tn gi nh ca i tng . Tin t thng c 3 k t
xc nh i tng thuc loi thnh phn no. Trong gio trnh ny gi cho cc bn
cc tin t (prefix) cho cc i tng ca cc thnh phn nh sau:
i tng

Tin 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

Trang 40

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


i tng

Tin 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

Bng 1: Quy cch t tn cc i tng


V d 2: Khai bo mt thc th (i tng) frmPTB1 nh sau:
var
frmPTB1: TfrmPTB1; // i tng frmPTB1 ca lp TFrmPTB1
Lp trnh hng i tng l s gn kt gia d liu v cc hm x l d liu to
thnh i tng. Mi i tng bao gm:
-

Thuc tnh (Properties): l d liu ca i tng.

Phng thc (Methods): l nhng hnh ng m i tng c th thi hnh.

S kin (Events): l nhng hnh ng ca i tng p ng li thng qua th


tc s kin do ngi lp trnh ci t, khi ngi dng tng tc vi chng trnh.

V d 3: Trong chng ny, cc bn s c hc cch s dng cc thuc tnh v cc


s kin ca cc i tng thng qua mt chng trnh u tin l
prjWelcome.dpr
-

Bc 1: Bn vo chc nng: File/New/Application to ra d n mi.

Hnh 3: Hnh nh ca New Form.


T ca s thuc tnh v s kin ca i tng (Object Inspector), da vo thuc tnh
name, bn t tn cho form l frmWelcome Delphi nh ngha ra 1 lp c tn l
TfrmWelcome c dn xut t lp cha l TForm nh sau:
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 41

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


type
TfrmWelcome = class(TForm)
// memberList
end;

V khai bo mt i tng c tn l frmWelcome thuc kiu lp TfrmWelcome nh sau:


var
frmWelcome: TfrmWelcome;

Hnh 4: Hnh nh lp TfrmWelcome v i tng frmWelcome


-

Bc 2: T bng cc thnh phn (Component Palette), click vo th Standard ri


ln lt t cc thnh phn TLabel, TEdit, v TButton ln Form:

Hnh 5: Cc i tng Label, Edit v Button t trn Form.


Trang 42

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Trong mi trng lp trnh IDE, cc lp trong Delphi thng c ci t thnh cc
thnh phn (TComponent) ngi lp trnh d dng tha hng khi thit k v vit m
lnh. Nh vy: Tn lp cng chnh l tn thnh phn.
T y v sau, thut ng i tng A ca mt thnh phn TA c vit ngn
gn l i tng A.
V d 4: Cu lnh frmWelcome:TForm; c y l i tng frmWelcome
thuc lp (thnh phn) TForm. Tuy nhin, ta c th c gn li nh: i
tng frmWelcome, hoc cu lnh btnGiai:TButton; c c l nt
lnh btnGiai hay i tng btnGiai.

I.2. Thuc tnh


Mi thnh phn u c nhng thuc tnh xc nh nhng c tnh ca thnh phn
chng hn nh mu sc (Color), v tr (Position), kch thc v trng thi (State) ca
chng. Trong cc thuc tnh ny, bn cn quan tm nht n thuc tnh tn (Name) ca i
tng.
- Bc 3: Ln lt thit lp cc thuc tnh Name, Caption cho i tng Label v
cc thuc tnh Name, Text cho i tng Edit:

Tn lp

Tn i
tng

Hnh 6: Ca s thuc tnh v s kin ca i tng lblHoTen v edtHoTen


Tng t, i tng thuc thnh phn TButton c thuc tnh Name l btnChao v
Caption l &Chao, i tng ca TForm c thuc tnh Name l frmWelcome v Caption
l Welcome to Delphi 7.0
Cch truy xut thuc tnh ca i tng:
Tn_i_tng.Thuc_tnh

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 43

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


V d 5: Gn thuc tnh Enabled ca lblHoTen bng True l:
lblHoten.Enabled := True;

I.3. Phng thc (Method)


L th tc (Procedure) hoc hm (Function) c xy dng sn cho cng vic no
ca i tng. Ta c th gi phng thc ny trong qu trnh vit m (Coding)
chng thi hnh khi chng trnh chy.
Cch truy xut phng thc i tng:
Tn_i_tng.Phng_thc;

V d 6: Gi phng thc Hide v Show thc hin vic n v hin ca i tng


frmWelcome l:
frmWelcome.Hide;
v

frmWelcome.Show;

I.4. S kin (Event)


chnh l mt thao tc ca ngi s dng tc ng ln i tng v n s p ng
li bng vic thc hin mt cng vic no . Cc s kin thng thng l trn mouse v
keyboard nh: Click, RightClick, DoubleClick, KeyPress, Drag and drop,

Tn s kin

Tn th tc
s kin s
kin.

Hnh 7: S kin OnClick ca btnChao


Nh hnh trn, i tng btnChao c nhiu s kin nh: OnClick, OnContextPopup,
OnDragDrop,... ca tab Event tng ng trn ct Action. Mi s kin ny tng ng vi
mt th tc s kin x l s kin (Event handers) nm ct bn phi tng ng.

Trang 44

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

I.5. X l s kin (Event Handlers)


chnh l th tc s kin, thn th tc s kin ny bao gm cc cu lnh m ngi
lp trnh vit trong n thc hin mt cng vic, chc nng no .
Cch hnh thnh th tc s kin:
procedure Tn_Thnh_Phn_Form.Tn_i_tngS_kin([DanhSchCcThamS]);

V d 7: Th tc s kin OnClick cho nt lnh btnChao ca frmWelcome (hay cn


gi l th tc s kin btnChaoClick ca lp TfrmWelcome) c hnh
thnh nh sau:
procedure TfrmWelcome.btnChaoClick(Sender: TObject);

tn thnh phn hay


tn lp form

tn nt lnh
btnChao

s kin
OnClick

Bc 4: hnh 5, nhp p ln nt lnh Chao, hoc hnh 7 bn nhp p ln


ct bn phi ca s kin OnClick tng ng m ra mt th tc s kin c tn
l TfrmWelcome.btnChaoClick (Sender: TObject) nh sau:

Hnh 8: Th tc s kin btnChaoClick mi to ca s kin OnClick


Tip n bn g mt s lnh vo trong thn ca th tc s kin nh hnh sau:

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 45

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 9: Vit code cho th tc s kin btnChaoClick

I.6. Trnh h tr m lnh (Code Completion /IntelliSense)


Trong cch lp trnh hng i tng (OOP) v nht l khi ngn ng lp trnh c
h tr mi trng pht trin IDE th s thuc tnh, phng thc, s kin v cc th tc s
kin ca tng i tng l v cng phong ph (do tnh tha hng). Vic nh chnh xc c
php ca chng l mt vic lm khng tng i vi bt k mt lp trnh vin no (v
khng ch c duy nht mt ngn ng lp trnh Delphi!). gip cho ngi lp trnh "d
th" hn, Delphi c a ra menu ng cnh rt hu ch h tr cho vic vit code ny v
c gi l Trnh h tr m lnh (Code Completion).
Trong lc bn vit code, khi bn g tn i tng ri n du chm, th Code
Completion s xut hin nh hnh sau:

Hnh 10: Trnh h tr m lnh

II. Sinh m t ng v mt s cch sa li

II.1. Cch t ng sinh m (generate code) trong Delphi


- Khi mi to mi mt d n (Form Application) nh hnh nh sau:
Trang 46

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 11: M lnh sinh t ng trong d n mi.


th bn thy tn kiu (Type) lp TForm1 c xy dng thng qua lp (Class) dn
xut t lp cha l lp TForm. Trong kiu TForm1 (khng k s tha hng t lp TForm)
cha c thuc tnh (Properties), Phng thc (Methods) hoc s kin (Events) no ca
chnh n, nh bn thy trong on code sau y:
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;

- Khi bn t ln form (hoc g b) mt i tng (Object) ca i tng bt k nh


Button, Edit,... th tn (name) ca i tng s c t ng thm vo (hoc xa b i)
trong phn thuc tnh (Property) ca Form phn nh ngha kiu lp Form. Chng hn,
bn thm vo i tng Button1 thuc thnh phn TButton (ngn gn l Button1: TButton)
ln Form nh hnh sau:

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 47

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 12: Thm nt lnh Button1


th on code s t ng thm vo bin d liu l Button1: TButton nh sau:
type
TForm1 = class(TForm)
Button1: TButton;
//mi t ng sinh m thm
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;

- Khi bn to ra 1 th tc s kin da trn s kin no , th Delphi s t ng khai


bo (Declare) thm phn nguyn mu (Prototype) ca th tc s kin trong phn d liu
(thuc tnh Properties) ca lp. Chng hn, bn to ra th tc (Procedure) ca s kin
(Event) nhp chut (OnClick) ca nt lnh c tn Button1, th Delphi s t ng thm vo
phn khai bo th tc s kin trong lp TForm1 nh on code sau:
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject); //mi thm vo
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;

v s ci t (Implementation) cc cu lnh cho th tc s kin m ta mi to sau


t kha implementation, nh on code sau:

Trang 48

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}

//------------ phn ci t th tc mi c t ng thm vo ---------------procedure TForm1.Button1Click(Sender: TObject);


begin
end;

// --------------------------------------------------------------------------------------end.

// Kt thc Form Unit.

II.2. Cch sa li sinh m trong Delphi


Khi bn mi hc s dng Delphi, nht l khi mi lm quen vi lp trnh, th vic pht
sinh ra cc li (errors, bugs) do thao tc khng ng hoc cha hiu y kin thc v
OOP l d gp phi. y, s ch ra nhng sai st thng gp v cch sa chng.
a. Sai trong thao tc to th tc s kin: Nu bn lm ng hng dn trong phn
"X l s kin" (phn I.5) th khng b sai. Tuy nhin do cha quen, bn thng t g vo
phn ci t th tc s kin (TTSK) m khng bit hoc qun a vo phn khai bo
nguyn mu (Prototype), gm t kha procedure Tn_TTSK([cc_tham_s]); ca th tc
s kin.
V d nh on code sau:
type
TForm1 = class(TForm)
Button1: TButton;
{--------- thiu khai bo nguyn mu ny
procedure Button1Click(Sender: TObject);

-----

------------------------------------------------}
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 49

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


private
{ Private declarations }

public
{ Public declarations }

end;
var
Form1: TForm1;

implementation
{$R *.dfm}

// ------------ phn bn t g vo -------------------------------------------------procedure TForm1.Button1Click(Sender: TObject);


begin
ShowMessage('Welcome to Delphi 7.0!...');

end;
// --------------------------------------------------------------------------------------end.
// Kt thc Form Unit.
th khi bn bin dch, Delphi s thng bo li nh hnh sau:

Hnh 13: Bo li do thiu phn khai bo prototype


Khi xut hin hp thng bo li ny, bn c 3 chn la:
- Chn nt lnh Yes, nu mun g b tn th tc s kin trong s kin tng ng ca
i tng. Trong v d ny, bn mun g b TTSK Button1Click trong s kin OnClick
ca nt lnh Button1.

Trang 50

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

G b TTSK

Cha g b TTSK
g b TTSK
Hnh 14: Minh ha tn TTSK Button1Click trong s kin OnClick
- Chn nt lnh No, nu khng g b tn th tc s kin trong s kin tng ng ca
i tng. Trong v d ny, bn vn mun gi li TTSK Button1Click trong s kin
OnClick ca nt lnh Button1.
- Chn nt lnh Cancel th hy b bng thng bo li ny. iu ny cng nh chn
nt lnh No.
C 3 chn la trn vn khng t ng sa ht li cho bn. Nu bn nhn phm
Ctrl+F9 hoc F9, th Delphi s nhy con tr (con nhy) n ng phn ci t TTSK v
thng bo li trong ca s Messages pha di ca s son tho m lnh nh hnh sau:

Hnh 15: Ca s Messages


Hnh nh phn ca s son tho m lnh cng vi cc ca s khc.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 51

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 16: Thng bo li v con nhy nhy n TTSK b li.


sa li ny, bn chuyn ln phn nh ngha lp TForm1, v thm vo phn khai
bo (Prototype) ca th tc s kin ny nh sau:
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject); //g thm vo
private
{ Private declarations }
public
{ Public declarations }
end;

Cn ch : Nu bc trn bn chn Yes, th sau khi ht li bn phi gn tn TTSK


vo s kin tng ng cho i tng Button1; Cn nu chn No th tn TTSK vn cn gi
nguyn ( gn sn) cho bn.
- Mt li khc l bn m TTSK khng c nh khi bn DClick ln nt lnh
Button1 th c thng bo li nh sau:

Trang 52

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 17: Li khng th to TTSK


trong tng hp ny, bn chn OK, sau nhn phm chc nng F12 chuyn vo ca
s son tho m lnh sa li.
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.

//Nguyn nhn pht sinh li, bn xa b lnh ny i.

procedure TForm1.Button1Click(Sender: TObject);


begin
ShowMessage('Welcome to Delphi 7.0!');
end;
end.
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 53

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


- Mt li khc thng xy ra l bn xa i t kha end.trong tp tin unit th s nhn
c thng bo:

Hnh 18: Li thiu t kha end. trong unit form


sa li ny, bn nhn phm chc nng F12 chuyn sang ca s m lnh, ri
thm t kha end. vo cui tp tin unit.
* Tm li: C rt nhiu li khc nhau pht sinh nu bn thao tc khng chnh xc. Cn
phi ch 2 im:
- Thao tc ng theo s hng dn trnh by trong gio trnh.
- Mt TTSK phi y 2 thnh phn:
+ Phn khai bo tn th tc (Prototype) trong phn nh ngha lp ca Form.
+ Phn ci t y TTSK sau phn ci t (Implementation).

II.3. Thm tp tin unit vo d n


Vic ny gip cho bn, trng nhm lp trnh vin hay ch d n (group leader,
leader team) c th ghp nhiu form khc nhau nhng project khc nhau ca nhng lp
trnh vin khc nhau vit, thnh mt d n (thnh phm) cui cng.
V d: Bn th tng tng s phn cng cng vic ca 1 sn phm "Gii Phng
Trnh" c 2 phng trnh bc nht v bc hai. Trng nhm, anh A, phn cng cho lp
trnh vin B vit chng trnh gii phng trnh bc nht (tn form: frmPTB1, unit file:
untPTB1.pas, project file: prjPTB1.dpr) v lp trnh vin C vit chng trnh bc hai (tn
form: frmPTB2, unit file: untPTB2.pas, project file: prjPTB2.dpr). Cng vic ca anh A l
vit giao din (Interface) cho gi sn phm ny (tn form: frmMain, unit file: untMain.pas,
project file: prjMain.dpr). Sau khi phn chng trnh vit ring bit ca mi anh A, B, C
xong, th anh A s ghp thm frmPTB1, frmPTB2 vo d n ca anh ta trong frmMain
l giao din ca chng trnh.
T chc ca sn phm "Gii Phng Trnh" c t trong 3 th mc con ca th
mc S:\GT Del-03.2007\Add Form nh hnh sau:

Trang 54

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 19: Cu trc th mc ca sn phm "Gii Phng Trnh"


lm c iu ny, t d n ang m ca anh A, dng lnh Project/ Add To
Project... Shift+F11 thm frmPTB1, untPTB1.pas vo d n prjMain.dpr nh hnh sau:

Hnh 20: Thm unit form untPTB1.pas vo d n ca anh A


tip n, bn chn tp tin unit form untPTB1.pas trong th mc PTB1 (d n ca anh
B) v nhn nt lnh Open thm vo.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 55

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 21: Ca s thm untPTB1.pas vo d n chnh.


Hon ton tng t, bn thm vo unit form untPTB2.pas trong th mc PTB2 (d
n ca anh C).
V nh vy trong sn phm ca anh A by gi l 1 d n c 3 form, nh hnh sau:

Hnh 22: D n anh A cha y 3 form.


Trong tp tin d n (Project file: prjMain.dpr) c s tham chiu (Reference/link) ti
cc tp tin unit form trong cc folder ca anh B v anh C nh hnh sau:

Trang 56

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 23: S tham chiu ti cc unit form: untPTP1.pas v untPTP2.pas


Ti y, cu hi c t ra l trong th mc ca anh A cha y cc tp tin
ca sn phm cha? Liu bn c th xa b i 2 th mc PTB1 v PTB2 khng? Cu tr
li l khng. Mt yu cu c t ra l anh A (trng nhm) mun tt c cc tp tin ch
nm trong 1 folder ca anh ta (th mc S:\GT Del-03.2007\Add Form\Main) th lm nh
th no? Cu tr li l anh A s lu li unit file: untPTB1.pas (tng t cho untPTB2.pas)
vo th mc Main bng lnh File/Save As nh sau:

Hnh 24: Lu li untPTB1.pas vo th mc ca anh A


Xem li tp tin d n, bn thy cc tham chiu ti cc unit file nm trong th mc
hin hnh (ca anh A):
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 57

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 25: Cc tp tin unit form trong cng 1 th mc anh A

II.4. Vit lnh sau khi thm unit form vo d n


By gi, t main form (frmMain), anh A mun hin th (Show) form ca anh B hoc
anh C th sao? Chng hn khi Click vo mc Bac 1 trong thc n Giai phuong trinh
hin th form PTB1 ln nh hnh sau:

Hnh 26: Hin th form "Phuong trinh bac nhat"


lm c th anh A s g thm cu lnh frmPTB1.Show; hin th frmPTB1:

Trang 58

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 27: Khng xut hin trnh Code Completion


Tuy nhin, trnh h tr m lnh ca Delphi (Code Completion) khng t ng xut
hin anh A chn phng thc Show m li xut hin thng bo li trong ca s
Messages nh sau:
"[Pascal error] untMain.pas(1): Unable to invoke Code Completion due to
errors in source code".
Thng bo li ny pht sinh l do trong tp tin untMain.Pas, bn cha khai bo s
dng unit untPTB1 thng qua t kha uses

Hnh 28: Cha c khai bo unit untPTB1 v untPTB2

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 59

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


C 02 cch bn sa li ny:
- Cch 1: Nu bn bit chnh xc tn phng thc m bn cn, th bn c vic g
tip phng thc Show nh sau: frmPTB1.Show; (bt chp thng bo li khng c
h tr bi menu Code Completion). Sau , bn bin dch li (nhn t hp phm Ctrl+F9),
s xut hin thng bo nh sau:

Hnh 29: Thng bo thiu khai bo unit untPTB1


Bn Click nt lnh Yes Delphi t ng khai bo thm untPTB1 vo tp tin unit
untMain. Tng t cho unit frmPTB2, ta cng Click nt lnh Yes thm vo.

Hnh 30: Thng bo thiu khai bo unit untPTB2


Sau 2 bc trn, on khai bo cc unit s nh sau:
Trang 60

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 31: khai bo xong 2 unit: untPTB1, untPTB2


- Cch 2: V trong unit untMain, anh A s dng frmPTB1 v frmPTB2. Do vy,
trc khi anh A vit code cho 2 TTSK trn, anh A phi g thm khai bo vic s dng 2
unit: untPTB1 v untPTB2, ri mi vit lnh frmPTB1.Show; vo. Cch ny tt v chnh
xc hn cch 1 v c trnh Code Completion h tr cho bn khi vit lnh nh hnh sau:

Hnh 32: Thm khai bo unit trc v c trnh Code Completion


Ch : Bn c th s dng lnh File/Use Unit... thm unit vo d n hin hnh.
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 61

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

II.5. G b tp tin unit form ra khi d n


Cng vic ny gip bn loi b ra khi d n (Project) nhng form (unit file) khng
cn thit, hoc b sai. g b, bn chn chc nng Project/Remove from Project...
V d 8: Anh A, trng nhm, thy phn chng trnh ca anh C Phng trnh bc
hai, vit cn cha tt (hay cn bugs). Anh A ngh anh C hon chnh v kim tra (testing)
phn chng trnh li, sau gi li anh A ng gi thnh phm. Nh vy, anh A tm
thi g b (remove) phn chng trnh ca anh C ra khi d n hin hnh. lm vic ,
anh A ra lnh Project/Remove from Project... th Delphi s xut hin hp thoi "Remove
From Project", ri chn unit untPTB2 v Click OK nh hnh sau:

Hnh 33: Ca s g b tp tin unit


Delphi yu cu bn khng nh li cng vic g b ny ra khi d n, bn chn Yes
g b:

Hnh 34: Hp xc nhn vic g b

III. Biu mu (TForm)


Form l mt i tng chuyn dng trong mi trng lp trnh Windows. Trong biu
mu form ny, bn c th t cc i tng thuc thnh phn khc nh TLabel, TEdit,
TButton,... ln n thit k giao din ca chng trnh hay cn c gi l Form chnh
(Main form) hoc cc biu mu ph khc trong d n.

* Biu tng:

Trang 62

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho i tng form, tn ny phi c tnh gi nh gip


bn d qun l v lp trnh, nht l khi bn tham gia vo nhng d n
ln. (Xem li Bng1: Quy cch t tn cc i tng).

AutoSize

C gi tr True hoc False: t ng hay khng t ng thay i kch


thc ca form sao cho kch thc ca n va cha cc thnh
phn (component) t trong n.

Caption

Chui k t c hin th trn thanh tiu (Title bar) ca form.

BorderStyle

Cc kiu dng hin th form:


- bsDialog: l hp hi thoi, khng thay i kch thc c.
- bsSingle: ng vin khung c k ng 1 nt v khng thay
i c kch thc ca form.
- bsNone:
Khng c ng vin khung v khng thay i c
kch thc ca form.
- bsSizeable: Dng chun/ mc nhin ca form. y l dng mt ca
s rt ph bin trn mi trng lp trnh Windows.
- bsToolWindow: Ging bsSingle, nhng thanh tiu nh hp hn.
- bsSizeToolWin: Ging bsSizeable, nhng thanh tiu nh hp
hn.

BorderIcons

Xc nh trn thanh tiu c hp iu khin hay cn gi l hp


Control box, Control menu v System menu bn tri thanh
tiu v cc nt iu khin bn phi thanh tiu :
- biSystemMenu: Form c hp iu khin.
- biMinimize : Form c nt thu nh (Minimize)
- biMaximize : Form c nt phng to (Maximize), phc ch (Restore)
- biHelp
: Form c nt tr gip nu bn thit lp gi tr ca
biMinimize = False v biMaximize = False.

Cursor

Cc kiu dng hin th con tr (Mouse) trn form.

Form style

Cc kiu form: (MDI: Multi Document Interface)


- fsMDIForm:
MDIForm (Multi Document Interface) l form
MDI cha ca tt c cc form khc (nu c) trong chng trnh. Khi
bn ng MDIForm, th ng ngha vi vic ng tt c cc form
khc v kt thc chng trnh.
y l form MDI con. Trong chng trnh, bn
- fsMDIChild:
c th m ra nhiu ca s MDIChild.
d hiu, bn c th xem MDIForm chnh l ca s ng dng phn
mm Microsoft Word, cn MDIChild chnh l cc ca s tp tin nh
Document1, Document2,... c to ra thng qua lnh File/New
- fsNormal: L loi form thng dng nht v y cng l gi tr mc
nh (Default) khi bn thm 1 form mi. Loi form ny khng c
tnh cht ca loi form MDI.
- fsStayOnTop: gip cho form lun ni ln trn nht, ngay c khi c
form khc ang hot ng (Active).

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 63

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha

Color

Mu nn

Font

Xc nh cc thuc tnh v font nh: kiu ch, mu, c,...

Icon

Biu tng ca chng trnh d n. Biu tng ny c np vo


thng qua ca s Picture Editor.

MainMenu

Xc nh thanh thc n chnh cho form thng qua thuc tnh name
ca thnh phn TMainMenu c ln form.

PopupMenu

Xc nh menu i tng cho form thng qua thuc tnh name ca


thnh phn TPopupMenu t c ln form.

Position

Xc nh v tr hoc kch thc ca form khi n xut hin trn mn


hnh khi chy chng trnh:
- poDefault: do h thng ca Delphi quyt nh
- poDefaultPosOnly: Delphi ch quyt nh v tr ca form cn kch
thc th vn gi nguyn nh lc thit k.
- poDefaultSizeOnly: Delphi ch quyt nh kch thc ca form cn
v tr nh lc thit k.
- poDesigned: nh ti thi im thit k.
- poDesktopCenter: V tr ca form nm trung tm mn hnh.
- poScreenCenter: Ging nh poDesktopCenter (khng xt n ng
dng a mn hnh, multi-monitor).
- poMainFormCenter: thng c thit lp cho cc form khng phi
l form chnh (Main form). Cc form c thit lp theo gi tr ny
s c hin th trung tm form chnh.
- poOwnerFormCenter: thng c thit lp cho cc form khng
phi l form chnh. Khi form c thit lp gi tr ny, th n xut
hin trung tm ca form ch ca n (Owner).

WindowMenu

Dnh cho MDI form.

Visible

C gi tr True hoc False: C xut hin hay khng khi chy chng
trnh.

WindowState

Cc gi tr c ngha nh sau:
- wsNormal: trng thi thng thng. Cch thc hin th ca s
form s ging nh cc gi tr c thit lp trong thuc tnh
BorderStyle.
- wsMinimized: Ca s form s thu nh v thanh tc v (Task bar).
- wsMaximized: Ca s form s c phng to ton b mn hnh.
Hai chc nng wsMinimized v wsMaximized ch c hiu lc khi
thuc tnh BorderStyle c gi tr l bsNone, bsSingle, hoc bsSizeable.
Bng 2: Cc thuc tnh ca TForm.

* Mt s s kin thng dng:


Tn s kin
ActiveControl

Trang 64

S kin s p ng
Xc nh i tng ca thnh phn (Component) no trn form
nhn focus khi form hin th. Bn xem chc nng ny tng
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn s kin

S kin s p ng
ng vi vic t TabOrder ca i tng ny bng 0.

ObjectMenuItem

Xc nh MenuItem no ca MainMenu tr nn khng kch hot


c (Enabled = False) khi form c hin th. Chc nng ny rt
ph bin trn Windows v d nh vic sao chp (Copy) v dn
(Paste) chng hn: Khi cha thc hin chc nng Copy th chc
nng Paste khng kch hot c.

OnActivate

Khi form tr nn hot ng (hin hnh)

OnCreate

Khi form c to ra. y l s kin c thc hin trc ht mi


s kin ca form.

OnShow

Khi form c hin th, d nhin l thuc tnh Visible ca form l


True.

OnClick

Khi ngi s dng nhp chut tri (Click) vo i tng

OnContextPopup

Khi ngi s dng nhp chut phi (RClick) vo i tng, hoc


thc hin vic bt ln menu i tng (PopupMenu)

OnDblClick

Khi ngi s dng nhp p (Double Click) vo i tng

OnKeyDown

Khi ngi s dng nhn phm bt k.

OnKeyPress

Khi ngi s dng nhn phm bt k nhng khng phi l cc


phm iu khin (v d nh: F1, Ctrl, Shift,...)

OnKeyUp

Khi mt hoc t hp phm bt k c th ra.

OnMouseDown

Khi ngi s dng Click, RClick, mouse gia (hay Scroll mouse).

OnMouseMove

Khi ngi s dng di chuyn mouse trn form.

OnMouseUp

Khi ngi s dng th bt k phm no ca mouse.

OnMouseWheel

Khi ngi s dng cun mouse gia theo hng ln hoc xung.

OnMouseWheelDown Khi ngi s dng cun mouse gia theo hng xung.
OnMouseWheelUp

Khi ngi s dng cun mouse gia theo hng ln.


Bng 3: Cc s kin ca TForm.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 65

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Tn thuc
tnh
Gi tr ca
thuc tnh

Hnh 35: Thit lp gi tr cc thuc tnh ca i tng frmWelcome


- Bc 5: Lu d n, bin dch v chy chng trnh:
+

Chn chc nng File/Save All lu d n vo th mc S:\Welcome

Nhn Ctrl+F9 bin dch

Nu bin dch thnh cng, nhn phm chc nng F9 hoc chc nng Run/Run
hoc Click nt

chy chng trnh.

Kt thc chng trnh, bn s dng mt trong cc cch:






Click nt Close
trn Form.
Chn chc nng Run/Program Reset
S dng t hp phm Ctrl+F2

Click chn nt cng c

Ta c kt qu chng trnh nh sau:

Trang 66

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 36: Form nhp liu


Nhp h tn vo, chng hn Nguyen Nghia ri Click vo nt lnh Chao, chng
trnh s n form chnh v xut hin hp thng bo Welcome:

Hnh 37: Hp thng bo Hello


Bn click nt lnh OK ng hp hi thoi ny v hin th li form chnh.
Trong d n, bn c th c nhiu form, thm form vo d n, bn s dng chc
nng: File/New/Form. chn 1 form no trong s cc form lm form chnh, bn s
dng chc nng Project /Options/Forms nh hnh sau:

Hnh 38: Chn frmMain lm form chnh.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 67

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


cc i tng trn form lm vic, tng tc vi nhau ng nh mun, ngi lp
trnh cn phi thit lp, c cc thuc tnh cng nh s dng cc phng thc, th tc s
kin ca chng mt cch hp l sao cho chng gn kt vi nhau thnh mt khi thng
nht. lm c iu ny, ngi vit chng trnh cn phi c tng rnh mch v
d n thng nht t qu trnh thit k (designing) n vit m (coding).
IV. Cc thnh phn (Component) giao din ph bin
Cc thnh phn (iu khin) trong Delphi rt phong ph v chng c t trong cc
th (tab) ca bng cha cc thnh phn ca Delphi (Component Palette) nh th Standar,
Addition, Win32, Trong gio trnh ny, cc bn s c gii thiu nhiu i tng khc
nhau ph hp vi trnh t ca bi hc. Ti thi im thit k, ta Click vo thnh phn
cn s dng ri drag and drop t i tng ln form.

Hnh 39: Bng cc thnh phn

Hnh 40: Cc thnh phn trn th Standard

IV.1. Nhn (TLabel)


L mt thnh phn dng hin th mt hoc nhiu dng vn bn tnh trong n.

Biu tng:
Mt s thuc tnh thng dng:

Tn thuc tnh

ngha

Name

Xc nh tn cho i tng nhn (Xem li Bng 1: Quy cch t tn cc


i tng)

AutoSize

C gi tr True hoc False: t ng hay khng t ng thay i kch


thc ca Label khi chng trnh chy so vi thit k ban u.

Caption

Chui k t c hin th trong n

Trang 68

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha

Visible

C gi tr True hoc False: c hin th hay khng khi chy chng trnh.

Color

Mu nn

Font

Xc nh cc thuc tnh v font nh: kiu ch, mu, c,...

Tranparent

Mu nn ca nhn l trong sut/khng mu.

WordWrap

C gi tr True hoc False: cho php hin th nhiu dng hay ch 1 dng
trong i tng Label.
Bng 4: Cc thuc tnh ca TLabel

Mt s s kin thng dng:


S kin s p ng

Tn s kin
OnClick

Khi ngi s dng nhp chut tri (Click) vo i tng

OnContextPopup

Khi ngi s dng nhp chut phi (RClick) vo i tng, hoc thc
hin vic bt ln menu i tng (PopupMenu)

OnDblClick

Khi ngi s dng nhp p (Double Click) vo i tng


Bng 5: Cc s kin ca TLabel

- Mt s hm c s dng trong v d:
+ Hm tr v thi gian hin hnh ca h thng my tnh:
function Time: TDateTime;
+ Hm tr v ngy thng nm hin hnh ca h thng my tnh:
function Date: TDateTime;
+ Hm chuyn i kiu thi gian (time) sang kiu chui (string)
function TimeToStr(Time: TDateTime): string; overload;
+ Hm chuyn i kiu ngy thng nm (date) sang kiu chui (string)
function DateToStr(Date: TDateTime): string; overload;

V d 9: Xem ngy gi hin hnh ca h thng.


-

To mt d n mi File/New/Application

Thit lp cc thuc tnh ca form nh sau:


Thuc tnh

Gi tr

Name

frmMain

Caption

Vi du ve doi tuong Label

Position

poDestopCenter

Bng 6: Thit lp cc thuc tnh cho i tng Form.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 69

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


-

t i tng Label ln form v thit lp thuc tnh:


Thuc tnh

Gi tr

Name

lblDateTime

Caption

( rng)

Align

alClient

Color

clSkyBlue

BorderStyle

bsDialog

Bng 7: Thit lp cc thuc tnh cho Label


-

T ca s Object Inspector, click vo nt lit k th chn i tng frmMain.


Click chn tab Events, DClick vo ct bn phi ca s kin OnCreate tng
ng sinh ra th tc s kin FormCreate, v g thm cc lnh vo trong thn
th tc s kin. on m lnh ca chng trnh hon chnh nh sau:

unit untDateTime;
//tn unit file: untDateTime.pas
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmMain = class(TForm)
lblDateTime: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
lblDateTime.Font.Color := clPurple;
lblDateTime.Font.Size:=15;
lblDateTime.Caption:=' - The curent time is ' +
TimeToStr(time);
lblDateTime.Caption:=lblDateTime.Caption + Chr(10)+' - Today is
' + DateToStr(Date);
end;
end.
Trang 70

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


-

Lu d n vo th mc S:\ViDuLabel
Bin dch d n: Ctrl + F9
Chy chng trnh: F9
Kt qu chng trnh nh hnh sau:

Hnh 41: Ngy gi hin hnh ca h thng

IV.2. Hp vn bn (TEdit)
L mt component chun nhp hay xut mt chui k t trong n khi chy
chng trnh. Ch hp vn bn ch nhp hoc xut c 1 dng duy nht.

Biu tng:

Mt s thuc tnh thng dng:

Tn thuc tnh

ngha

Name

Xc nh tn cho hp vn bn.

AutoSize

C gi tr True hoc False: t ng hay khng t ng thay i kch


thc hp vn bn khi chng trnh chy so vi thit k ban u.

Text

Chui k t trong hp vn bn

CharCase

Xc nh kiu ch in hoa (ecUpperCase), ch nh (ecLowerCase) hoc


kiu ch do ngi s dng nhp (ecNormal)

Font

Xc nh cc thuc tnh v font nh: kiu ch, mu, c,...

Visible

C gi tr True hoc False: c xut hin hay khng khi chy chng
trnh.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n n.

ReadOnly

C gi tr True hoc False: D liu trong n l ch c hay c th thay


i.
Bng 8: Cc thuc tnh ca TEdit

* Mt s s kin thng dng:


Tn s kin

S kin s p ng

OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic bt ln


menu i tng.

OnDblClick

Khi ngi s dng DClick vo i tng

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 71

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


S kin s p ng

Tn s kin
OnEnter

Khi i tng nhn tiu im (Got Focus) hay tr nn hot ng


(Active)

OnExit

Khi i tng mt tiu im (Lost Focus)

OnKeyDown

Khi c phm bt k c nhn

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc phm


iu khin nh: F1, Ctrl, Shift,...
Bng 9: Cc s kin ca TEdit

* Mt s phng thc (Method) thng dng:


C php ca phng thc

ngha

Show;

Th tc hin th i tng khi chy chng trnh.

Hide;

Th tc n i tng khi chy chng trnh.

Clear;

Th tc xa ht gi tr trong TEdit
Bng 10: Cc phng thc ca TEdit

Ta c th s dng cc hm chun trong Delphi nhp hoc xut d liu thay cho TEdit.
- Hm InputBox:
C php:
function InputBox(const ACaption, APrompt, ADefault: string): string;
Trong :
ACaption : l mt hng chui k t lm tiu ca hp hi thoi nhp.
APrompt : l mt chui k t lm cu nhc cho ngi nhp liu
ADefault : l mt chui k t lm gi tr mc nh ban u
ngha: Dng nhp d liu vo thng qua hp thoi, kt qu tr v ca hm l
kiu chui k t (String)
V d 10: Nhp m s sinh vin t hp thoi nh sau:
mssv := InputBox('Hop nhap lieu', 'Nhap ma so sinh vien','7962343');
Vi bin mssv kiu string, ta c hp hi thoi nh sau:

Hnh 42: Hp nhp liu bng hm InputBox

Trang 72

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


- Mt s khi nim v hm c s dng trong v d:
+ Bin ring (cc b): l bin ch c phm vi hot ng v tn ti trong th tc s
kin ca n.
+ Hm chuyn i kiu s du chm ng (Float) sang kiu chui:
function FloatToStr(Value: Extended): string; overload;
+ Hm chuyn i kiu chui sang kiu du chm ng (Float):
function StrToFloat(const S: string): extended;
V d 11: Vit chng trnh nhp 2 s bt k bng hm InputBox thng qua s kin
OnCreate ca Form v cho bit kt qu ca chng thng qua i tng ca
thnh phn TEdit.
- Thit k form v t tn cc i tng nh sau:

Hnh 43: Thit k form v t tn cc i tng


- on m lnh ca chng trnh:
unit untTinhTong;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmMain = class(TForm)
Label1: TLabel;
Label2: TLabel;
edt_KQ: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 73

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


implementation
{$R *.dfm}
procedure TfrmMain.FormCreate(Sender: TObject);
var x, y: Extended;
begin
x := StrToFloat(InputBox('Hop nhap','Nhap x =',''));
y := StrToFloat(InputBox('Hop nhap','Nhap y =',''));
edt_KQ.Text := FloatToStr(x+y);
end;
end.

- Lu d n vo th mc S:\ViDuInputBox, bin dch v chy chng trnh, ta c


kt qu nh sau:

Hnh 44: Nhp gi tr 2 bin x, y

Hnh 45: Kt qu ca chng trnh


-

Hm InputQuery:

C php:
function InputQuery(const ACaption, APrompt: string; var Value: string):
boolean;
Trong :
ACaption: l mt hng chui k t lm tiu ca hp hi thoi nhp.
APrompt: l mt chui k t lm cu nhc cho ngi nhp liu
Value: l mt tham bin nhn gi tr nhp ca hm.

Trang 74

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


ngha: Dng nhp d liu vo thng qua hp thoi, kt qu tr v ca hm l
kiu boolean, v gi tr c nhp vo trong hi thoi cha trong tham bin Value nu ta
Click nt OK.
V d 12: Nhp h tn t hp thoi nh sau:
m_OK := InputQuery('Hop nhap lieu ', 'Nhap ho ten', m_Hoten);
Vi bin m_OK kiu boolean, m_Hoten kiu string, ta c hp hi thoi nh sau:

Hnh 46: Hp nhp liu bng hm InputQuery


Nu ta click nt lnh OK, th m_OK = True cn m_Hoten = 'Pham Bao Thach', cn
click nt Cancel th m_OK = False.
- Th tc ShowMessage:
C php: procedure ShowMessage(const Msg: string);
ngha: dng hin th thng ip thng qua hng chui k t Msg
V d 13: Cu lnh ShowMessage('Chao mung ban den voi Delphi phien ban 7.0!...');
hin th thng bo: Cho mng bn n vi Delphi phin bn 7.0!...

Hnh 47: Hp thng bo


- Mt s khi nim v hm c s dng trong v d:
+ Tham tr: L cch truyn m khi gi tr ca tham s hnh thc thay i th cng
khng nh hng n gi tr ca tham s thc.
+ Tham bin: L cch truyn m khi gi tr ca tham s hnh thc thay i th ko
theo gi tr ca tham s thc cng thay i theo.
+ Cu lnh r nhnh: if iu_kin then cng_vic_1 else cng_vic_2;
ngha: Nu iu kin ng, c gi tr True, th my thc hin cng vic 1, ngc
li (ngha l iu kin sai, c gi tr False) th my s thc hin cng vic 2.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 75

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


V d 14: Vit chng trnh nhp 2 s bt k bng hm InputQuery thng qua s
kin OnActivate ca Form v cho bit kt qu ca chng thng qua th tc
MessageBox.
- Thit k form v t tn cc i tng nh sau:

Hnh 48: Thit k form v t tn cho cc i tng


- on m lnh ca chng trnh:
unit untInputQuery;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmMain = class(TForm)
Label1: TLabel;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.FormActivate(Sender: TObject);
var x, y : string;
mNhap_x, mNhap_y : boolean; // Kiem tra viec nhap x va y
begin
mNhap_x := InputQuery('Hop nhap','Nhap x =',x);
mNhap_y := InputQuery('Hop nhap','Nhap y =',y);
if (mNhap_x = False) or (mNhap_y = False) then
ShowMessage('Ban da bo qua - Cancel - viec nhap gia tri cho x
hoac y.')
Trang 76

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


else
ShowMessage('Tong cua ' + x + ' + ' + y + '= ' +
FloatToStr(StrToFloat(x) + StrToFloat(y)));
end;
end.

- Lu d n vo th mc S:\ViDuInputQuery, bin dch v chy chng trnh, ta


c kt qu nh sau:
+ Nu nhp b nhp tr cho x, v nhp tr y=7

Bn chn Cancel
Bn chn OK
Hnh 49: B nhp x, nhp y=7

Hnh 50: Kt qu chng trnh s thng bo li


+ Nu nhp ng, chng hn nhp x = 5, y =7, th ta c kt qu nh sau:

Hnh 51: Kt qu chng trnh khi nhp tr cho x, y


B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 77

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

IV.3. Nt lnh (TButton)


L mt thnh phn dng thit k nt lnh thi hnh mt cng vic no m bn
mun.

Biu tng:
Mt s thuc tnh thng dng:

Tn thuc tnh

ngha

Name

Xc nh tn cho nt lnh.

Caption

Chui k t l tiu cho nt lnh. S dng du & gch di k t


i din. Dng t hp phm Alt+K t gch di kch hot nt lnh.

Cancel

Nu c gi tr True th khi nhn phm Esc th s kin OnClick s sinh ra;


cn nu c gi tr False th khng.

Visible

C gi tr True hoc False: C hin th hay khng khi chy chng


trnh.

Enabled

C gi tr True hoc False: Cho hay khng cho php ngi s dng truy
xut n n.

Hint

Dng gi t ngn gn v nt lnh khi bn tr mouse n nt lnh .


Chc nng ny ch c tc ng khi thuc tnh ShowHint l True.

TabOrder

c nh th t bt u t 0, 1, 2,... xc nh th t m nt lnh
c nhn focus khi bn nhn phm Tab. Chc nng ny ch c tc ng
khi thuc tnh TabStop c gi tr True.
Bng 11: Cc thuc tnh ca TButton

Mt s s kin thng dng:


p ng ca s kin

Tn s kin
OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic bt ln


menu i tng.

OnEnter

Khi i tng nhn tiu im (Got Focus) hay tr nn hot ng


(Active).

OnExit

Khi i tng mt tiu im (Lost Focus).

OnKeyDown

Khi c phm bt k c nhn.

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc phm


iu khin nh: F1, Ctrl, Shift,...
Bng 12: Cc s kin ca TButton

- Mt hm c s dng trong v d:
+ Hm th chuyn i mt chui, S, sang kiu s nguyn, out. Nu thnh cng hm
tr v gi tr True, cn nu i b tht bi th hm s tr v tr False.
function TryStrToInt(const S: string; out Value: integer): Boolean;

Trang 78

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


+ Tng t nh hm trn, hm ny th chuyn i mt chui, S, sang kiu s chm
ng, out.
function TryStrToFloat(const S: string; out Value: extended): boolean;
V d 15: Tnh tng 2 s:
-

To mt d n mi File/New/Application
Thit lp cc thuc tnh ca form nh sau:
Thuc tnh

Gi tr

Name

frmTong

Caption

Vi du ve doi tuong Edit


Bng 13: Thit lp cc thuc tnh Form

t 3 i tng Edit v Button ln form v thit lp thuc tnh:


i tng:
Edit th nht:
Edit th hai:

Edit th ba:

Button

Thuc tnh

Gi tr

Name

edt_a

TabOrder

Name

edt_b

TabOrder

Name

edtKQ

TabOrder

ReadOnly

True

Name

btnTong

Caption

Tinh &tong

TabOrder

Bng 14: Thit lp cc thuc tnh cho Edit v Button


* on code hon chnh ca chng trnh:
unit untTinhTong;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmTong = class(TForm)
edt_a: TEdit;
Label1: TLabel;
Label2: TLabel;
edt_b: TEdit;
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 79

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


edtKQ: TEdit;
Label3: TLabel;
btnTong: TButton;
procedure btnTongClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmTong: TfrmTong;
implementation
{$R *.dfm}
procedure TfrmTong.btnTongClick(Sender: TObject);
var a, b: extended;
begin
if (TryStrToFloat(edt_a.Text,a) = True) and
(TryStrToFloat(edt_b.Text,b)= True) then
edtKQ.Text := FloatToStr(a+b)
else edtKQ.Text := 'Du lieu nhap bi loi!...';
end;
end.

- Lu d n vo th mc S:\ViDuEdit
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 52: Chng trnh tnh tng

IV.4. Nhn v Hp nhp (TLabeledEdit)


C mt thnh phn kt hp c 2 thnh phn TLabel v TEdit tr thnh mt,
chnh l thnh phn TLabeledEdit.
Trang 80

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Biu tng:
Mt s thuc tnh thng dng:

Tn thuc tnh

ngha
Xc nh tn cho i tng LabeledEdit.

Name

EditLabel.Caption Tiu : chui k t hin th trong phn nhn ca i tng.


LabelPosition

V tr ca nhn nm pha trn, bn di, bn tri, bn phi so vi hp


nhp. Cc gi tr tng ng l: lpAbove, lpBelow, lpLeft, lpRight

Text

Chui trong hp nhp ca i tng LabeledEdit

Visible

C gi tr True hoc False: C hin th hay khng khi chy chng


trnh.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n n.

Hint

Dng gi t ngn gn v nt lnh khi bn tr mouse n nt lnh .


Chc nng ny ch c tc ng khi thuc tnh ShowHint l True.

TabOrder

c nh th t bt u t 0, 1, 2,... xc nh th t m nt lnh
c nhn focus khi bn nhn phm Tab. Chc nng ny ch c tc
ng khi thuc tnh TabStop c gi tr True.
Bng 15: Cc thuc tnh ca TLabeledEdit

Mt s s kin thng dng:


p ng ca s kin

Tn s kin
OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic bt ln


menu i tng.

OnEnter

Khi i tng nhn tiu im (Got Focus) hay tr nn hot ng


(Active)

OnExit

Khi i tng mt tiu im (Lost Focus)

OnKeyDown

Khi c phm bt k c nhn

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc phm


iu khin nh: F1, Ctrl, Shift,...
Bng 16: Cc s kin ca TLabeledEdit

IV.5. Hp nh du hay hp kim (TCheckbox)


L thnh phn dng trnh by mt ty chn cho ngi s dng chn (nh du)
hoc khng chn (b nh du). Thng thng chng trnh s c nhiu mc ty chn.
Ngi s dng c th khng chn mc no hoc chn tt c.

Biu tng:
Mt s thuc tnh thng dng:

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 81

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha

Name

Xc nh tn cho i tng CheckBox.

Caption

Chui k t hin th trn nt lnh. S dng du & gch di k t


i din. Dng t hp phm Alt+K t gch di kch hot nt lnh.

Checked

C gi tr True v False: xc lp trng thi cho Checkbox l c chn


hay cha. Mc nhin c gi tr False.

State

Trng thi ca Checkbox: cbChecked, cbUnchecked hoc cbGrayed

Visible

C gi tr True hoc False: C hin th hay khng khi chy chng


trnh.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n n.

Hint

Dng gi t ngn gn v nt lnh khi bn tr mouse n nt lnh .


Chc nng ny ch c tc ng khi thuc tnh ShowHint l True.

TabOrder

c nh th t bt u t 0, 1, 2,... xc nh th t m nt lnh
c nhn focus khi bn nhn phm Tab. Chc nng ny ch c tc ng
khi thuc tnh TabStop c gi tr True.
Bng 17: Cc thuc tnh ca TCheckBox

Mt s s kin thng dng:


p ng ca s kin

Tn s kin
OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic bt ln


menu i tng.

OnEnter

Khi i tng nhn tiu im (Got Focus) hay tr nn hot ng


(Active)

OnExit

Khi i tng mt tiu im (Lost Focus)

OnKeyDown

Khi c phm bt k c g

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc phm


iu khin nh: F1, Ctrl, Shift,...
Bng 18: Cc s kin ca TCheckBox

Ch : thun tin trong vic thit k cng nh lp trnh, bn nn dng thnh phn
TGroupBox (c biu tng

) cha cc thnh phn Checkbox.

* Mt s khi nim c s dng trong v d:


+ Bin chung: l bin c tc ng trong tt c cc th tc s kin v tn ti trong sut
qu trnh chng trnh ang chy (Run-time) v ch mt i (gii phng bin) khi kt
thc (Terminate/ end) chng trnh/d n.
+ Cu lnh r nhnh: if iu_kin then cng_vic_1 else cng_vic_2;

Trang 82

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Nu iu kin ng, c gi tr true, th my thc hin cng vic 1; Ngc li (ngha
l iu kin sai, c gi tr false) th my s thc hin cng vic 2.
V d 16: nh du chn vo danh sch cc ngn ng lp trnh m bn bit.
-

To mt d n mi File/New/Application

Thit lp cc thuc tnh ca form nh sau:


Thuc tnh

Gi tr

Name

frmMain

Caption

Vi du ve doi tuong CheckBox


Bng 19: Thit lp thuc tnh cho Form

t i tng GroupBox ln form v t thuc tnh nh sau:


Thuc tnh

Gi tr

Name

gbxDanhSach

Caption

Danh sach:

Bng 20: Thit lp thuc tnh cho GroupBox


- t cc i tng Checkbox ln GroupBox, Edit ln form v thit lp thuc tnh:
i tng:
CheckBox 1:
CheckBox 2:
CheckBox 3:
CheckBox 4:
CheckBox 5:
CheckBox 6:
CheckBox 7:
CheckBox 8:

Thuc tnh

Gi tr

Name

chkPascal

Caption

Pascal

Name

chkDelphi

Caption

Delphi

Name

chkVC

Caption

C++/Visual C

Name

chkVB

Caption

Visual Basic

Name

chkVisualFox

Caption

Visual Fox

Name

chkAssembler

Caption

Assembler

Name

chkCOBOL

Caption

COBOL

Name

chkJava

Caption

Java

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 83

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Edit

Name

edt_KQ

Text

( rng)

ReadOnly

True

v 2 Label vi cc caption nh m t trong form.


Bng 21: Thit lp cc thuc tnh ca CheckBox v Edit
- Vit m cho chng trnh:
Cch khai bo bin chung: T ch thit k Form, nhn phm chc nng F12
chuyn sang ca s son tho m lnh, ri cun ln u chng trnh v g vo sau t
kha var l mDem: Byte; hoc RClick vo mc Variables/Contants, chn New (xem hnh
pha di) khai bo 1 bin chung mi c tn mDem:Byte;

Hnh 53: Ca s thm bin chung


Ln lt nhp vo cc cu lnh cho cc th tc s kin tng ng cho mi i tng
hon thnh chng trnh nh sau:
unit untNNLT;

//Cc ngn ng lp trnh

interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

Graphics,

type
TfrmMain = class(TForm)

Trang 84

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


gbxDanhSach: TGroupBox;
chkPascal: TCheckBox;
chkDelphi: TCheckBox;
chkVC: TCheckBox;
Label1: TLabel;
chkVB: TCheckBox;
chkJava: TCheckBox;
chkAssembler: TCheckBox;
chkVisualFox: TCheckBox;
chkCOBOL: TCheckBox;
edt_KQ: TEdit;
Label2: TLabel;
procedure chkPascalClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure chkDelphiClick(Sender: TObject);
procedure chkVCClick(Sender: TObject);
procedure chkVBClick(Sender: TObject);
procedure chkJavaClick(Sender: TObject);
procedure chkVisualFoxClick(Sender: TObject);
procedure chkAssemblerClick(Sender: TObject);
procedure chkCOBOLClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
mDem: Byte; //Khai bao bien chung o day.
implementation
{$R *.dfm}
procedure TfrmMain.FormCreate(Sender: TObject);
begin
mDem:=0;
//Khoi tao bien chung
end;
procedure TfrmMain.chkPascalClick(Sender: TObject);
begin
if chkPascal.Checked=True then mDem:=mDem+1 else mDem:=mDem-1;
edt_KQ.Text:= IntToStr(mDem);
end;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 85

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


procedure TfrmMain.chkDelphiClick(Sender: TObject);
begin
if chkDelphi.Checked=True then mDem:=mdem+1 else mDem:=mDem-1;
edt_KQ.Text:= IntToStr(mDem);
end;
procedure TfrmMain.chkVCClick(Sender: TObject);
begin
if chkVC.Checked=True then mDem:=mDem+1 else mDem:=mDem-1;
edt_KQ.Text:= IntToStr(mDem);
end;
procedure TfrmMain.chkVBClick(Sender: TObject);
begin
if chkVB.Checked=True then mDem:=mdem+1 else mDem:=mDem-1;
edt_KQ.Text:= IntToStr(mDem);
end;
procedure TfrmMain.chkJavaClick(Sender: TObject);
begin
if chkJava.Checked=True then mDem:=mdem+1 else mDem:=mDem-1;
edt_KQ.Text:= IntToStr(mDem);
end;
procedure TfrmMain.chkVisualFoxClick(Sender: TObject);
begin
if chkVisualFox.Checked=True then mDem:=mDem+1 else mDem:=mDem-1;
edt_KQ.Text:= IntToStr(mDem);
end;
procedure TfrmMain.chkAssemblerClick(Sender: TObject);
begin
if chkAssembler.Checked=True then mDem:=mDem+1 else mDem:=mDem-1;
edt_KQ.Text:= IntToStr(mDem);
end;
procedure TfrmMain.chkCOBOLClick(Sender: TObject);
begin
if chkCOBOL.Checked=True then mDem:=mDem+1 else mDem:=mDem-1;
edt_KQ.Text:= IntToStr(mDem);
end;
end.

+ Lu d n vo th mc S:\ViDuCheckBox
+ Bin dch v chy chng trnh, ta c kt qu nh sau:

Trang 86

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 54: Kt qu chng trnh

IV.6. Nt ty chn (TRadioButton)


L thnh phn dng trnh by mt ty chn cho ngi s dng chn la (nh
du) hoc khng chn (b nh du). Thng thng chng trnh s c nhiu mc ty
chn. Khc vi TCheckBox, ngi ch c th chn mt mc duy nht trong cc ty chn
cho.
* Biu tng:
* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho nt ty chn, tn ny c t nh tn bin v c


s dng trong vic vit m lnh ca chng trnh.

Caption

Chui k t hin th trn nt lnh. S dng du & gch di k t


i din. Dng t h phm Alt+K t gch di kch hot nt lnh.

Checked

C gi tr True v False: Xc lp trng thi cho RadioButton l c


chn hay cha. Mc nhin c gi tr False.

Visible

C gi tr True hoc False: C xut hin hay khng khi chy chng
trnh.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n n.

Hint

Dng gi t ngn gn v nt lnh khi bn tr mouse n nt lnh .


Chc nng ny ch c tc ng khi thuc tnh ShowHint l True.

TabOrder

c nh th t bt u t 0, 1, 2,... xc nh th t m nt lnh
c nhn focus khi bn nhn phm Tab. Chc nng ny ch c tc
ng khi thuc tnh TabStop c gi tr True.
Bng 22: Cc thuc tnh ca TRadioButton

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 87

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


* Mt s s kin thng dng:
p ng ca s kin

Tn s kin
OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic bt


ln menu i tng.

OnDblClick

Khi ngi s dng DClick vo i tng

OnExit

Khi i tng mt tiu im (Lost Focus)

OnKeyDown

Khi c phm bt k c nhn

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc


phm iu khin nh: F1, Ctrl, Shift,...
Bng 23: Cc s kin ca TRadioButton

IV.7. Nhm ty chn (TRadioGroup)


L thnh phn cha cc RadioButton. Thay v s dng nhiu RadioButton cng
lc, th bn nn s dng RadioGroup d thit k v lp trnh gn gng hn.
* Biu tng:
* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho i tng RadioGroup

Items

Cho php bn nhp cc phn t vo trong i tng RadioGroup trong


lc thit k thng qua ca s String List Editor.

Items[i]

Danh sch cc phn t trong RadioGroup. Phn t th nht c ch s i


l 0, phn t th 2 ch s i l 1, trong danh sch.

ItemIndex

Tr v ch s phn t hin ti ang c chn trong Items. Mc nhin


c gi tr l -1 (cha c phn t no c chn)

Items.Count

Tr v s phn t trong RadioGroup


Bng 24: Cc thuc tnh ca TRadioGroup

* Mt s s kin thng dng:


Tn s kin

p ng ca s kin

OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic bt


ln menu i tng.

OnExit

Khi i tng mt tiu im (Lost Focus)


Bng 25: Cc s kin ca TRadioGroup

Trang 88

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


* Mt s phng thc (Method) thng dng:
C php ca phng thc

ngha

Items.Add(const S: string): Integer;

Hm thm phn t kiu string vo pha


cui v tr v ch s ca phn t ny
trong Items.

Items.Append(const S: string);

Th tc ni thm phn t kiu string vo


pha cui Items.

Items.Delete(Index: Integer);

Th tc xa mt phn t ch s index
trong Items.

Items.Insert(Index: Integer; const S: string);

Th tc xa mt phn t kiu string ti


ch s index trong Items. Th tc ny
tng ng cu lnh gn vo thuc tnh
Items nh sau: Items[index] := S;

Items.Clear;

Th tc xa ht cc phn t trong Items.


Bng 26: Cc phng thc ca TRadioGroup

V d 17: Chn kha hc Anh vn m bn ng k.


- To mt d n mi File/New/Application
- Thit lp cc thuc tnh ca form nh sau:
Thuc tnh

Gi tr

Name

frmMain

Caption

Vi du ve doi tuong RadioGroup


Bng 27: Thit lp thuc tnh cho Form.

- t i tng RadioGroup ln form v t thuc tnh nh sau:


Thuc tnh

Gi tr

Name

rgpCourses

Caption

Courses:

Items

Click vo
(phn t):
Level A
Level B
Level C
IELTS
TOEFL

chn vo 5 dng

Bng 28: Thit lp cc thuc tnh RadioGroup

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 89

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


on m lnh ca chng trnh:
unit untDangKyAV;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type
TfrmMain = class(TForm)
rgpCourses: TRadioGroup;
Label1: TLabel;
procedure rgpCoursesClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.rgpCoursesClick(Sender: TObject);
var mChiSo: integer;
begin
mChiSo := rgpCourses.ItemIndex;
ShowMessage('You have decided to enroll in '+
rgpCourses.Items[mChiSo]+'.');
end;
end.

+ Lu d n vo th mc S:\ViDuRadioGroup
+ Bin dch v chy chng trnh, ta c kt qu nh sau:

Trang 90

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 55: Kt qu chng trnh ca RadioGroup

IV.8. Vng vn bn (TMemo)


L mt thnh phn dng cha cc dng vn bn. Thnh phn ny hu ch cho
nhng cng vic lin quan n vn bn c nhiu dng nh: c hin th ni dung ca
mt tp tin dng text, son tho vn bn,...
* Biu tng:
* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho i tng vng vn bn.

Align

Xc nh vic canh l tri, phi, trn, di,... ca Memo bn trong


thnh phn cha n. Nu c gi tr bng alClient th kch thc i
tng Memo s chim ton b b mt ca thnh phn cha n.

Alignment

Canh tri (taLeftJustify), canh phi (taRightJustify), canh gia


(taCenter) chui vn bn trong Memo

Font

Xc nh cc thuc tnh v font nh: kiu ch, mu, c,...

Lines

Cho php bn nhp cc dng vn bn vo trong Memo trong lc thit


k thng qua ca s String List Editor.

Lines[i]

Dng vn bn ch s th i trong Memo. Dng th nht c ch s i l


0, dng th 2 ch s i l 1, trong danh sch.

Lines.Count

Tr v s dng (line) trong Memo

SelText

Tr v khi vn bn c chn.

WantReturns

C gi tr True v False: Cho hoc khng cho php vic s dng phm
Enter xung hng (k t Carry Return) khi son tho vn bn trong
Memo.

WantTabs

C gi tr True v False: Cho hoc khng cho php vic s dng phm
Tab khi son tho vn bn trong Memo.

ReadOnly

Nu gi tr True th ni dung vn bn trong Memo l ch c.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 91

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha

ScrollBars

C thanh cun ng (ssVertical), ngang (ssHorizontal), c hai thanh


cun (ssBoth) trong Memo hoc khng c thanh cun no (ssNone).

Visible

C gi tr True hoc False: C xut hin hay khng khi chy chng
trnh.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n n.

Hint

Dng gi t ngn gn v Memo khi bn tr mouse n n. Chc nng


ny ch c tc ng khi thuc tnh ShowHint l True.

TabOrder

c nh th t bt u t 0, 1, 2,... xc nh th t m Memo
c nhn focus khi bn nhn phm Tab. Chc nng ny ch c tc
ng khi thuc tnh TabStop c gi tr True v WantTabs l False.

WordWrap

Nu c gi tr True: Chui vn bn c nhp vo trn mi dng m


di hn rng ca vng son tho Memo th s c t ng xung
dng mi, ngc li s khng t ng xung dng mi.
Bng 29: Cc thuc tnh ca TMemo

* Mt s s kin thng dng:


p ng ca s kin

Tn s kin
OnChange

Khi ngi s dng thay i, cp nht d liu trong i tng


Memo

OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic bt


ln menu i tng.

OnDblClick

Khi ngi s dng DClick vo i tng

OnExit

Khi i tng mt tiu im (Lost Focus)

OnKeyDown

Khi c phm bt k c nhn

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc


phm iu khin nh: F1, Ctrl, Shift,...
Bng 30: Cc s kin ca TMemo

* Mt s phng thc (Method) thng dng:


C php ca phng thc

ngha

Lines.Add(const S: string): Integer;

Hm thm dng kiu string vo pha cui


v tr v ch s ca phn t ny trong
Lines.

Lines.Append(const S: string);

Th tc ni thm phn t kiu string vo


pha cui Lines.

Lines.Delete(Index: Integer);

Th tc xa mt dng ch s index
trong Lines.

Trang 92

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


C php ca phng thc

ngha

Lines.Insert(Index: Integer; const S: string);

Th tc xa mt phn t kiu string ti


ch s index trong Lines. Th tc ny
tng ng cu lnh gn vo thuc tnh
Items nh sau: Lines[index] := S;

CopyToClipboard;

Th tc sao chp khi vn bn c chn


v lu vo vng nh Clipboard ca
Windows.

CutToClipboard;

Th tc ct khi vn bn c chn v
lu vo vng nh Clipboard ca
Windows.

PasteFromClipboard;

Th tc dn vng vn bn trong
Clipboard vo Memo.

Clear;

Th tc xa ht cc dng trong Lines.

ClearSelection;

Th tc xa vng vn bn c chn
trong Memo.
Bng 31: Cc phng thc ca TMemo

V d 18: Chng trnh son tho NotePad n gin, vi 4 nt lnh:


Clear: Xa ni dung trong vng son tho
Qut khi vn bn: s dng thao tc Drag and drop.
Copy: Sao chp; Cut: Ct vng vn bn c qut khi
Paste: Dn khi vn bn va Copy hoc Cut vo ti v tr con nhy.
Lu :
Khi mi chy chng trnh, cc nt Copy, Cut v Paste b m i (Disable)
Khi thc hin vic qut khi th cc nt lnh Copy, Cut mi tc ng (Enable).
Khi thc hin lnh Copy hoc Cut th nt lnh Paste mi tc ng.
- To mt d n mi File/New/Application
- Thit lp cc thuc tnh ca form nh sau:
Thuc tnh

Gi tr

Name

frmNotePad

Caption

Vi du ve doi tuong Memo


Bng 32: Thit lp thuc tnh Form

- t cc thnh phn ln form v t thuc tnh chng nh sau:


i tng
Memo

Thuc tnh

Gi tr

Name

memNotePad

Lines

rng ( cha c dng no)

TabOrder

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 93

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


i tng
Button th 1:
Button th 2:
Button th 3:
Button th 4:

Thuc tnh

Gi tr

Name

btnClear

Caption

Clea&r

Name

btnCopy

Caption

&Copy

Name

btnCut

Caption

C&ut

Name

btnPaste

Caption

&Paste

v mt Label vi Caption nh m t trong form.


Bng 33: Thit lp cc thuc tnh thnh cho cc i tng.
on m lnh ca chng trnh:
unit untNotePad;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmNotePad = class(TForm)
memNotePad: TMemo;
btnCopy: TButton;
btnCut: TButton;
btnPaste: TButton;
btnClear: TButton;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
procedure memNotePadMouseUp(Sender: TObject; Button:
TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure btnCopyClick(Sender: TObject);
procedure btnCutClick(Sender: TObject);
procedure btnPasteClick(Sender: TObject);
procedure btnClearClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmNotePad: TfrmNotePad;
Trang 94

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


implementation
{$R *.dfm}
procedure TfrmNotePad.FormCreate(Sender: TObject);
begin
btnCopy.Enabled:=False;
btnCut.Enabled:=False;
btnPaste.Enabled:=False;
end;
procedure TfrmNotePad.memNotePadMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if length(memNotePad.SelText)>0 then
begin
btnCopy.Enabled:=true;
btnCut.Enabled:=true;
end;
end;
procedure TfrmNotePad.btnCopyClick(Sender: TObject);
begin
memNotePad.CopyToClipboard;
btnPaste.Enabled:=True;
end;
procedure TfrmNotePad.btnCutClick(Sender: TObject);
begin
memNotePad.CutToClipboard;
btnPaste.Enabled:=True;
end;
procedure TfrmNotePad.btnPasteClick(Sender: TObject);
begin
memNotepad.PasteFromClipboard;
memNotePad.SetFocus;
end;
procedure TfrmNotePad.btnClearClick(Sender: TObject);
begin
memNotePad.Clear;
end;
end.

- Lu d n vo th mc S:\ViDuMemo
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 95

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 56: Kt qu chng trnh Memo

IV.9. Hp danh sch (TListBox)


L thnh phn lit k mt danh sch cc phn t. Cc phn t ny khng th nhp
trc tip khi chy chng trnh.
* Biu tng:
* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho hp danh sch.

Align

Xc nh vic canh l tri, phi, trn, di,... ca Listbox bn trong


thnh phn cha n. Nu c gi tr bng alClient th kch thc
ListBox s chim ton b b mt ca thnh phn cha n.

Columns

S ct trong ListBox

Font

Xc nh cc thuc tnh v font nh: kiu ch, mu, c,...

Items

Cho php bn nhp cc phn t vo ListBox lc thit k thng qua


ca s String List Editor.

Items[i]

Phn t ch s th i trong Listbox. Ch s i bt u t 0 v tip tc l


1, 2,... trong hp danh sch. Cch ny thng c dng vit m lnh.

ItemIndex

Tr v ch s phn t hin ti ang c chn trong Items. Mc nhin


c gi tr l -1 (cha c phn t no c chn)

Count

Tr v s phn t c mt trong ListBox

SelCount

Tr v s phn t c c chn trong Listbox

MultiSelect

C gi tr True hoc False: Cho php Click chn cng lc nhiu phn

Trang 96

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha
t (kt hp vi phm Ctrl hoc Shift) hay ch 1 phn t.

Sorted

C gi tr True hoc False: Sp xp cc phn t theo th t ch ci


hoc khng sp xp.

Visible

C gi tr True hoc False: c xut hin hay khng khi chy chng
trnh.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n n.

Hint

Dng gi t ngn gn v ListBox khi bn tr mouse n n. Chc


nng ny ch c tc ng khi thuc tnh ShowHint l True.

TabOrder

c nh th t bt u t 0, 1, 2,... xc nh th t m ListBox
c nhn Focus khi bn nhn phm Tab. Chc nng ny ch c tc
ng khi thuc tnh TabStop c gi tr True.
Bng 34: Cc thuc tnh ca TListBox

* Mt s s kin thng dng:


p ng ca s kin

Tn s kin
OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic


bt ln menu i tng.

OnDblClick

Khi ngi s dng DClick vo i tng

OnExit

Khi i tng mt tiu im (Lost Focus)

OnKeyDown

Khi c phm bt k c nhn

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc


phm iu khin nh: F1, Ctrl, Shift,...
Bng 35: Cc s kin ca TListBox

* Mt s phng thc (Method) thng dng:


C php ca phng thc

ngha

Items.Add(const S: string): Integer;

Hm thm phn t kiu string vo pha


cui v tr v ch s ca phn t ny
trong Items.

Items.Append(const S: string);

Th tc ni thm phn t kiu string vo


pha cui Items.

Items.Delete(Index: Integer);

Th tc xa mt phn t ch s index
trong Items.

Items.Insert(Index: Integer; const S: string);

Th tc xa mt phn t kiu string ti


ch s index trong Items. Th tc ny
tng ng cu lnh gn vo thuc tnh
Items nh sau: Items[index] := S;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 97

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


C php ca phng thc

ngha

Clear;

Th tc xa ht cc phn t trong
ListBox.

ClearSelection;

Th tc xa cc phn t chn.
Bng 36: Cc phng thc ca TListBox

V d 19: m s phn t m bn chn trong ListBox


- To mt d n mi File/New/Application
- Thit lp cc thuc tnh ca form nh sau:
Thuc tnh

Gi tr

Name

frmMain

Caption

Vi du ve doi tuong ListBox


Bng 37: Thit lp thuc tnh Form.

- t cc i tng ln form v t thuc tnh nh sau:


i tng

ListBox

Edit

Button 1:
Button 2:

Thuc tnh

Gi tr

Name

lbxSo

Items

rng ( 0 line)

Columns

MultiSelect

True

Name

edt_pt

Text

rng

TabOrder

Name

btnThem

Caption

&Them phan tu vao Listbox

Name

btnDem

Caption

&Dem so phan tu chon

v 2 Label vi Caption nh m t trong form.


Bng 38: Thit lp thuc tnh cho cc i tng.
on m lnh chng trnh:
unit untDanhSach;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, Qt;
Trang 98

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


type
TfrmMain = class(TForm)
lbxSo: TListBox;
edt_pt: TEdit;
btnThem: TButton;
btnDem: TButton;
Label1: TLabel;
Label2: TLabel;
procedure btnThemClick(Sender: TObject);
procedure btnDemClick(Sender: TObject);
procedure edt_ptKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.btnThemClick(Sender: TObject);
begin
lbxSo.Items.Add(edt_pt.Text);
edt_pt.Clear;
edt_pt.SetFocus;
end;
procedure TfrmMain.btnDemClick(Sender: TObject);
begin
ShowMessage('So phan tu ban da chon la: ' +
IntToStr(lbxSo.SelCount));
end;
{TTSK s dng phm Enter a gi tr nhp trong Edit vo
ListBox }
procedure TfrmMain.edt_ptKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 13 then //Go phim Enter
begin
lbxSo.Items.Add(edt_pt.Text);
edt_pt.Clear;
end;
end;
end.
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 99

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


- Lu d n vo th mc S:\ViDuListBox
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 57: Kt qu chng trnh ListBox

IV.10. TSpinEdit
Thnh phn ny nm trong th Sample. N cho php bn nhp vo mt s nguyn
bt k nh thnh phn TEdit. Tuy nhin, TSpinEdit cn cho php bn thay i (tng, gim)
gi tr ny theo mt bc nhy (step/increment) no bng cch Click vo nt
(nt
UpDown) tng hoc gim.
* Biu tng:
* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho i tng.

Value

Kiu integer: Gi tr ca i tng SpinEdit

MinValue

Kiu integer: Gi tr thp nht ca SpinEdit, mc nhin c gi tr 0: c


ngha l khng gii hn v c th c gi tr nh nht trong phm vi
kiu s nguyn l 2147483648

MaxValue

Kiu integer: Gi tr cao nht ca TSpinEdit, mc nhin c gi tr 0:


c ngha l khng gii hn v c th c gi tr ln nht trong phm vi
kiu s nguyn l 2147483647

Increment

Kiu integer: Gi tr bc nhy (step). Mc nhin c gi tr l 1.

MaxLength

Kiu integer: di ln nht (hay s lng k s nhiu nht) ca s


nguyn trong SpinEdit. Chng hn bn gii hn ch nhp s ti a n
hng ngn th bn cho thuc tnh ny bng 4.

Text

Kiu String: Chui k s bn trong i tng. Thuc tnh ny tng


ng vi thuc tnh Value nhng khc kiu d liu.

ReadOnly

Kiu boolean: C gi tr l True, nu KHNG cn thay i gi tr ca


thuc tnh Value. Cn ngc li, bn c th thay i.

Trang 100

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha

Visible

Kiu boolean: C gi tr True hoc False: C xut hin SpinEdit v


cc thnh phn bn n hay khng khi chy chng trnh.

Enabled

Kiu boolean: C gi tr True hoc False: Cho php hay khng ngi
s dng truy xut n cc thnh phn m n cha hay khng.

Hint

Dng gi t ngn gn v TPanel khi bn tr mouse n n. Chc


nng ny ch c tc ng khi thuc tnh ShowHint l True.

TabOrder

c nh th t bt u t 0, 1, 2,... xc nh th t m SpinEditl
c nhn Focus khi bn nhn phm Tab. Chc nng ny ch c
tc ng khi thuc tnh TabStop c gi tr True.
Bng 39: Cc thuc tnh ca TSpinEdit

* Mt s s kin thng dng:


p ng ca s kin

Tn s kin
OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic bt


ln menu i tng.

OnExit

Khi i tng mt tiu im (Lost Focus)

OnKeyDown

Khi bn g phm bt k

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc


phm iu khin nh: F1, Ctrl, Shift,...

OnChange

Khi bn thay i gi tr trong


TSpinEdit

i tng ca thnh phn

Bng 40: Cc s kin ca TSpinEdit


* Mt s phng thc (Method) thng dng:
C php ca phng thc

ngha

Show;

Th tc hin th i tng khi chy chng trnh.

Hide;

Th tc n i tng khi chy chng trnh.

Clear;

Th tc xa ht gi tr trong TSpinEdit
Bng 41: Cc phng thc ca TSpinEdit

IV.11. Hp danh sch nh du (TCheckListBox)


L thnh phn kt hp c chc nng ca TListBox v TCheckBox m cc bn
hc. Trong TListBox, mi phn t tng ng vi mt dng. Cn trong TCheckListBox,
mi phn t tng ng vi mi hp kim. Tnh nng ca ny cho ngi lp trnh chn
phn t no trong danh sch ch cn nh du chn trong hp kim l xong. Thnh phn
ny nm trong th Additional.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 101

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


* Biu tng:
* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho hp danh sch nh du.

Align

Xc nh vic canh l tri, phi, trn, di,... ca TCheckListBox bn


trong thnh phn cha n. Nu c gi tr bng alClient th kch thc
CheckListBox s chim ton b b mt ca thnh phn cha n.

Columns

S ct trong i tng CheckListBox

Items

Cho php bn nhp cc phn t c dng l hp kim vo


CheckListBox trong lc thit k thng qua ca s String List Editor.

Items[i]

Phn t ch s th i trong CheckListBox. Ch s i bt u t 0 v


tip tc l 1, 2,... trong hp danh sch. Cch ny thng c dng
vit m lnh.

Checked[i]

Phn t th i trong TCheckListBox c nh du chn. Ch s i bt


u t 0 v tip tc 1, 2,

ItemIndex

Tr v ch s phn t hin ti ang c chn trong Items. Mc nhin


c gi tr l 1 (cha c phn t no c chn)

Count

Tr v s phn t c mt trong CheckListBox

SelCount

Tr v s phn t c c chn trong CheckListBox

MultiSelect

C gi tr True hoc False: Cho php Click chn cng lc nhiu phn
t (kt hp vi phm Ctrl hoc Shift) hay ch 1 phn t.

Sorted

C gi tr True hoc False: Sp xp cc phn t theo th t ch ci


hoc khng sp xp.

Visible

C gi tr True hoc False: c xut hin hay khng khi chy chng
trnh.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n n.

Hint

Dng gi t ngn gn v CheckListBox khi bn tr mouse n n.


Chc nng ny ch c tc ng khi thuc tnh ShowHint l True.

TabOrder

c nh th t bt u t 0, 1, 2,... xc nh th t m
CheckListBox c nhn Focus khi bn nhn phm Tab. Chc
nng ny ch c tc ng khi thuc tnh TabStop c gi tr True.
Bng 42: Cc thuc tnh ca TCheckListBox

* Mt s s kin thng dng:


Tn s kin

p ng ca s kin

OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic


bt ln menu i tng.

Trang 102

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


p ng ca s kin

Tn s kin
OnDblClick

Khi ngi s dng DClick vo i tng

OnExit

Khi i tng mt tiu im (Lost Focus)

OnKeyDown

Khi c phm bt k c nhn

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc


phm iu khin nh: F1, Ctrl, Shift,...
Bng 43: Cc s kin ca TCheckListBox

* Mt s phng thc (Method) thng dng:


C php ca phng thc

ngha

Items.Add(const S: string): Integer;

Hm thm phn t kiu string vo pha


cui v tr v ch s ca phn t ny
trong Items.

Items.Append(const S: string);

Th tc ni thm phn t kiu string vo


pha cui Items.

Items.Delete(Index: Integer);

Th tc xa mt phn t ch s index
trong Items.

Items.Insert(Index: Integer; const S: string);

Th tc xa mt phn t kiu string ti


ch s index trong Items. Th tc ny
tng ng cu lnh gn vo thuc tnh
Items nh sau: Items[index] := S;

Clear;

Th tc xa ht cc phn t trong
TCheckListBox.

ClearSelection;

Th tc xa cc phn t chn.
Bng 44: Cc phng thc ca TCheckListBox

V d 20: Vit chng trnh ng k v tnh hc ph cho sinh vin


- To mt d n mi File/New/Application
- Thit lp cc thuc tnh ca form nh sau:
Thuc tnh

Gi tr

Name

frmVidu

Caption

Vi du ve CheckListBox
Bng 45: Thit lp thuc tnh Form.

- t cc i tng ln form v t thuc tnh nh sau:


i tng
CheckListBox

Thuc tnh
Name

Gi tr
clbTenMH

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 103

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


i tng

Thuc tnh

Gi tr
Gm 15 phn t nh sau:

Items

Name

Thuc hanh Tin hoc can ban


LT Microsoft Access
TH Microsoft Access
LT Lap trinh Can ban B Delphi
TH Lap trinh can ban B
Anh van Can ban
Dai so Tuyen tinh
Toan cao cap
Xac xuat thong ke
Ke toan dai cuong
Suc ben Vat lieu
Ly thuyet mang
Cai dat & Quan tri mang
Thiet ke Web

lbxSoTC
Gm 15 phn t nh sau:

ListBox

SpinEdit

Memo
Button 1
Button 2

Items

2
3
2
3
2
2
3
3
5
4
5
5
3

Name

5
speGia1TC

MinValue

15000

MaxValue

30000

Value

15000

Increment

1000

Name

memTienHP

Lines

0 line (rng)

Name

btnTinhTien

Caption

Tinh &tien hoc phi

Name

btnThemMH

Caption

Them ten &mon hoc moi

v mt s Label nh thit k form

Trang 104

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


on m lnh chng trnh:
unit untVidu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, CheckLst, Spin, ExtCtrls;
type
TfrmViDu = class(TForm)
clbTenMH: TCheckListBox;
btnTinhTien: TButton;
Label1: TLabel;
lbxSoTC: TListBox;
Label2: TLabel;
speGia1TC: TSpinEdit;
Label3: TLabel;
btnThemMH: TButton;
memTienHP: TMemo;
Label4: TLabel;
Label5: TLabel;
procedure btnThemMHClick(Sender: TObject);
procedure btnTinhTienClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmViDu: TfrmViDu;
implementation
{$R *.dfm}
procedure TfrmViDu.btnThemMHClick(Sender: TObject);
var mTenMH:string; mSoTC:integer;
begin
mTenMH := InputBox('Hop nhap','Nhap ten mon hoc','');
if TryStrToInt(InputBox('Hop nhap','Nhap so tin chi','3'),
mSoTC) and (mSoTC>=1) and (mTenMH<>'') then
begin
clbTenMH.Items.Add(mTenMH);
lbxSoTC.Items.Add(IntToStr(mSoTC));
end
else ShowMessage('Ban nhap SAI du lieu ve mon hoc.')
end;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 105

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


procedure TfrmViDu.btnTinhTienClick(Sender: TObject);
var i, mSoMH, mTongSoTC, mTienHP:integer;
begin
mSoMH:=0; mTongSoTC:=0;
memTienHP.Lines.Clear;
for i:=0 to clbTenMH.Items.Count - 1 do
if clbTenMH.Checked[i] then
begin
inc(mSoMH);
inc(mTongSoTC,StrToInt(lbxSoTC.Items[i]));
end;
mTienHP:=mTongSoTC*speGia1TC.Value;
memTienHP.Lines.Add('* So mon ban da chon de dang ky la: '+
IntToStr(mSoMH));
memTienHP.Lines.Add('* Tong so tien dong hoc phi la: '+
IntToStr(mTienHP));
end;
end.

- Lu d n vo th mc S:\ViDuCheckListBox
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 58: Chn tn mn hc v chn Tnh tin hc ph

Trang 106

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 59: Thm tn mn hc mi v s tn ch

Hnh 60: Sau khi thm tn mn hc mi v tnh li tin hc ph

IV.12. Hp danh sch cc kho (TValueListEditor)


Thnh phn ny gn ging nh TListBox, nhng mi phn t/dng th c 2 phn:
phn tn kho (Key name) v phn tr kho (Key value). Hai phn ny c th hin trn
2 ct v tiu ca 2 ct ny mc nhin l Key v Value. Tuy nhin ta c th thay i tn
tiu ny. Thnh phn ny nm trong th Additional.
* Biu tng:
* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho i tng ValueListEditor, tn ny c t nh tn


bin v c s dng trong vic vit m lnh ca chng trnh.

TitleCaptions

Tiu cho cc ct ca ValueListEditor. Bn Click vo nt thay


i tn tiu nu bn cn thng qua ca s String List Editor

DisplayOptions

doColumnTitles: C hin th (True) hay khng (False) hin th hng


tiu . Nu c hng tiu , th n l hng u tin trong

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 107

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha
ValueListEditor nn c ch s hng l 0.

Strings

Cho php bn nhp cc phn t hay hng ca TValueListEditor, vi


mi phn t c 2 phn: Tn kho v tr
kho vo
TValueListEditor trong lc thit k thng qua ca s Value List
Editor khi bn Click vo nt

RowCount

Tr v s hng (c tnh c hng tiu ) c mt trong ValueListEditor.

ColCount

Tr v s ct trong ValueListEditor.

Strings.Count

S hng/phn t khng tnh hng tiu c trong ValueListEditor

Keys[i]

L tn kho (kiu String) th i trong ValueListEditor. Ch s i bt u


t 0 v tip tc l 1, 2,... Cch ny thng c dng vit m lnh
(Coding). Bn cn ch l: Nu khng hin th hng tiu , th phn
t u tin s c ch s bt u l 0. Cn nu c hin th hng tiu
th phn t u tin c ch s hng bt u t 1.

Values[i]

L tr kho (kiu String) th i ca ValueListEditor. Trong i ln tn


ca kho ca phn t th i.

Strings[i]

Tr v tr kho (kiu String) ca phn t th i. Ch s i lun lun bt


u t 0 ri 1, 2, Bn cn ch l: Thuc tnh ny KHNG tnh
hng tiu . Nu c hin th hng tiu th phn t u tin c ch
s l 0 v phn t cui cng l RowCount-1 (hay Strings.Count). Cn
nu khng hin th hng tiu , th phn t u tin c ch s l 0 v
phn t cui cng l RowCount-2 (hay Strings.Count-1).

Row

Tr v ch s hng hin hnh ca phn t c chn khi chy chng


trnh. Nu khng hin th hng tiu th ch s hng u tin bt u
t 0 ri 1, 2, Cn nu c hin th hng tiu th ch s hng u
tin c ch s hng bt u t 1.

Col

Tr v ch s ct hin hnh ca phn t c chn khi chy chng


trnh. Ch s ct bt u t 0 ri 1, 2,

Cell[i,j]

Tr v gi tr trong ch s ct i v hng j.

KeyOptions

Cc tu chn trn ct kho (Key): Cho php (True) hay khng cho
php (False): sa tn kho - keyEdit, thm tn kho - keyAdd, xo tn
kho - keyDelete, kim tra tn kho duy nht (khng trng kho) keyUnique.

Options

Cc tu chn trn ct gi tr (Value) ca kho: Cho php (True) hay


khng cho php (False): thay i tr kho- goEditing, s dng phm
Tab v t hp phm Shift + Tab - goTabs, chn c hng
goRowSelect,

Visible

C gi tr True hoc False: c xut hin hay khng khi chy chng
trnh.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n n.

Hint

Dng gi t ngn gn v CheckListBox khi bn tr mouse n n.


Chc nng ny ch c tc ng khi thuc tnh ShowHint l True.

Trang 108

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh
TabOrder

ngha
c nh th t bt u t 0, 1, 2,... xc nh th t m i tng
ny nhn Focus khi bn nhn phm Tab. Chc nng ny ch c tc
ng khi thuc tnh TabStop c gi tr True.
Bng 46: Cc thuc tnh ca TCheckListBox

* Mt s s kin thng dng:


p ng ca s kin

Tn s kin
OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic


bt ln menu i tng.

OnDblClick

Khi ngi s dng DClick vo i tng

OnExit

Khi i tng mt tiu im (Lost Focus)

OnKeyDown

Khi c phm bt k c nhn

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc


phm iu khin nh: F1, Ctrl, Shift,...

OnSelectCell

Khi mt bt k trong TValueListEditor c Click chn.


Bng 47: Cc s kin ca TValueListEditor

* Mt s phng thc (Method) thng dng:


C php ca phng thc

ngha

InsertRow(const KeyName, Value:


string; Append: Boolean): Integer;

Hm chn thm vo mt hng (phn t) gm tn


kho v tr kho. Nu mun chn pha trn hng
hin hnh th truyn tr False cho tham s
Append; Cn nu mun chn phn t vo cui
danh sch th cho Append bng True.

DeleteRow(ARow: Integer);

Th tc xo mt hng bt k.

Hm tm mt phn t da vo tn kho (Key).


Nu tm thy th hm s tr v gi tr True v
FindRow(const KeyName: string; var
tham bin Row s cha ch s hng ca phn t
Row: Integer): Boolean;
u tin c tm thy. Cn ngc li hm tr v
gi tr False.
Strings.Add(const S: string): Integer;

Hm thm mt tr kho (ct Value) kiu string


vo pha cui v tr v ch s ca phn t ny.

Strings.Append(const S: string);

Th tc ni thm mt tr kho ct Value.

Strings.Delete(Index: Integer);

Th tc xa mt hng/phn t ch s index
trong Items.

Strings.Clear;

Th tc xa ht cc hng (phn t) trong


TValueListEditor ngai tr hng tiu .
Bng 48: Cc phng thc ca TValueListEditor

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 109

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


V d 21: Vit chng trnh nhp vo danh sch cc mt hng v n gi. Tm kim
theo mt hng.
- To mt d n mi File/New/Application
- Thit lp cc thuc tnh ca form nh sau:
Thuc tnh

Gi tr

Name

frmMain

Caption

Vi du ve ValueListEditor
Bng 49: Thit lp thuc tnh Form.

- t cc i tng ln form v t thuc tnh nh sau:


i tng

Thuc tnh
Name
TitleCaptions

Gi tr
vleMatHang
2 lines tng ng l Key v Value:
Ten Giao Trinh:
Don Gia:
Key

ValueListEditor
Strings

LabeledEdit th 1

LabeledEdit th 2

LabeledEdit th 3

Button th 1

Trang 110

Ly thuyet Access
Thuc hanh Access
Ly thuyet Delphi
Thuc hanh Delphi

Value
150
145
165
140

KeyOptions

KeyEdit = True, KeyAdd=True


KeyDelete = False, KeyUnique=True

Name

lbeTenHang

EditLabel.Caption Nhap &Ten giao trinh moi:


LabelPosistion

lpAbove

Text

(rng)

Name

lbeDonGia

EditLabel.Caption Nhap &Don gia:


LabelPosistion

lpAbove

Text

(rng)

Name

lbeKQTK

EditLabel.Caption Ket qua tim kiem.


LabelPosistion

lpBelow

Text

(rng)

Name

btnThem

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


i tng

Button th 2

Thuc tnh

Gi tr

Caption

Them vao &danh sach

Name

btnTimKiem

Caption

Tim &kiem

v 1 Label nh thit k form


on m lnh chng trnh:
unit untViDu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
Grids, ValEdit, StdCtrls, ExtCtrls;
type
TfrmMain = class(TForm)
vleMatHang: TValueListEditor;
lbeTenHang: TLabeledEdit;
lbeDonGia: TLabeledEdit;
btnThem: TButton;
Label1: TLabel;
btnTimKiem: TButton;
lbeKQTK: TLabeledEdit;
procedure btnThemClick(Sender: TObject);
procedure btnTimKiemClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.btnThemClick(Sender: TObject);
var mDGia:Single; mVitri:integer;
begin
if (lbeTenHang.GetTextLen>0) and TryStrToFloat(lbeDonGia.Text,mDGia) and
(mDGia>0) then
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 111

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


if vleMatHang.FindRow(lbeTenHang.Text,mViTri) = True then
ShowMessage('Sorry!... Giao trinh nay (Key) da ton tai roi.')
else //Chua ton tai, thi them vao
vleMatHang.InsertRow(lbeTenHang.Text, lbeDonGia.Text,True)
else
ShowMessage('Ban nhap du lieu khong hop le!...');
end;
procedure TfrmMain.btnTimKiemClick(Sender: TObject);
var mOK, mTimThay:Boolean; mTenHang: string; mViTri:Integer;
begin
lbeKQTK.Clear;
mOK := InputQuery('Hop Nhap','Nhap chinh xac ten giao trinh can tim: ',mTenHang);
if mOK then
begin
mTimThay := vleMatHang.FindRow(mTenHang, mVitri);
if mTimThay then lbeKQTK.Text := 'Tim thay o vi tri thu '+ IntToStr(mViTri)
else lbeKQTK.Text := 'Tim KHONG thay.';
end
else ShowMessage('Ban bo qua viec tim kiem.');
end;
end.
- Lu d n vo th mc S:\ViDuValueListEditor
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 61: Thm gio trnh "Anh vn cn bn"

Trang 112

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


- Nu bn nhp thm vo tn gio trnh c, v d nh: "Ly thuyet Delphi" th s nhn
c thng bo nh sau:

Hnh 62: Nhp b trng

Hnh 63: Tm kim theo tn gio trnh

IV.13. Hp lit k th (TComboBox)


L thnh phn lit k mt danh sch cc phn t th xung. Cc phn t ny c th
c nhp trc tip hoc khng th nhp trc tip khi chy chng trnh l ty thuc vo
kiu (Style) m bn thit lp n qu trnh thit k.
* Biu tng:
* Mt s thuc tnh thng dng:
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 113

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha

Name

Xc nh tn cho i tng hp lit k th.

AutoDropDown

C gi tr True hoc False: Nt lit k th t ng th xung hay


khng khi nhn mt phm.

Items

Cho php bn nhp cc phn t vo ComboBox lc thit k thng


qua ca s String List Editor.

Items[i]

Phn t ch s th i trong ComboBox. Ch s i bt u t 0 v tip


tc l 1, 2,... trong hp lit k th. Cch ny thng c dng vit
m lnh.

ItemIndex

Xc nh ch s phn t c chn, ch s ny c gi tr bt t 0, 1,
2,... Nu ItemIndex = -1 th cha c phn t no c chn.

Items.Count

Tng s cc phn t c trong hp lit k th.

DropDownCount

S lng cc phn t c lit k trong hp lit k th ti mi thi


im.

Style

C 2 gi tr m bn cn phn bit l:
- csDropDown Cho php bn nhp trc tip thm mt phn t mi
vo trong TComboBox.
- csDropDownList ch cho bn chn t danh sch cc phn t c sn
trong ComboBox.

Text

Xc nh chui vn bn (hay phn t) ang hin th trong


TComboBox

Sorted

C gi tr True hoc False: Sp xp cc phn t theo th t ch ci


hoc khng sp xp.

Visible

C gi tr True hoc False: C xut hin hay khng khi chy chng
trnh.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n n.

Hint

Dng gi t ngn gn v TComboBox khi bn tr mouse n n.


Chc nng ny ch c tc ng khi thuc tnh ShowHint l True.

TabOrder

c nh th t bt u t 0, 1, 2,... xc nh th t m
ComboBox c nhn Focus khi bn nhn phm Tab. Chc nng
ny ch c tc ng khi thuc tnh TabStop c gi tr True.
Bng 50: Cc thuc tnh ca TComboBox

* Mt s s kin thng dng:


p ng ca s kin

Tn s kin
OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic


bt ln menu i tng.

OnDblClick

Khi ngi s dng DClick vo i tng

Trang 114

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


p ng ca s kin

Tn s kin
OnExit

Khi i tng mt tiu im (Lost Focus)

OnKeyDown

Khi c phm bt k c nhn

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc


phm iu khin nh: F1, Ctrl, Shift,...
Bng 51: Cc s kin ca TComboBox

* Mt s phng thc (Method) thng dng:


C php ca phng thc

ngha

Items.Add(const S: string): Integer;

Hm thm phn t kiu string vo pha


cui v tr v ch s ca phn t ny
trong Items.

Items.Append(const S: string);

Th tc ni thm phn t kiu string vo


pha cui Items.

Items.Delete(Index: Integer);

Th tc xa mt phn t ch s index
trong Items.

Items.Insert(Index: Integer; const S: string);

Th tc xa mt phn t kiu string ti


ch s index trong Items. Th tc ny
tng ng cu lnh gn vo thuc tnh
Items nh sau: Items[index] := S;

Clear;

Th tc xa ht cc phn t trong
ListBox.
Bng 52: Cc phng thc ca TComboBox

- Mt s khi nim c s dng trong v d:


+ Cu lnh r nhnh:

case <bin> of
Gi_tr_i: cng_vic_i;
end;

+ Hm Trunc(x): tr v phn s nguyn ca mt s l thp phn x


V d 22: My tnh n gin s dng thnh phn ComboBox.
- To mt d n mi File/New/Application
- Thit lp cc thuc tnh ca form nh sau:
Thuc tnh

Gi tr

Name

frmMain

Caption

Vi du ve doi tuong ComboBox

BorderIcons

[]

Position

poDesktopCenter

Bng 53: Thit lp cc thuc tnh TForm.


B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 115

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


- t cc i tng ln form v thit lp cc thuc tnh nh sau:
i tng

ComboBox

Edit th 1

Edit th 2

Edit th 3

Button

Thuc tnh

Gi tr

Name

cboToantu

Items

+
*
/
Div
Mod

Style

csDropDownList

ItemIndex

-1

Name

edt_ToanHang1

Text

TabOrder

Name

edt_ToanHang2

Text

TabOrder

Name

Edt_Kq

Text

ReadOnly

True

Name

btnKetThuc

Caption

&Ket thuc

v 4 Label vi Caption nh m t trong form.


Bng 54: Thit lp cc thuc tnh ca cc i tng
- Ln lt nhp vo cc cu lnh cho cc th tc s kin nh sau:
unit untMaytinh;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TfrmMain = class(TForm)
cboToantu: TComboBox;
edtToanHang1: TEdit;
edtToanHang2: TEdit;
Trang 116

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


edt_Kq: TEdit;
btnKetThuc: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure cboToantuChange(Sender: TObject);
procedure btnKetThucClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.cboToantuChange(Sender: TObject);
var a, b:extended;
begin
if (TryStrToFloat(edtToanHang1.Text,a)) and
(TryStrToFloat(edtToanHang2.Text,b)) then
case cboToantu.ItemIndex of
0: edt_Kq.Text := FloatToStr(a + b);
1: edt_Kq.Text := FloatToStr(a - b);
2: edt_Kq.Text := FloatToStr(a * b);
3: if b<>0 then
edt_Kq.Text := FloatToStr(a / b)
else edt_Kq.Text := 'Loi!... Mau so bang khong.';
4: if b<>0 then
edt_Kq.Text := IntToStr(Trunc(a) Div Trunc(b))
else edt_Kq.Text := 'Loi!... Mau so bang khong.';
5: if b<>0 then
edt_Kq.Text := IntToStr(Trunc(a) Mod Trunc(b))
else edt_Kq.Text := 'Loi!... Mau so bang khong.';
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 117

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


end // end case
else // else if
edt_Kq.Text :='Du lieu nhap vao sai!...';
end;
procedure TfrmMain.btnKetThucClick(Sender: TObject);
begin
Close;
end;
end.
- Lu d n vo th mc S:\ViDuComboBox
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 64: Kt qu chng trnh ComboBox

IV.14. Li chui (TStringGrid)


L thnh phn c thit k theo dng bng gm cc cha d liu kiu chui. Cc
ny c xc nh bi nh ch s ct v ch s hng. Trong TStringGrid, ch s ct u
tin (ct bn tri nht) v hng u tin (hng trn nht) c nh s mc nh l 1. Tuy
nhin, bn c th thay i ch s ny v 0 ph hp ch s bt u ca mng (Array)
trong Delphi l 0 (zero) da vo cc thuc tnh ca TStringGrid c m t chi tit di
y.
* Biu tng:
* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho i tng StringGrid.

FixedCols

Xc nh ch s ct u tin (bn tri nht) trong li, cc gi tr ny c


th bt u t 0, 1, 2,... Mc nh c gi tr l 1.

FixedRows

Xc nh ch s hng u tin (hng trn nht) trong li, cc gi tr

Trang 118

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha
ny c th bt u t 0, 1, 2,... Mc nh c gi tr l 1.

ColCount

Xc nh s ct trong li, s ct c nh ch s bt u t 0 n
ColCount-1

RowCount

Xc nh s hng trong li, s hng c nh ch s bt u t 0 n


RowCount-1

Col

Ch s ct ca hin hnh

Row

Ch s hng ca hin hnh

Cells[i,j]

Gi tr trong ch s ct i v hng j

Options

L cc ty chn cho li, di y trnh by l mt s ty chn:


- goEditing c gi tr True hoc False, cho hay khng php son tho
trong cc li.
- goTabs c gi tr True hoc False, cho hay khng cho s dng phm
Tab di chuyn qua li gia cc .
- goRowSelect c gi tr True hoc False, cho hay khng php chn tt
c cc trn ton b mt hng.

ScrollBars

Xc nh s thanh cun cn hin th, cc gi tr ca n nh sau:


- ssBoth: Hin th c 2 thanh cun ng v ngang
- ssHorizontal: Hin th thanh cun ngang
- ssVertical: Hin th thanh cun ng
- ssNone: Khng hin th thanh cun no c

Visible

C gi tr True hoc False: C xut hin hay khng khi chy chng
trnh.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n n.

Hint

Dng gi t ngn gn v StringGrid khi bn tr mouse n n. Chc


nng ny ch c tc ng khi thuc tnh ShowHint l True.

TabOrder

c nh th t bt u t 0, 1, 2,... xc nh th t m StringGrid
nhn Focus khi bn nhn phm Tab. Chc nng ny ch c tc ng khi
thuc tnh TabStop c gi tr True.
Bng 55: Cc thuc tnh TStringGrid

* Mt s s kin thng dng:


Tn s kin

p ng ca s kin

OnClick

Khi bn Click vo i tng

OnContextPopup

Khi bn RClick vo i tng, hoc thc hin vic bt ln menu


i tng.

OnDblClick

Khi bn DClick vo i tng

OnExit

Khi bn a con nhy va ri khi i tng

OnKeyDown

Khi bn g phm bt k

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 119

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


p ng ca s kin
phm iu khin nh: F1, Ctrl, Shift,...

Tn s kin

Khi bn Click vo c chn

OnSelectCell

Bng 56: Cc s kin TStringGrid


- Mt s khi nim c s dng trong v d:
+ Cu lnh bao nhm: with tn_i_tng do
begin
cc thuc tnh
v phng thc ca i tng
end;
+ Cu lnh lp:

for i := tr_u to tr_cui do cng_vic;

Nu tr_cui >= tr_u thc hin cng_vic vi (tr_cui - tr_u +1) ln.
V d 23: Hin th bng 26 k t ch ci. Click vo tng ng trong li hin
th k t trong bn va chn.
- To mt d n mi File/New/Application
- Thit lp cc thuc tnh ca form nh sau:
Thuc tnh

Gi tr

Name

frmAlphabet

Caption

Vi du ve doi tuong StringGrid

Position

poDesktopCenter
Bng 57: Thit lp cc thuc tnh cho Form.

- t cc i tng ln form v thit lp cc thuc tnh nh sau:


i tng
StringGrid
Label

Thuc tnh

Gi tr

Name

stgAlphabet

Name

lblAlphabet

Caption

BANG 26 KY TU CHU CAI

Font.Size

12

Bng 58: Thit lp cc thuc tnh cho cc i tng


on m lnh chng trnh:
unit untAlphabet;
interface
Trang 120

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Grids, StdCtrls;
type
TfrmAlphabet = class(TForm)
stgAlphabet: TStringGrid;
Label1: TLabel;
procedure FormActivate(Sender: TObject);
procedure stgAlphabetSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmAlphabet: TfrmAlphabet;
implementation
{$R *.dfm}
procedure TfrmAlphabet.FormActivate(Sender: TObject);
var i, j, k : Integer;
begin
k := 0;
with stgAlphabet do
begin
FixedCols:=0;

// Ct tri nht

FixedRows:=0;

// Hng trn nht

ColCount:=5;

RowCount:=6;

Options := Options+ [goEditing]; //cho php cp nht


for i := FixedCols to ColCount - 1 do
for j:= FixedRows to RowCount - 1 do
begin
k := k + 1;
if k <= 26 then Cells[i,j] := Chr(k+64);
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 121

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


end;
end;
end;
procedure TfrmAlphabet.stgAlphabetSelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
ShowMessage('Ky tu ban vua chon la: '+ stgAlphabet.Cells[ACol,ARow]);
{vi tham s ACol tng ng vi thuc tnh Col, v ARow tng ng Row }
end;
end.

- Lu d n vo th mc S:\ViduStringGrid
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 65: Kt qu chng trnh StringGrid


V d 24: Vit chng trnh hin th 256 k t ca bng m ASCII. S dng bng
c 24 ct v 11 hng; cao v rng mc nhin ca l 24.
- To mt d n mi File/New/Application
- Thit lp cc thuc tnh ca form nh sau:
Thuc tnh

Gi tr

Name

frmBangASCII

Caption

Bang ma ASCII

Position

poDesktopCenter
Bng 59: Thuc tnh ca frmBangASCII

Trang 122

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


- t cc i tng ln form v thit lp cc thuc tnh nh sau:
i tng

StringGrid

Thuc tnh

Gi tr

Name

grdASCII

DefaulColWidth

24

DefaulRowHeight

124

FixedCols

FixRows

v i tng nhn Label.


Bng 60: Thuc tnh cc i tng trn form

- on m lnh chng trnh:


unit untBangASCII;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, Grids, StdCtrls;
type
TfrmBangASCII = class(TForm)
grdASCII: TStringGrid;
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmBangASCII: TfrmBangASCII;
implementation
{$R *.dfm}
procedure TfrmBangASCII.FormCreate(Sender: TObject);
var i,k,j:integer;
begin
k:=0;
for i:=0 to grdASCII.ColCount-1 do
for j:=0 to grdASCII.RowCount-1 do
begin
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 123

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


if k<=256 then
k:=k+1;
end;
end;

grdASCII.Cells[i,j]:=chr(k);

end.

- Lu d n vo th mc S:\ViduStringGrid2
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 66: Hin th bng m ASCII

IV.15. Bng cha cc thnh phn (TPanel)


Thng c dng nhm cc thnh phn khc nhau cng t bn trong n gm
li thnh nhm ring bit cho d qun l, lp trnh v thao tc.
* Biu tng:
* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho i tng Panel.

Align

Xc nh vic canh l tri, phi, trn, di,... ca Panel bn trong


thnh phn cha n. Nu c gi tr bng alClient th kch thc Panel
s chim ton b b mt ca thnh phn cha n.

Alignment

Canh tri (taLeftJustify), canh phi (taRightJustify), canh gia


(taCenter) tiu .

Caption

Tiu ca TPanel

Trang 124

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha

BorderStyle

Khng k khung (bsNone), c k khung (bsSingle)

Visible

C gi tr True hoc False: C xut hin Panel v cc thnh phn bn


n hay khng khi chy chng trnh.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n cc thnh phn m n cha hay khng.

Hint

Dng gi t ngn gn v Panel khi bn tr mouse n n. Chc nng


ny ch c tc ng khi thuc tnh ShowHint l True.

TabOrder

c nh th t bt u t 0, 1, 2,... xc nh th t m Panel
c nhn Focus khi bn nhn phm Tab. Chc nng ny ch c tc
ng khi thuc tnh TabStop c gi tr True.
Bng 61: Cc thuc tnh ca TPanel

* Mt s s kin thng dng:


p ng ca s kin

Tn s kin
OnClick

Khi ngi s dng Click vo i tng

OnContextPopup

Khi ngi s dng RClick vo i tng, hoc thc hin vic bt ln


menu i tng.

OnDblClick

Khi ngi s dng DClick vo i tng

OnExit

Khi i tng mt tiu im (Lost Focus)

OnKeyDown

Khi c phm bt k c nhn

OnKeyPress

Gn nh s kin OnKeyDown, nhng khng p ng cho cc phm


iu khin nh: F1, Ctrl, Shift,...
Bng 62: Cc s kin ca TPanel

* Mt s phng thc (Method) thng dng:


C php ca phng thc

ngha

Show;

Th tc hin th i tng khi chy chng trnh.

Hide;

Th tc n i tng khi chy chng trnh.


Bng 63: Cc phng thc ca TPanel

IV.16. Thanh thc n chnh (TMainMenu)


Thng c s dng khi chng trnh ca bn c nhiu chc nng khc nhau.
gip cho ngi s dng d dng s dng chng trnh hn, ngi ta thng thit k mt
thanh thc n chnh. Thanh thc n ny bao gm nhiu thc n (Menu Item) ghp li.
* Biu tng:
* Mt s thuc tnh thng dng:
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 125

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha

Name

Xc nh tn cho thc n chnh, tn ny c t nh tn bin v


c s dng trong vic vit m lnh ca chng trnh v gn kt vo
cc i tng khc (nu c).

Items

Cho php bn nhp cc thc n (MenuItem) vo MainMenu ti thi


im thit k thng qua chc nng Menu Designer. Bn cng c th
RClick, DClick vo biu tng MainMenu hoc tn i tng trong
ca s Object TreeView thit k thanh thc n ny. Bn ch l
mi thc n c to ra bi thnh phn TMenuItem c dn xut
t lp cha (Ancestor class) l TComponent. Lp TMenuItem ny
c trnh by phn tip theo.

Images

Danh sch cc hnh nh (thng qua thnh phn TImageList trn tab
Win32) c gn vo cc thc n ca thanh menu. Bn cng c th
gn tng hnh nh vo tng thc n thng qua thuc tnh Bitmap ca
mi thc n (TMenuItem)
Bng 64: Cc thuc tnh ca TMainMenu

* Cch s dng: Thng mt thanh thc n c t trong mt ca s chnh (giao


din chng trnh). gn TMainMenu ny vo form chnh (MainForm), bn m
MainForm ch thit k, v t thuc tnh Menu bn Click chn tn (name) ca
MainMenu cn gn ln.

IV.17. Thc n (TMenuItem)


* Biu tng: Khng c. N c t ng to ra bi chc nng Menu Designer
trong qu trnh thit k thanh thc n chnh (Main Menu).
* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho thc n, tn ny c t nh tn bin v c s


dng trong vic vit m lnh ca chng trnh.

AutoCheck

C gi tr True th lc bn chy chng trnh v Click vo thc n


th Delphi s t ng bt/tt du Check ln pha trc ca thc n;
ngc li th c gi tr False.

Checked

C gi tr True v False: Bn nh du check vo thc n ny ngay


thi im thit k.

Bitmap

Gn hnh nh vo thc n

Caption

Tiu ca thc n

ImageIndex

L ch mc hnh nh trong danh sch hnh ca ImageList. Mc nhin


c gi tr l 1 : khng s dng hnh nh trong ImageList.

Enabled

C gi tr True hoc False: Cho php hay khng ngi s dng truy
xut n cc thnh phn m n cha hay khng.

Hint

Dng gi t ngn gn v MenuItem khi bn tr mouse n n. Chc


nng ny ch c tc ng khi thuc tnh ShowHint l True.

Trang 126

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Tn thuc tnh

ngha

ShortCut

Xc nh (t hp) phm nng cho thc n.

Visible

C gi tr True hoc False: Cho hin th hay khng cho hin th


TMenuItem.
Bng 65: Cc thuc tnh ca TMenuItem

* Mt s s kin thng dng:


p ng ca s kin

Tn s kin

Khi bn Click chn vo thc n lc chy chng trnh.

OnClick

Bng 66: S kin ca TMenuItem


V d 25: Chng trnh tin ch
- To mt d n mi File/New/Application
- Thit lp cc thuc tnh ca main form (Giao din chnh) nh sau:
Thuc tnh

Gi tr

Name

frmMain

Caption

Vi du ve doi tuong MainMenu

Position

poMainFormCenter

Bng 67: Thit lp cc thuc tnh cho form frmMain


- t cc thnh phn ln form v thit lp thuc tnh nh sau. Ch TMainMenu
ch c 1 thc n (TMenuItem) l Tien ich, trong thc n Tien ich th c 4 thc n cp
con (TMenuItem) l May tinh, Xem ngay gio, ng phn cch (du - ) v Thoat

i
tng

Thuc
tnh

Gi tr

Name

mmuMainForm
C 5 TMenuItem nh sau:
Th

MainMenu

Items

Name

Caption

Shortcut

Bitmap

mniTienIch

&Tien ich

mniMayTinh

&May tinh

Ctrl+M

Calculator.bmp

mniXemngaygio

Xem
gio

Ctrl+D

Clock.bmp

mniN1

mniThoat

&Thoat

Ctrl+Q

Close.bmp

&ngay

Bng 68: Thit lp cc thuc tnh cho cc i tng trn Form


B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 127

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


- To thm form May tinh don gian nh hnh sau:

Hnh 67: Thit k form frmMayTinh

Thuc tnh

Gi tr

Name

frmCalculator

Caption

May tinh don gian

Bng 69: Thit lp cc thuc tnh frmMayTinh

i tng

Thuc tinh
Name

Gi tr

Edit th 1

Name

rgpPhepToan
Cong
Tru
Nhan
Chia
Div
Mod
edt_a

Edit th 2

Name

edt_b

Edit th 3

Name

edt_Kq

RadioGroup

Items

v mt s nhn theo form.


Bng 70: Cc i tng trn frmMayTinh
- To thm form Ngay gio hien hanh nh hnh v cc thuc tnh sau:

Hnh 68: Thit k form frmDateTime


Trang 128

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


i tng
Form

Label

Thuc tnh

Gi tr

Name

frmDateTime

Caption

Ngay gio hien hanh

Position

poMainFormCenter

Name

lblDateTime

Bng 71: Thit lp cc thuc tnh frmDateTime v lblDateTime


- on code ca chng trnh unit file untMain nh sau:
unit untMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, Menus;
type
TfrmMain = class(TForm)
mmuMainForm: TMainMenu;
mniTienIch: TMenuItem;
mniMayTinh: TMenuItem;
mniXemngaygio: TMenuItem;
mniN1: TMenuItem;
mniThoat: TMenuItem;
procedure mniMayTinhClick(Sender: TObject);
procedure mniXemngaygioClick(Sender: TObject);
procedure mniThoatClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
uses untMaytinh,untDateTime;
{$R *.dfm}
procedure TfrmMain.mniMayTinhClick(Sender: TObject);
begin
frmCalculator.ShowModal;
end;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 129

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


procedure TfrmMain.mniXemngaygioClick(Sender: TObject);
begin
frmDateTime.ShowModal;
end;
procedure TfrmMain.mniThoatClick(Sender: TObject);
begin
Close;
end;
end.

- on code ca chng trnh unit file untMayTinh nh sau:


unit untMayTinh;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type
TfrmCalculator = class(TForm)
rgpPhepToan: TRadioGroup;
edt_a: TEdit;
edt_b: TEdit;
Label1: TLabel;
Label2: TLabel;
edt_Kq: TEdit;
Label3: TLabel;
procedure rgpPhepToanClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmCalculator: TfrmCalculator;
implementation
{$R *.dfm}
procedure TfrmCalculator.rgpPhepToanClick(Sender: TObject);
var a, b: extended;
begin
Trang 130

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


if TryStrToFloat(edt_a.Text,a) and TryStrToFloat(edt_b.Text,b)
then
begin
Case rgpPhepToan.ItemIndex of
0: edt_Kq.Text := FloatToStr(a + b);
1: edt_Kq.Text := FloatToStr(a - b);
2: edt_Kq.Text := FloatToStr(a * b);
3: if b<> 0 then edt_Kq.Text := FloatToStr(a / b)
else edt_Kq.Text := 'Loi! Phep toans chia 0.';
4: edt_Kq.Text := FloatToStr(Trunc(a) DIV Trunc(b));
5: edt_Kq.Text := FloatToStr(Trunc(a) MOD Trunc(b));
end;
// end case
end
// end begin
else ShowMessage('Loi! Du lieu nhap sai.');
end;
procedure TfrmCalculator.FormActivate(Sender: TObject);
begin
edt_a.Clear;
edt_b.Clear;
edt_Kq.Clear;
end;
end.

- on code ca chng trnh unit file untDateTime; nh sau:


unit untDateTime;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmDateTime = class(TForm)
lblDateTime: TLabel;
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmDateTime: TfrmDateTime;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 131

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


implementation
{$R *.dfm}
procedure TfrmDateTime.FormActivate(Sender: TObject);
begin
lblDateTime.Font.Color := clBlue;
lblDateTime.Font.Size:=15;
lblDateTime.Alignment:=taCenter;
lblDateTime.Caption:=DateToStr(Date)+ Chr(32)+ TimeToStr(time);
end;
end.

- Vo chc nng Project/Options/tab Forms chn Main Form l frmMain nh hnh:

Hnh 69: Chn frmMain lm form chnh.


- Lu d n vo th mc S:\ViduMainMenu
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Trang 132

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 70: Kt qu chng trnh ca frmMain


- Click chn chc nng May tinh, ta c hnh nh sau:

Hnh 71: Hin th form frmMayTinh


- Click chn chc nng Xem ngay gio, ta c hnh nh sau:

Hnh 72: Hin th form frmDateTime


v d trn, chng ta s dng cc form bnh thng (fsNormal) to giao din
chnh (Main form). Tuy nhin, khi bn kh hiu v Delphi th c mt cng c hu ch l
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 133

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


MDIForm (Multi Document Interface) to giao din chnh v qun l d n ca bn
hiu qu v chuyn nghip hn.

IV.18. Menu i tng (TPopupMenu)


Cn c gi l trnh n ng cnh, hay menu tt. Chc nng thng c s dng
vo mc ch bt mt menu ti bt k ni no trn i tng cha n khi bn s dng thao
tc RClick .

* Biu tng:
* Mt s thuc tnh thng dng:
Tn thuc tnh

ngha

Name

Xc nh tn cho menu i tng, tn ny c t nh tn bin v


c s dng trong vic vit m lnh ca chng trnh v gn kt vo
cc i tng khc (nu c).

Alignment

V tr xut hin ca TPopupMenu gc trn bn tri (paLeft), gc trn


bn phi (paRight), gc trn gia (paCenter) ca mouse.

AutoPopup

C gi tr True v False: T ng bt hay khng khi ngi s dng


RClick.

Items

Cho php bn nhp cc thc n (MenuItem) vo PopupMenu ti thi


im thit k thng qua chc nng Menu Designer. Bn cng c th
Rclick, DClick vo thnh phn TMainMenu hoc tn i tng
trong ca s Object TreeView thit k thanh thc n ny. Mi
thc n trong PopupMenu c to ra bi thnh phn TMenuItem
nh trnh by phn trn.

Images

Danh sch cc hnh nh (thng qua thnh phn ImageList trn tab
Win32) c gn vo cc thc n ca thanh thc n. Bn cng c
th gn tng hnh nh vo tng thc n thng qua thuc tnh Bitmap
ca mi thc n (TMenuItem)
Bng 72: Cc thuc tnh ca TPopupMenu

* Mt s s kin thng dng:


Tn s kin
OnPopup

p ng ca s kin
Khi bn RClick, ch rng s kin ny s xy ra trc khi PopupMenu
bt ln.
Bng 73: S kin ca TPopupMenu

V d 26: S dng TPopup thay i mu nn ca form:


- To mt d n mi File/New/Application
- Thit lp cc thuc tnh ca form nh sau:

Trang 134

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


Thuc tnh

Gi tr

Name

frmMain

Caption

Vi du ve doi tuong PoupMenu

PopupMenu

{c xc lp bc sau}

Bng 74: Thit lp cc thuc tnh cho TForm


- t cc i tng ln form v thit lp cc thuc tnh nh sau:
i tng

Thuc tnh
Name

Gi tr
pmuMauSac
C 6 TMenuItem nh sau:
Th

PopupMenu

Items

Name

Caption

mniMauXanh

Mau &Xanh

mniMauDo

Mau &Do

mniMauTim

Mau &Tim

mniMauVang

Mau &Vang

mniN1

mniMauBandau Mau &Ban dau

Bng 75: Thit lp cc thuc tnh cho cc i tng trn form.


- Tr li thuc tnh PopupMenu ca form frmMain, bn gn pmuMauSac vo form.
- on code ca chng trnh nh sau:
unit untPopup;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, Menus;
type
TfrmPopup = class(TForm)
pmuMauSac: TPopupMenu;
mniMauXanh: TMenuItem;
mniMauDo: TMenuItem;
mniMauTim: TMenuItem;
mniMauVang: TMenuItem;
mniN1: TMenuItem;
mniMauBandau: TMenuItem;
procedure mniMauXanhClick(Sender: TObject);
procedure mniMauDoClick(Sender: TObject);
procedure mniMauTimClick(Sender: TObject);
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 135

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi


procedure mniMauVangClick(Sender: TObject);
procedure mniMauBandauClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmPopup: TfrmPopup;
implementation
{$R *.dfm}
procedure TfrmPopup.mniMauXanhClick(Sender: TObject);
begin
frmPopup.Color := clBlue;
end;
procedure TfrmPopup.mniMauDoClick(Sender: TObject);
begin
frmPopup.Color := clRed;
end;
procedure TfrmPopup.mniMauTimClick(Sender: TObject);
begin
frmPopup.Color := clPurple;
end;
procedure TfrmPopup.mniMauVangClick(Sender: TObject);
begin
frmPopup.Color := clYellow;
end;
procedure TfrmPopup.mniMauBandauClick(Sender: TObject);
begin
frmPopup.Color := clBtnFace;
end;
end.

- Lu d n vo th mc S:\ViduPopup
- Bin dch v chy chng trnh, RClick ln Form, ta c kt qu nh sau:

Trang 136

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 5: Lp trnh x l s kin Cc thnh phn ca Delphi

Hnh 73: Kt qu chng trnh PopupMenu

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 137

Chng 6: Cc lnh c cu trc

CHNG 6: CC LNH C CU TRC


I. Lnh ghp (Compound statement)
Mt nhm cu lnh n c t gia t kho begin ... end; s to thnh mt cu
lnh ghp.
Trong Pascal ta c th t cc lnh ghp con trong cc lnh ghp ln hn bao ngoi
ca n v c th hiu tng t nh cu trc ngoc n ( ) trong cc biu thc Ton hc.
* S :
begin
Lnh 1;
Lnh 2;
...
Lnh n;
end;
Hnh 1: Lnh ghp begin .. end;
hnh minh ha trn ta thy cc lnh c nhm li thnh tng khi (block). Mt
khi lnh bt u bng begin v chm dt end; Trong mt khi lnh cng c th c cc
khi lnh con nm trong n. Mt khi chng trnh thng c dng nhm t 2 lnh n
tr ln to thnh mt Cng_vic ca cc lnh c cu trc, bn s gp khi nim ny
trong cc v d cc phn sau.
II. Lnh cu trc r nhnh
Lnh c cu trc r nhnh c s dng trong trng hp chng trnh ch cn
chn mt trong cc cng vic thc hin ti mt thi im.

II.1. Lnh if ... then ... v lnh if ... then ... else..
II.1.1. Lnh if ... then
* Lu din t cc lnh v ngha:

* C php:
iu_kin

false

if <iu_kin> then cng_vic;


* ngha:

true
Nu iu_kin c gi tr ng th s thc
hin cng_vic ri kt thc lnh.

cng_vic

Ngc li (iu kin c gi tr sai) th s b


qua cng_vic v kt thc lnh.
kt thc lnh if
Hnh 2: Lnh if ... then ..;

Trang 138

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc


V d 1: on chng trnh sau m t cch thc hin lnh if ... then
begin
{ Lnh m t mt cu lnh if ..then n gin vi iu kin lun c gi tr True v chng
trnh thc hin cng vic ch c 1 lnh n }
if true then
ShowMessage( ' Dieu kien dung.' );
// Lnh ny ging nh lnh trn nhng chng trnh thc hin cng vic bao gm 2 lnh
if (1 = 1) or ( true >= false) then // iu kin c tr ng
begin
//bt u lnh ghp
ShowMessage( ' Dieu kien dung ' );
ShowMessage( ' Chao cac ban den voi Delphi - phin bn 7.0' );
end;
//ht lnh ghp
if 'Delphi' = 'Java' then // iu kin c gi tr sai
ShowMessage( ' Oh, dieu kien sai. Lenh se bi bo qua ' );
end;

II.1.2. Lnh if ... then ... else


* C php:
if <iu kin> then
cng_vic_1
else
cng_vic_2;
* ngha:

iu_kin

false

true
cng_vic_1
cng_vic_2

Nu iu kin ng th thc hin cng vic


1 (khng thc hin cng vic 2).
Ngc li (iu kin sai) th s thc hin
cng vic 2 (khng thc hin cng vic 1).

kt thc
Hnh 3: lnh if ... then ... else

Ch :
- iu kin l mt biu thc Boolean (c gi tr ng: True hoc sai: False).
- Nu cng vic sau then hoc sau else c nhiu hn mt lnh th ta phi gi li
trong ghp begin ... end;
- Ton b lnh if ... then ... else xem nh 1 lnh n.
- Lnh ng trc t kha else th khng c du chm phy (;) cui lnh.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 139

Chng 6: Cc lnh c cu trc


V d 2: on chng trnh sau m t cch thc hin lnh if ... then ... else
var x: single;
begin
if 4>=4 then
begin
x := 2*sin(PI/2)/sqrt(9);
ShowMessage( ' x = ' + FormatFloat('0.000', x);
end

//khng c du ;

else ShowMessage( 'Dieu kien sai');


// Kt qu hin th gi tr bin x = 0.667
// Cc lnh IF lng vo nhau
if true Then
if false Then ShowMessage(' I ' )
else ShowMessage(' LOVE ' )
else ShowMessage(' DELPHI ' );
end;
// Kt qu hin th t: LOVE

V d 3: Vit chng gii phng trnh bc nht ax + b = 0


Hng dn:
- To d n mi: File/New/Application

Lu : Do cc bn hc xong chng 5, nn gio trnh s trnh by cch vit


chng trnh mt cch ngn gn hn. Bn phi t xc nh v thit lp cc thuc tnh cho
cc i tng trong chng trnh sao cho thch hp nht theo ca mnh. Gio trnh ch
a ra cc tn (name) ca i tng vit code cho d n m thi.
- t thuc tnh name cho cc i tng ca chng trnh nh sau:

Hnh 4: Tn (name) ca cc i tng

Trang 140

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc


- Thit k giao din trn form:

Hnh 5: Giao din phng trnh bc nht


- on code ca chng trnh nh sau:

Lu : vit chng trnh cho chnh xc, bn cn phi xc nh ng th tc


s kin m bn xc nh l ca i tng no ng vi s kin g trn form. Bn c th
xem li trong phn Cch hnh thnh th tc s kin chng 5.
unit untPtb1;//tn untPtb1 l do lu unit file vi tn untPtb1.pas
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

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);

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 141

Chng 6: Cc lnh c cu trc


private
{ Private declarations }
public
{ Public declarations }
end;

var
frmPTB1: TfrmPTB1;

implementation
{$R *.dfm}

procedure TfrmPTB1.btnXuLyClick(Sender: TObject);


var a, b, x: extended;
begin
memKQua.Lines.Clear;
if (TryStrToFloat(edt_a.Text, a)=true) and
(TryStrToFloat(edt_b.Text, b)=true) then
begin
if a=0 then
if b=0 then
memKQua.Lines.Text:='Phuong trinh vo so nghiem'
else
memKQua.Lines.Text:='Phuong trinh vo nghiem'
else

//a <>0

begin
memKQua.Lines.Add('Phuong trinh co nghiem:');
x:=-b/a;
memKQua.Lines.Add('

x= '+ FloatToStr(x));

end;
end
else
begin
memKQua.Lines.Text:='Nhap sai! Nhap lai he so a va b.';
edt_a.Clear;

edt_b.Clear;

edt_a.SetFocus;
end;
end;

Trang 142

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc


procedure TfrmPTB1.btnKetThucClick(Sender: TObject);
begin
Close;
end;
end.

- Lu d n vo th mc S:\ViduPTB1
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 6: Chy chng trnh


V d 4: Gii phng trnh ax2 + bx +c = 0
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 7: Tn cc i tng v giao din chng trnh

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 143

Chng 6: Cc lnh c cu trc


- on code ca chng trnh nh sau:
unit untPTB2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmPTB2 = class(TForm)
edt_a: TEdit;
edt_b: TEdit;
edt_c: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
btnGiai: TButton;
memKQ: TMemo;
Label4: TLabel;
btnNhapLai: TButton;
procedure btnGiaiClick(Sender: TObject);
procedure btnNhapLaiClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmPTB2: TfrmPTB2;
implementation
{$R *.dfm}
procedure TfrmPTB2.btnGiaiClick(Sender: TObject);
var a, b, c, delta, x1, x2: single;
mOK1, mOK2, mOK3: boolean;
begin
mOK1 := False;
mOK2 := False;
mOK3 := False;
memKQ.Lines.Clear;
mOK1 := TryStrToFloat(edt_a.Text,a);
mOK2 := TryStrToFloat(edt_b.Text,b);
mOK3 := TryStrToFloat(edt_c.Text,c);
if (mOK1 = True) and (mOK2 = True) and (mOK3 = True) then
//nhap du lieu dung

Trang 144

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc


begin
if a = 0 then
// giai ptb1
if b = 0 then
if c = 0 then memKQ.Lines.Add('Phuong trinh Vo so nghiem')
else memKQ.Lines.Add('Phuong trinh Vo nghiem')
else memKQ.Lines.Add('Phuong trinh co nghiem la ' +
FloatToStr(c/b))
else // a <> 0, bat dau giai ptb2
begin
delta := sqr(b) - 4*a*c;
if delta < 0 then
memKQ.Lines.Add('Phuong trinh Vo nghiem.')
else
if delta = 0 then
memKQ.Lines.Add('Phuong trinh co nghiem kep x1 = x2 =
'+FloatToStr(-b/(2*a)))
else
begin
x1 := (-b + sqrt(delta))/(2*a);
x2 := (-b - sqrt(delta))/(2*a);
memKQ.Lines.Add('Phuong trinh co 2 nghiem phan biet:');
memKQ.Lines.Add('
x1= '+FormatFloat('#,##0.00',x1));
memKQ.Lines.Add('
x2= '+FormatFloat('#,##0.00',x2));
end;
end; // end else a<>0
end
// end if mOK1...
else
// else if: Nhp d liu sai.
ShowMessage('Ban nhap he so a, b, c KHONG hop le!...');
end;
procedure TfrmPTB2.btnNhapLaiClick(Sender: TObject);
begin
edt_a.Clear;
edt_b.Clear;
edt_c.Clear;
memKQ.Lines.Clear;
edt_a.SetFocus;
end;
end.

- Lu d n vo th mc S:\ViduPTB2
- Bin dch v chy chng trnh, ta c kt qu nh sau:

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 145

Chng 6: Cc lnh c cu trc

Hnh 8: Chy chng trnh

II.2. Lnh Case ... of


* C php, ngha:
Case <biu_thc> of // Xt gi tr ca biu thc:
GT1 : cng_vic_1 ; // Nu biu_thc = GT1 (gi tr 1) th thc hin cng_vic_1,
GT2 : cng_vic_2 ; // nu biu_thc = GT2 th thc hin cng_vic_2,

GTn : cng_vic_n ; // nu biu_thc = GTn th thc hin cng_vic_n


[else cng_vic_0 ;] //Ngc li s thc hin cng_vic_0
End;

//end case

* Lu :
case
of

BIU THC

else
GT1

cng_vic_1

GT2

cng_vic_2

GT...

....

GTn

cng_vic_n

GT0

cng_vic_0

end;

Hnh 9: Lu lnh Case ... of ... end;

Trang 146

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc


Ch :
- Lnh Case ... of c th khng c else
- Biu thc trong Case... of phi c kiu d liu ri rc/m c nh: Integer,
Char,...
- Nu mun ng vi nhiu gi tr khc nhau ca biu thc m my vn thi hnh mt
Cng_vic th cc gi tr ny c th vit trn cng mt hng cch nhau bi du phy (,):
k1, k2, ..., kp : cng_vic;
V d 5: on chng trnh sau m t cch s dng lnh Case ... of
var
color: integer ;
begin
color := StrToInt(InputBox('Hop nhap lieu', 'Nhap so tu 1 den 5','1'));
case color of
1, 2: ShowMessage('Mau do');
3, 4: ShowMessage('Mau trang');
5: ShowMessage('Mau xanh');
end;
end;
V d 6: Vit chng trnh nhp vo hai s thc a, b v mt k t ch l php tnh
cn thc hin (+, -, *, /). Sau thc hin php tnh v hin th kt qu ln
mn hnh.
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 10:

Tn cc i tng v giao din chng trnh

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 147

Chng 6: Cc lnh c cu trc


- on code ca chng trnh nh sau:
unit untCaseOf;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmMain = class(TForm)
Label1: TLabel;
edt_a: TEdit;
Label2: TLabel;
edt_b: TEdit;
Label3: TLabel;
edt_PT: TEdit;
btnXemKQ: TButton;
btnKetThuc: TButton;
Label4: TLabel;
memKQua: TMemo;
procedure btnKetThucClick(Sender: TObject);
procedure btnXemKQClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.btnXemKQClick(Sender: TObject);
var a, b:extended; ch:char;
begin
memKQua.Lines.Clear;
a:=StrToFloat(edt_a.Text);
b:=StrToFloat(edt_b.Text);
ch:=edt_PT.Text[1]; // ly k t u tin
case ch of
'+': memKQua.Lines.Add(' a+b= '+FloatToSTR(a+b));
'-': memKQua.Lines.Add(' a-b= '+FloatToSTR(a-b));
'*': memKQua.Lines.Add(' a*b= '+FloatToSTR(a*b));
'/': if b=0 then
memKQua.Lines.Add('Loi! Phep chia 0.')
else
Trang 148

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc


memKQua.Lines.Add(' a/b= '+FloatToStr(a/b));
else
memKQua.Lines.Add('Phep tinh khong thuc hien duoc');
end;
end;
procedure TfrmMain.btnKetThucClick(Sender: TObject);
begin
close;
end;
end.

- Lu d n vo th mc S:\ViduCaseOf
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 11:

Chy chng trnh

III. Cu trc lnh lp


Lnh c cu trc lp thng c s dng khi chng trnh phi thc hin cng vic
lp i lp li nhiu ln.

III.1. Lnh lp c s ln xc nh trc


Lnh lp for cho php chng trnh thc hin cng vic nhiu ln v vi s ln lp
bit trc. Lnh for c 2 dng:
For ... to ... do
v

For ... downto ... do :

m ln,
m xung.

* C php m ln:
for <bin_m := tr_u> to <tr_cui> do cng_vic;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 149

Chng 6: Cc lnh c cu trc


* Lu :

* ngha lu :
Sai

u tin kim tra tr u nh hn


hoc bng tr cui khng? Nu:

tr u <= tr cui

ng

+ Sai, kt thc lnh.


+ ng, th thc hin cng
vic v tng bin m ln 1, sau
kim tra bin m c cn nh hn
hoc bng tr cui khng? Nu
ng th lp li vic thc hin cng
vic cho n khi bin m khng
cn nh hn hoc bng tr cui
na th thot khi vng lp v kt
thc lnh.

bin m := tr u

Sai
bin m <= tr cui

{lp}

ng
cng vic

tng bin m ln 1

Hnh 12:

Kt thc

Lu lnh lp for ... to ... do

Ch : Bin m, tr u, tr cui l kiu d liu m c (ri rc) nh: s nguyn, Char,


kiu lit k (Enum).
Tnh tng s = 1 + 2 + 3 + 4 + 5.
V d 7:
var i, s : integer;
begin
s := 0; //Khi to bin tng
n:= 5;
for i:=1 to n do s := s + i;
ShowMessage( 'Bien dem i = '+IntToStr(i) + ', Tri cuoi n = '+IntToStr(n)
+ ', va tong s= ' + IntToStr(s) );
end;

Hnh 13:

Trang 150

Kt qu chng trnh tnh tng

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc


V d 8: Bin m l kiu lit k
var
suit : (Hearts, Clubs, Diamonds, Spades);
begin
// Lnh For lp 3 ln
for suit := Hearts to Diamonds do
ShowMessage( ' Suit = ' + IntToStr(Ord(suit)) );
end;
V d 9: Vit chng trnh nhp vo mt s nguyn dng n, sau tnh tng S1
nh sau:
S1 = 1 + 2 + 3 + 4 + ... + n
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 14:

Tn cc i tng v giao din chng trnh

- on code ca chng trnh nh sau:


unit untTongS1;
interface
uses
Windows, Messages, SysUtils, Variants,
Controls, Forms,
Dialogs, StdCtrls;

Classes,

Graphics,

type
TfrmMain = class(TForm)
Label1: TLabel;
edt_n: TEdit;
btnXemKQ: TButton;
btnKThuc: TButton;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 151

Chng 6: Cc lnh c cu trc


Label2: TLabel;
memKQua: TMemo;
procedure btnXemKQClick(Sender: TObject);
procedure btnKThucClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.btnXemKQClick(Sender: TObject);
var n,i,s1:integer;
begin
memKQua.Lines.Clear;
n:=StrToInt(edt_n.Text);
s1:=0; // khi to bin tng
for i:=1 to n do s1:=s1+i;
memKQua.Lines.Add( ' Tong S1 = ' + IntToStr(S1));
end;
procedure TfrmMain.btnKThucClick(Sender: TObject);
begin
close;
end;
end.

- Lu d n vo th mc S:\ViduTongS1
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 15:
Trang 152

Chng trnh tnh tng

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc


* C php m xung:
for <bin_m := tr_u> downto <tr_cui> do cng_vic;
ngha: Tng t nh m ln. Lp m xung c tr_u>= tr cui, mi ln lp
bin m t ng gim xung 1.
V d 10: m gim
var c : char;
begin
for c := 'E' downto 'A' do ShowMessage('c = '+c);
end;
V d 11: Nhp s nguyn dng n v mt s thc a bt k. Hy tnh gi tr ca biu
thc X:
X =

an
a * a * ... * a
X =
n!
1 * 2 * ... * n

Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 16:

Tn cc i tng v giao din chng trnh

on code ca chng trnh:


unit untTinhX;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 153

Chng 6: Cc lnh c cu trc


TfrmTinhX = class(TForm)
lbe_n: TLabeledEdit;
btnTinhX: TButton;
lbeKQ: TLabeledEdit;
btnNhapLai: TButton;
lbe_a: TLabeledEdit;
procedure btnTinhXClick(Sender: TObject);
procedure btnNhapLaiClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmTinhX: TfrmTinhX;
implementation
{$R *.dfm}
procedure TfrmTinhX.btnTinhXClick(Sender: TObject);
var mGiaiThua, mLuyThua, a, X : single;
i, n:Integer;
begin
if TryStrToInt(lbe_n.Text, n) and (n>=0) and
TryStrToFloat(lbe_a.Text, a) then
begin
if n = 0 then X:=1
//a^0 =1 va 0! =1
else
begin
mGiaiThua := 1;
mLuyThua :=1;
for i:=1 to n do
begin
mGiaiThua := mGiaiThua * i;
mLuyThua := mLuyThua * a;
end;
X := mLuyThua/mGiaiThua;
end;
lbeKQ.Text :=' X = '+FormatFloat('#,#00.000',X);
end
else
ShowMessage('Ban phai nhap n la so nguyen duong.');
end;

Trang 154

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc


procedure TfrmTinhX.btnNhapLaiClick(Sender: TObject);
begin
lbe_n.Clear; lbe_a.Clear; lbeKQ.Clear;
lbe_n.SetFocus;
end;
end.

- Lu d n vo th mc: S:\ViduTinhX
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 17:

Kt qu chng trnh

III.2. Lnh lp c s ln khng xc nh trc


III.2.1. Lnh lp while .. do
Lnh lp while..do l vng lp kim tra iu kin trc v thc hin cng vic sau.
N cho php chng trnh thc hin cng vic nhiu ln v vi s ln lp khng c xc
nh trc.
* C php tng qut:
while <iu_kin> do cng_vic;
* Lu :
sai

iu_kin
{lp}

ng
cng_vic

Hnh 18:

Kt...thc
do
Lu lnh lp while

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 155

Chng 6: Cc lnh c cu trc


* ngha:
u tin l kim tra iu kin, nu iu kin ng th thc hin cng vic, ri quay
tr v iu kin kim tra. Vng lp s c tip tc cho n khi iu kin khng cn ng
na th s kt thc lnh.
Ch :

iu kin trong cu trc lp while do l mt biu thc tr v gi tr kt qu c kiu


Boolean (kt qu ch c 2 gi tr l ng (True) hoc Sai (False)).

V d 12:

Chng trnh sau hin th kt qu bnh phng gi tr ca bin a (ban u


a = 1) v tng dn bin a cho n khi kt qu bnh phng gi tr ca bin a
ln hn 100.

var num, bp: integer;


begin
num := 1;
bp := num * num;

//bnh phng

while bp <= 100 do


begin
// Hin th kt qu bnh phng gi tr ca bin num
ShowMessage( IntToStr(num) + ' squared = ' + IntToStr(bp) );
inc(num); // Tng gi tr ca bin num ln 1
bp := num * num;
end;
end.
V d 13:

Vit chng trnh tm s nguyn dng k ln nht tha: 4k < m, vi m>1 l


mt s thc c nhp t bn phm.

Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Trang 156

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc

Hnh 19:

Tn cc i tng v giao din chng trnh

- on code ca chng trnh nh sau:


unit untVongLapWhile;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmMain = class(TForm)
Label1: TLabel;
edt_a: TEdit;
btnKetThuc: TButton;
btnXemKQua: TButton;
Label2: TLabel;
memKQua: TMemo;
procedure btnKetThucClick(Sender: TObject);
procedure btnXemKQuaClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.btnKetThucClick(Sender: TObject);
var k:integer;
s, m:extended;
begin
memKQua.Lines.Clear;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 157

Chng 6: Cc lnh c cu trc


m:=StrToFloat(edt_a.Text);
k:=0;
s:=1;
while s < m do
begin
s:=s*4;
k:=k+1;
end;
memKQua.Lines.Add('Gia tri k tim duoc la: '+ IntToStr(k-1));
memKQua.Lines.Add('Tong S= '+ FloatToStr(s/4));
end;
procedure TfrmMain.btnXemKQuaClick(Sender: TObject);
begin
Close;
end;
end.

- Lu d n vo th mc S:\ViduWhile
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 20:

Tm s dng k ln nht

V d 14: Vit chng trnh nhp vo mt s nguyn dng n bt k. Hy tnh tng


cc s hng ca s n ny?
C th vi:

n = 356789107
n = 1257

=> S = 3 + 5 + 6 + 7 + 8 + 9 + 1 + 0 + 7
S = 46
=> S = 1 + 2 + 5 + 7
S = 15

Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Trang 158

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc

Hnh 21:

Tn cc i tng v giao din chng trnh

- on code ca chng trnh nh sau:


unit TachSoHang;
interface
uses
Windows, Messages, SysUtils, Variants,
Controls, Forms, Dialogs, StdCtrls;

Classes,

Graphics,

type
TfrmViDu = class(TForm)
edtN: TEdit;
Label1: TLabel;
btnTinh: TButton;
edtKQ: TEdit;
Label3: TLabel;
procedure btnTinhClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmViDu: TfrmViDu;
implementation
{$R *.dfm}
procedure TfrmViDu.btnTinhClick(Sender: TObject);
var n, s: integer;
begin
if TryStrToInt(edtN.Text,n) and (n>=1) then
begin
s:=0;
while (n>0) do
begin
s:=s + n MOD 10;
n:=n DIV 10;
end;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 159

Chng 6: Cc lnh c cu trc


edtKQ.Text:=IntToStr(s);
end
else ShowMessage('Ban nhap du lieu KHONG thoa.');
end;
end.

- Lu d n vo th mc: S:\ViduTachSoHang
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 22:

Vi n = 356789107

Hnh 23:

Vi n = 1257

III.2.2. Lnh lp Repeat ... until


Lnh lp repeat ... until l vng lp thc hin cng vic trc, kim tra iu kin
sau. N cho php chng trnh thc hin cng vic nhiu ln v vi s ln lp khng c
xc nh trc.
* C php:
cng_vic

repeat
cng_vic;

{lp}

until iu_kin;
sai

iu_kin
ng
Kt thc

Hnh 24:
Trang 160

Lu lnh lp repeat ... until

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc


* ngha:
Lnh lp repeat ... until s tip tc thc hin cng vic cho n khi iu kin c
tha, ngha l khi iu kin c gi tr True th s thot khi vng lp.
Ch :
- Trong lnh lp repeat..until, nu cng vic c t hai lnh tr ln th khng nht thit phi
dng cp t kha begin ... end; nhm cc lnh n ny li.
- Trong lnh lp while ... do, do iu kin c kim tra u tin nn cng vic c th
khng c thc hin ln no. Cn trong lnh lp repeat ... until th cng vic c thc
hin trc v iu kin sau t kha until c kim tra sau nn cng vic c thc hin t
nht mt ln.
V d 15: Chng trnh sau hin th kt qu bnh phng gi tr ca bin num (ban u
num = 1) v tng dn bin num cho n khi kt qu bnh phng gi tr ca bin
num ln hn 100.
var
num, bp : integer;
begin
num := 1;
bp := num * num;
repeat
ShowMessage( IntToStr(num) + ' squared = ' + IntToStr(bp) );
Inc(num);
bp := num * num;
until bp >100;
end;
V d 16: Vit chng trnh tm s nguyn dng k ln nht tha: 4k < a
Trong a>1 l mt s thc c nhp t bn phm.
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 161

Chng 6: Cc lnh c cu trc

Hnh 25:

Tn cc i tng v giao din chng trnh

- on code ca chng trnh nh sau:


unit VongLapRepeat;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmMain = class(TForm)
Label1: TLabel;
edt_a: TEdit;
btnXemKQ: TButton;
btnKetThuc: TButton;
Label2: TLabel;
memKQ: TMemo;
procedure btnXemKQClick(Sender: TObject);
procedure btnKetThucClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
procedure TfrmMain.btnXemKQClick(Sender: TObject);
var k:integer;
s, a:extended;
begin
memKQ.Lines.Clear;
a:=StrToFloat(edt_a.Text);

Trang 162

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 6: Cc lnh c cu trc


k:=0; s:=1;
repeat
s:=s*4;
k:=k+1;
until s >= a;
memKQ.Lines.Add('Gia tri k tim duoc la: ' + IntToStr(k-1));
memKQ.Lines.Add('Tong S= ' + FloatToStr(s/4));
end;
Procedure TfrmMain.btnKetThucClick(Sender: TObject);
begin
Close;
end;
end.

- Lu d n vo th mc S:\ViduRepeat
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 26:

Chy chng trnh tm k ln nht

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 163

Chng 7: Chng trnh con

CHNG 7: CHNG TRNH CON


I. Khi nim
Khi lp trnh, chng ta thng c nhng on chng trnh hay php tnh lp i lp
li nhiu ln cho mt cng vic/nhim v no . Nu mi ln lp li, ta phi vit nhng
on lnh ging nhau ny lp i lp li nhiu ln, th chng trnh ca chng ta tr nn di
dng khng cn thit. khc phc iu ny, ta s dng chc nng chc nng sn c trong
Delphi l chng trnh con hay cn gi l thng trnh con (Routines).
Chng trnh con thng c vit di dng th tc (procedure) v hm
(function). Bn trong thn mi chng trnh con u cha mt dy cc cu lnh lm
nhim v cho chng trnh con . Nh vy, sau khi xy dng xong chng trnh con
th khi bn mun thi hnh cng vic m chng trnh con m nhn, bn ch cn gi
n n bt k ni no, v s ln gi ty t bn trong chng trnh thng qua tn ca
chng trnh con .
im khc bit nht gia hm v th tc l: Hm lun lun tr v duy nht mt gi
tr khi n thi hnh xong, cn th tc th khng tr v gi tr no c. Nh vy, hm c
xem nh l mt phn ca mt biu thc cn th tc th khng.
V d 1: Trong Delphi, nu ta s dng lnh:
ShowMessage(Day la mot thu tuc.); th bn thy cu lnh ny ch lm nhim v in
ln mn hnh cu thng bo Day la mot thu tuc. m khng c gi tr no tr v c.
V cu lnh x := 10 + Sin(Pi/2); th bn bit Sin(Pi/2) chnh l mt hm v n tr
v gi tr l 1 v nh vy, n c th tham gia vo biu thc cng trn.
Bn cng cn ch phn bit chng trnh con khc vi cc th tc s kin m bn
c hc cc chng trc, nhiu nht l chng 5. Chng trnh con l chng
trnh do bn t khai bo n v t vit cc lnh trong thn ca n. Cn vic khai bo th tc
s kin th s c Delphi t ng sinh ra tng ng vi mt s kin c th m bn
chn cho lp/thnh phn no , cn cc cu lnh trong thn ca n th bn mi cn vit
m thi.
V tr t cc chng trnh con l trong phn ci t ca unit, ngha l ngay sau
t kha implementation ca unit.
Khi cp n chng trnh con, bn cn phi bit v cc loi bin c s dng
bn trong chng trnh v bn trong chng trnh con l khc nhau:
Bin ton cc (Global variable): Cn c gi l bin chung, l bin c khai
bo u chng trnh ca unit form (form file), n c s dng bn trong tp tin d n
(Project file) v c bn trong chng trnh con ca unit file . Bin ton cc s tn ti
trong sut qu trnh thc hin chng trnh.
Bin cc b (Local variable): Cn c gi l bin ring, l bin c khai bo
u chng trnh con, v n ch c s dng bn trong thn chng trnh con hoc bn
trong thn chng trnh con khc nm bn trong n (cc chng trnh con lng nhau).
Bin cc b ch tn ti khi chng trnh con ang hot ng, ngha l bin cc b s c
cp pht b nh khi chng trnh con c gi thi hnh, v n s c gii phng ngay
sau khi chng trnh con kt thc.

Trang 164

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


Tham s hnh thc (Formal parameter) l bin c khai bo ngay sau tn
chng trnh con, n dng nhn gi tr ca tham s thc truyn n. Tham s hnh thc
cng l mt bin cc b, ta c th xem n nh l cc i s ca hm Ton hc. N c
s dng trong qu trnh xy dng chng trnh con. Trong Delphi c nhiu loi tham s
nh: tham s tr (Value parameter), tham s bin (Variable parameter), tham s hng
(Constant parameter), tham s xut (Out parameter). ngha v cch vn dng cc loi
tham s ny nh th no s c trnh by k phn Truyn tham s mc sau.
Tham s thc (Actual parameter) l tham s m n c th l bin ton cc, biu
thc hoc gi tr s v cng c th l bin cc b khi s dng chng trnh con lng nhau.
N c s dng khi bn mun truyn gi tr ca tham s thc cho tham s hnh thc
tng ng ca chng trnh con khi ra lnh li gi chng trnh con.
V d 2: Trong Delphi xy dng sn hm sin(x). Cn khi s dng hm, bn phi
c th l tnh sin ca x l bao nhiu, chng hn x =/2. Trong Delphi ta c
hm sin(pi/2). Nh vy, x l tham s hnh thc, cn pi/2 l tham s thc
ngha l gi tr thc s m bn cn tnh.
* Li gi chng trnh con (th tc v hm):
chng trnh con c thi hnh, ta phi c li gi n chng trnh con, li gi
chng trnh con thng qua tn chng trnh con v danh sch cc tham s thc tng ng
(nu c). Cc qui tc ca li gi chng trnh con:
Trong thn chng trnh chnh hoc thn chng trnh con, ta ch c th gi ti
cc chng trnh con trc thuc n.
Trong chng trnh con, ta c th gi cc chng trnh con ngang cp c
thit lp trc .

II. Hm
function Tn_hm[(danh_sch_tham_s_hnh_thc)]: kiu_tr_v; [cc_ch_dn;]
[Khai_bo_cc_b]
begin
// Cc cu lnh trong thn ca function.
end;

Trong :
- Tn_hm c t tn theo ng quy cch ca danh hiu t t trong Delphi.
- Kiu_tr_v l mt kiu v hng, biu din kiu ca gi tr tr v ca hm.
- Cc_ch_dn (directives) l cc ch th v quy c gi hm nh register, pascal,
cdecl, stdcall, v safecall; hoc ch th khai bo trc forward; hoc khai bo ngoi
external,... Do s gii hn ca ca gio trnh, nn phn ny khng c trnh by y.
Nu cc bn no mun tm hiu thm, cc bn hy truy cp vo trang web ca Delphi l
http://delphi.about.com/ hoc xem phn help ca b Delphi.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 165

Chng 7: Chng trnh con


- Mt hm c th c 1 hay nhiu tham s hnh thc, khi c nhiu tham s hnh thc
cng mt kiu gi tr th ta c th vit chng cch nhau bng du phy (,). Trng hp cc
tham s hnh thc khc kiu th ta vit chng cch nhau bng du chm phy (;).
V d 3: function Tinh_tong (x, y: integer; z:extended): extended;
- tm c gi tr kt qu ca hm cn tr v, thng cn phi thng qua nhiu
bc trung gian t n kt qu cui cng. Do vy, chng ta thng s dng 1 bin cc
b cha kt qu trung gian ny v c gi l bin trung gian. Kiu ca bin trung
gian ny phi tng thch hoc chnh xc vi kiu tr v ca hm. Sau khi tnh c kt
qu ny xong, bn cn phi gn kt qu tnh c trong bin trung gian ny cho tn hm
hoc bn c th s dng bin c nh ngha sn trong Delphi l result nhn kt qu
tr v ca hm. Bn ch rng, kiu ca bin result lun lun tng thch vi kt qu tr
v ca hm.
Lu : V tr vit cc chng trnh con (hm hoc th tc) l sau t kha
implementation v {$R *.dfm}
V d 4: Hm tnh xn c tnh bng cch s dng bin nh sn result
function So_mu(x: single; n: integer): single;
var
i: integer;
begin
result := 1.0;
i := n;
while i > 0 do
begin
if odd(i) then
result := result * x;
i := i div 2;
x := sqr(x);
end;
end;
- Khi khai bo kiu d liu cho cc tham s hnh thc l kiu string m c di
xc nh trc hay kiu array trong th tc v hm, ta phi s dng cch khai bo gin
tip (thng qua t kha type) nh sau:
V d 5: function So_sanh(hten1, hten2: string[40]): boolean; //sai c php.
procedure In_mang(a: array[1..10] of integer);

//sai c php.

Ta c th sa li nh trong v d sau:
Trang 166

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


V d 6: S dng cch khai bo gin tip sa
type
Str40 = string[40];
Arr10 = array[1..10] of integer;
function So_sanh(hten1, hten2: Str40): boolean;

//ng c php.

procedure In_mang(a: Arr10);

//ng c php.

Hoc s dng mng ng khai bo nh sau:


procedure In_mang(a: array of integer);
-

//ng c php.

Khi nim thm cho v d ny:


Cu lnh bt li lc chng trnh ang chy (run-time):
try
cc cu lnh;
except

// c pht sinh li

// Delphi thng bo li, hoc bn c th a ra thng bo li ca ring mnh.


on E: Exception do ErrorDialog(E.Message, E.HelpContext);
end;
Ch : Bn chn chc nng Tools/Debugger Options/Language Exceptions v b
chn (clear) hp kim Stop on Delphi Exceptions Delphi bt li.

Hnh 74: Hp thoi Debugger Options

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 167

Chng 7: Chng trnh con


V d 7: Vit chng trnh tnh giai tha bng chng trnh con:
- To mt d n mi File/New/Application
- Thit lp cc thuc tnh ca form nh sau:
Thuc tnh

Gi tr

Name

frmGiaiThua

Caption

Vi du ve ham Function

Position

poScreenCenter
Bng 1:

Thit lp thuc tnh cho Form

- t cc i tng ln form v thit lp cc thuc tnh nh sau:


i tng
Lable
Edit
Button 1
Button 2
Bng 2:

Thuc tnh

Gi tr

Name

lblKetqua

Caption

Ket qua n!

Name

edt_Kq

Text

Rng

Name

btnNhap

Caption

&Nhap n

Name

btnKetThuc

Caption

&Ket thuc

Thit lp thuc tnh cho cc i tng

- v d ny, gio trnh mun trnh by vi bn cch s dng bin chung: khai
bo mt bin chung c tn bin l num_str v kiu l string th t ca s thit k form,
bn nhn phm chc nng F12 chuyn sang ca s m lnh. Bn chuyn con nhy ln
pha u unit v ngay sau phn khai bo bin bin chung l:
var
frmGiaiThua: TfrmGiaiThua;

bn thm vo 1 bin chung num_str nh sau: num_str: string;


Hoc bn c th s dng cch c trnh by phn hp kim (TCheckbox)
thm bin num_str.
Sau khi hon thnh, phn khai bo ca bn s nh sau:
var
frmGiaiThua: TfrmGiaiThua;
num_str: string;

//bin chung

implementation
{$R *.dfm}

Trang 168

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


- Ngay sau t kha implementation v {$R *.dfm} l phn bn nhp cc
chng trnh con, bn nhp vo hm Giai_thua nh sau:
function Giai_thua(n:integer):extended; //n l tham s hnh thc
var i: integer;

kqtg: extended;

// bin ring

begin
kqtg :=

1;

if n <= 0

//khi to bin trung gian

then Giai_thua := 1

else
begin
for i := 1 to n do kqtg := kqtg * i ; //kt qu trung gian
Giai_thua

:=

kqtg; //gn gi tr ca kqtg cho tn hm

end ;
end;

- Tip theo, bn ln lt nhp vo cc cu lnh cho cc th tc s kin.


- Chng trnh hon chnh s c on m lnh nh sau:
unit untGiaithua;
interface
uses
Windows, Messages, SysUtils, Variants,
Controls, Forms, Dialogs, StdCtrls;

Classes,

Graphics,

type
TfrmGiaiThua = class(TForm)
edt_Kq: TEdit;
lblKetqua: TLabel;
btnKetThuc: TButton;
btnNhap: TButton;
procedure btnKetThucClick(Sender: TObject);
procedure btnNhapClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmGiaiThua: TfrmGiaiThua;
num_str:string;
//bien chung
implementation
{$R *.dfm}
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 169

Chng 7: Chng trnh con


//--------Phn bt u vit cc chng trnh con (nu c)----function Giai_thua(n: integer): extended;
var i:integer; kqtg:extended;
//bien rieng
begin
kqtg := 1;
if n <= 0 then Giai_thua := 1
else
begin
for i := 1 to n do kqtg := kqtg * i ;
Giai_thua := kqtg;
end ;
end;
//---------cc th tc s kin ----procedure TfrmGiaiThua.btnKetThucClick(Sender: TObject);
begin
Close;
end;
procedure TfrmGiaiThua.btnNhapClick(Sender: TObject);
var num:integer;
begin
edt_Kq.Clear;
try
num_str:= InputBox('Nhap du lieu', 'Nhap n= ','15');
num := StrToInt( num_str);
if num>=0 then
begin
lblKetqua.Caption:= 'Ket qua ' +
num_str + '! la:';
edt_Kq.Text:=FormatFloat('#,##0',Giai_thua(num));
end
else ShowMessage('Khong tinh giai thua cua so am.');
except
ShowMessage('Gia tri "' + num_str + '" khong hop le de tinh
giai thua.');
end; // end try
end;
end.

* Ch : Bn c th thay cu lnh try ... except ... end; bng cu lnh TryStrToInt
nh cc v d trnh by phn trn.

Trang 170

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


- Lu d n vo th mc S:\ViduGiaiThua
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 1: Kt qu tnh n!
Nu bn nhp lm gi tr l n= 2o, th chng trnh s bt li v thng bo cho bn nh
sau:

Hnh 2: Li nhp sai kiu d liu


Hoc bn nhp vo gi tr l n= 7, th chng trnh cng s thng bo cho bn bit:

Hnh 3: Li nhp sai gi tr m


T v d trn, bn thy bin num_string c khai bo lm bin chung, vy theo
bn c th khai bo n lm bin ring trong th tc s kin procedure
TfrmMain.btnNhapClick(Sender: TObject); c khng? Cu tr li l c. Ty theo
yu cu/ ngha ca chng trnh m bn quyt nh s dng cch khai bo l chung hay
ring cho hp l.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 171

Chng 7: Chng trnh con


III. Th tc
Procedure Tn_th_tc[(Danh_sch_tham_s_hnh_thc)]; [Cc_ch_dn;]
[Khai_bo_cc_b]
begin
// Cc cu lnh trong thn ca procedure.
end;

Cc khi nim nh tn th tc, tham s hnh thc, cc ch dn th ging nh phn


trnh by function.
V d 8: Vit chng trnh hin th cu cho ti anh/ch bt k bng th tc, vi h
tn c nhp t bn phm.
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 4: Tn cc i tng v giao din chng trnh


- on code ca chng trnh nh sau:
unit untLoiChao;

//Li cho

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmLoiChao = class(TForm)
btnNhap: TButton;
procedure btnNhapClick(Sender: TObject);

Trang 172

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


private
{ Private declarations }
public
{ Public declarations }
end;
var
frmLoiChao: TfrmLoiChao;
implementation
{$R *.dfm}
//--------- Phn th tc ---------------procedure Loi_chao(hten:string);
begin
ShowMessage('Hi! chao ban '+hten+'. Chuc ban mot ngay vui ve!');
end;
//--------- Phn th tc s kin -------procedure TfrmLoiChao.btnNhapClick(Sender: TObject);
var hoten:string;
//bien rieng
begin
hoten:=InputBox('Nhap du lieu','Ten ban ten la gi? ','');
Loi_chao(hoten);
//loi goi thu tuc
hoten:=InputBox('Hop nhap','Hay nhap ten ma ban yeu thich:','');
Loi_chao(hoten);
//loi goi thu tuc
end;
end.

- Lu d n vo th mc S:\ViduLoiChao
- Bin dch v chy chng trnh, ta c kt qu nh sau:
Ban u, chng trnh s ngh bn nhp h tn ca bn vo, nh V Phm Minh
Chu chng hn:

Hnh 5: Chng trnh v d v th tc- nhp tn ln mt


B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 173

Chng 7: Chng trnh con


tip n, chng trnh s gi th tc Loi_chao(hoten) in ra cu cho nh sau:

Hnh 6: Li cho cho ln gi th tc th nht


Khi bn Click vo nt lnh OK, th chng trnh s cho bn nhp thm h tn mi,
chng hn nh Thy An, tip n chng trnh s gi li th tc Loi_chao(hoten) in
ra li cho tip theo:

Hnh 7: Nhp tn ln hai

Hnh 8: Li cho cho ln gi th tc th hai


Nh vy, th tc Loi_chao(hoten) c gi 2 ln trong chng trnh v nh th
bn thy chng trnh s sng sa v r rng hn.

Trang 174

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


IV. Truyn tham s
Trong Delphi c nhiu cch truyn tham s nh: tham s tr (value), tham s bin
(variable), tham s hng (constant), tham s xut (out). ng vi mi loi truyn tham s,
m chng c ngha khc nhau khi truyn t tham s thc n tham s hnh thc.

IV.1. nh kiu v khng nh kiu cho tham s hnh thc


Ta c 2 khi nim v nh kiu d liu cho cc tham s hnh thc l: tham s
nh kiu (typed parametter) v tham s khng nh kiu (untyped parametter). Tham s
nh kiu l tham s khi ta khai bo phi ch r kiu d liu cho n, cn tham s khng
nh kiu th khng cn phi ch ra trc kiu ca n v nh vy tham s khng nh kiu
c th tng thch vi bt k kiu d liu ca tham s thc khi truyn n. Vi cch khai
bo tham s khng nh kiu, nu ta s dng gi tr ca cc tham s ny, th trc ht ta
phi chuyn i kiu (typecast) cho chng trc.
V d 9: Vit th tc Cong2So vi 2 tham s a, b l khng nh kiu:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 9: Tn cc i tng v giao din chng trnh


- on code ca chng trnh nh sau:
unit untKhongDinhKieu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmVidu = class(TForm)
btnNhap: TButton;
procedure btnNhapClick(Sender: TObject);
private

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 175

Chng 7: Chng trnh con


{ Private declarations }
public
{ Public declarations }
end;
var
frmVidu: TfrmVidu;
implementation
{$R *.dfm}
procedure Cong2So(const a,b; chon:char);
var kq:Extended;
begin
case chon of
'1': begin
kq:= Integer(a) + Extended(b);
//chuyen
ShowMessage('Truong hop '+ chon+': Tong 2
FloatToStr(kq));
end;
'2': begin
kq:= Extended(a) + Integer(b);
//chuyen
ShowMessage('Truong hop '+ chon+': Tong 2
FloatToStr(kq));
end;
end;
end;

kieu - casting
so = '+

kieu - casting
so = '+

procedure TfrmVidu.btnNhapClick(Sender: TObject);


var x1:integer; x2:extended;
begin
x1:= -5; x2:=130.5;
Cong2So(x1,x2,'1'); { Truyn x1 kiu integer cho tham s hnh thc a,

truyn x2 kiu extended cho tham s hnh thc b. }


x1:=10;x2:=15.5;
Cong2So(x2,x1,'2'); { Truyn x2 kiu extended cho tham s hnh thc a,

truyn x1 kiu integer cho tham s hnh thc b. }


end;
end.

- Lu d n vo th mc S:\ViduKhongDinhKieu
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Trang 176

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con

Hnh 10: Kt qu chng trnh.


Khi chy chng trnh, ta c kt qu bng 125.5 v 25.5. Nh vy, t 2 trng hp
trn ta nhn thy: tham s a cng nh tham s b u c th nhn c 2 kiu d liu
Integer v extended.

IV.2. Truyn bng tham tr (Value parameter)


- C php: Khng c t kha no ng trc tham s hnh thc.
- ngha: Khng lm thay i gi tr ca tham s thc khi gi tr ca tham tr thay
i.
- Tham s thc: c th l mt bin, mt biu thc, mt hng, hoc mt gi tr s bt
k m c kiu tng thch vi kiu ca tham tr.
- Lu : Bt buc s dng tham s hnh thc nh kiu (typed)
V d 10: Chng trnh tnh lp phng bng tham tr
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 11: Tn cc i tng v giao din chng trnh

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 177

Chng 7: Chng trnh con


- on code ca chng trnh c s dng tham s tr nh sau:
unit untThamTri;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmThamTri = class(TForm)
btnNhap: TButton;
Label1: TLabel;
procedure btnNhapClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmThamTri: TfrmThamTri;
implementation
{$R *.dfm}
procedure LapPhuong(a: integer);
//a la tham tri.
begin
a := a*a*a;
// tinh lap phuong
end;
procedure TfrmThamTri.btnNhapClick(Sender: TObject);
var x:integer;
begin
x := StrToInt(InputBox('Nhap du lieu', 'Nhap so x = ','2'));
LapPhuong(x); {tham so thuc x duoc truyen cho tham tri a}
ShowMessage('Lap phuong cua so vua nhap la ' +IntToStr(x));
end;
end.

- Lu d n vo th mc S:\ViduThamTri
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Trang 178

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con

Hnh 12: Kt qu tnh lp phng ca 2


- Khi chy chng trnh, chng hn bn nhp x = 2, bn c on c kt qu ca
chng trnh sau khi tnh lp phng ca 2 l bao nhiu khng?... x = 2 hay x = 8? Kt qu
tht bt ng: lp phng ca 2 vn bng 2. Suy ra chng trnh cho kt qu sai. V th
tc LapPhuong trn s dng cch truyn bng tham tr, do vy, mc d trong thn th
tc gi tr ca tham s a c gn gi tr 8, nhng x vn gi nguyn gi tr ca n l 2 m
khng thay i theo gi tr ca a.

IV.3. Truyn bng tham bin (Variable parameter)


- C php: C t kha Var ng trc tham s hnh thc.
- ngha: Lm thay i gi tr ca tham s thc khi gi tr ca tham s hnh thc
thay i.
- Tham s thc: ch c th l bin v c kiu tng thch vi kiu ca tham s hnh
thc.
- Lu : c th s dng cch tham s nh kiu hoc khng nh kiu.
V d 11: Chng trnh tnh lp phng bng tham bin:
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 13: Tn cc i tng v giao din chng trnh


B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 179

Chng 7: Chng trnh con


- on code ca chng trnh c s dng tham bin var nh sau:
unit untThamBien;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmThamBien = class(TForm)
btnNhap: TButton;
Label1: TLabel;
procedure btnNhapClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmThamBien: TfrmThamBien;
implementation
{$R *.dfm}
procedure LapPhuong(var a: integer); {a la tham bien}
begin
a := a*a*a;
// tinh lap phuong
end;
procedure TfrmThamBien.btnNhapClick(Sender: TObject);
var x:integer; //bien rieng
begin
x := StrToInt(InputBox('Nhap du lieu', 'Nhap so x = ','2'));
LapPhuong(x); {tham so thuc x duoc truyen cho tham bien a}
ShowMessage('Lap phuong cua so vua nhap la ' +IntToStr(x)) ;
end;
end.

- Lu d n vo th mc S:\ViduThamBien
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Trang 180

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con

Hnh 14: Kt qu chng trnh tnh lp phng x


- Khi chy chng trnh, chng hn bn nhp x = 2, th kt qu chng trnh tr v l
x = 8. Suy ra chng trnh cho kt qu ng. Do th tc LapPhuong trong chng trnh
pha trn s dng cch truyn bng tham bin, do vy bn trong thn th tc
LapPhuong, ca tham s a c gn gi tr 8, th gi tr ca x cng s thay i theo a v
nh vy x = 8.

IV.4. Truyn bng tham s hng (Constant parameter)


- C php: C t kha Const ng trc tham s hnh thc.
- ngha: Ging nh tnh cht ca tham tr, nhng bn khng th thay i gi tr
ca ca tham s hng trong thn chng trnh con c.
- Tham s thc: c th l mt bin, mt biu thc, mt hng, hoc mt gi tr s
bt k m c kiu tng thch vi kiu ca tham s hnh thc.
-

Lu : c th s dng cch tham s nh kiu hoc khng nh kiu.

V d 12: Trng hp sai khi thay i gi tr ca tham s hng a trong th tc


LapPhuong:
procedure LapPhuong(Const a:integer);

{a l mt tham s hng}

begin
a := a*a*a;

// li c php

end;
V d 13: Xy dng hm so snh chui, nu 2 chui bng nhau th hm tr v gi tr
0, chui th nht ln hn chui thi 2 th hm tr v 1, cn li hm tr v
gi tr -1
Hng dn:
- To d n mi: File/New/Application
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 181

Chng 7: Chng trnh con


- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 15: Tn cc i tng v giao din chng trnh


- on code ca chng trnh nh sau:
unit untThamSoHang;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmThamSoHang = class(TForm)
btnSoSanh: TButton;
Label1: TLabel;
edt_Chuoi1: TEdit;
edt_Chuoi2: TEdit;
Label2: TLabel;
Label3: TLabel;
procedure btnSoSanhClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmThamSoHang: TfrmThamSoHang;
implementation
{$R *.dfm}
function SoSanhChuoi(const chuoi1, chuoi2: string): shortint;
//chuoi1 va chuoi2 la 2 tham so hang.
begin
if chuoi1 = chuoi2 then result := 0 //bang nhau

Trang 182

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


else
if chuoi1 > chuoi2 then result :=1 //chuoi1 lon hon chuoi 2
else result := -1; //chuoi1 nho hon chuoi 2
end;
procedure TfrmThamSoHang.btnSoSanhClick(Sender: TObject);
var kq: shortint;
begin
kq := SoSanhChuoi(edt_Chuoi1.Text, edt_Chuoi2.Text);
case kq of
-1: ShowMessage(edt_Chuoi1.Text +' < '+edt_Chuoi2.Text);
0: ShowMessage(edt_Chuoi1.Text +' = '+edt_Chuoi2.Text);
1: ShowMessage(edt_Chuoi1.Text +' > '+edt_Chuoi2.Text);
end;
end;
end.

- Lu d n vo th mc S:\ViduThamSoHang
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 16: Chy chng trnh

Hnh 17: Kt qu so snh.


Ch : chuoi1 v chuoi2 khng c thay i gi tr ca n trong thn chng trnh
con So_sanh_chuoi v chng l nhng tham s hng.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 183

Chng 7: Chng trnh con

IV.5. Truyn bng tham s xut (Out parameter)


- C php: C t kha Out ng trc tham s hnh thc.
- ngha: Lm thay i gi tr ca tham s thc khi gi tr ca tham s xut thay
i. Tham s xut ny ch dng trong trng hp bn khng cn quan tm n gi tr
u vo ca tham s thc trc khi truyn n n m ch quan tm n kt qu u
ra.
- Tham s thc: ch c th l bin v c kiu tng thch vi kiu ca tham s hnh
thc.
- Lu : c th s dng cch tham s nh kiu hoc khng nh kiu.
V d 14: Chng trnh tnh lp phng bng tham s xut:
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 18: Tn cc i tng v giao din chng trnh


- on code ca chng trnh c s dng tham s out nh sau:
unit untThamSoXuat;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmThamSoXuat = class(TForm)
btnNhap: TButton;
Label1: TLabel;
procedure btnNhapClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Trang 184

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


var
frmThamSoXuat: TfrmThamSoXuat;
implementation
{$R *.dfm}
Procedure LapPhuong(a: integer; out kq:integer);
// a la tham tri, kq la tham so xuat
begin
kq := a*a*a;
// tinh lap phuong
end;
procedure TfrmThamSoXuat.btnNhapClick(Sender: TObject);
var x, kqlp:integer;
begin
x := StrToInt(InputBox('Nhap du lieu', 'Nhap so x = ','2'));
LapPhuong(x,kqlp); {tham so thuc x duoc truyen cho tham tri a
va tham so thuc kqlp duoc truyen cho tham so xuat kq}
ShowMessage('Lap phuong cua '+IntToStr(x)+' la: ' +
IntToStr(kqlp));
end;
end.

- Lu d n vo th mc S:\ViduThamSoXuat
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 19: Kt qu chng trnh


- Khi chy chng trnh, th bin kqlp s c truyn n cho tham s xut kq. V
khi kq thay i gi tr th kqlp s thay i theo. Do vy, nu bn nhp x = 2, th khi thc
hin th tc LapPhuong, tham s xut kq = 8 v suy ra bin kqlp cng bng 8.
V d 15: Vit chng trnh nhp vo s nguyn dng n.
Tnh tng
S = [f(1)]2/g(1) + [f(2)]2/g(2) + + [f(n)]2/g(n)
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 185

Chng 7: Chng trnh con


0

f(k) = 2 + 21 + 22 + + 2k
g(k) = 0! + 1! + 2! + + k!

Trong :

Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 20: Tn cc i tng v giao din chng trnh


on code ca chng trnh nh sau:
unit untTongS;

//tn unit file

interface
uses
Windows, Messages, SysUtils, Variants,
Controls, Forms, Dialogs, StdCtrls;

Classes,

Graphics,

type
TfrmTinhTong = class(TForm)
edt_n: TEdit;
Label1: TLabel;
btnTinh: TButton;
edt_KQ: TEdit;
Label3: TLabel;
procedure btnTinhClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmTinhTong: TfrmTinhTong;
implementation

Trang 186

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


{$R *.dfm}
function GT(n: integer): extended;
//hm giai tha ca n
var i:integer;
begin
result:=1;
for i:=1 to n do result:=result*i;
end;
function LT(a:extended; n: integer): extended; //hm a ly tha n
var i:integer;
begin
result:=1;
for i:=1 to n do result:=result*a;
end;
function g(k: integer): extended;
var i:integer;
begin
result:=0;
for i:=0 to k do result:=result+ GT(i);
end;
function f(k: integer): extended;
var i:integer;
begin
result:=0;
for i:=0 to k do result:=result+ LT(2,i);
end;
procedure TfrmTinhTong.btnTinhClick(Sender: TObject);
var i,n: integer;
S: extended;
begin
S := 0;
n := StrToInt(edt_n.Text);
for i := 1 to n do
S := S +
LT(f(i),i)/g(i);
edt_Kq.Text :='S= ' + FloatToStr(S);
end;
end.

- Lu d n vo th mc: S:\TongS
- Bin dch v chy chng trnh, ta c kt qu nh sau:

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 187

Chng 7: Chng trnh con

Hnh 21: Kt qu chng trnh


V d 16: Vit chng trnh tm s nguyn dng n ln nht sao cho tng S tha
biu thc: S= 1! + x2 + 3! + x4 ++ (n-1)! + xn <= V
Vi x>0, V>0 bt k c nhp t bn phm. In kt qu S v n tm c.
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 22: Tn cc i tng v giao din chng trnh


unit untTongCoDK;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmViDu = class(TForm)
edtX: TEdit;
Label1: TLabel;
edtV: TEdit;
Label2: TLabel;
btnTinh: TButton;
edtKQ: TEdit;
Trang 188

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


Label3: TLabel;
procedure btnTinhClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmViDu: TfrmViDu;
implementation
{$R *.dfm}
function GT(n: integer): extended;
var i:integer;
begin
result:=1;
for i:=1 to n do result:=result*i;
end;

// Hm n!

function LT(a:extended; n: integer): extended;


var i:integer;
begin
result:=1;
for i:=1 to n do result:=result*a;
end;

// Hm an

procedure TfrmViDu.btnTinhClick(Sender: TObject);


var n:integer;
S, x, V: extended;
begin
if TryStrToFloat(edtX.Text,x) and (x>0) and
TryStrToFloat(edtV.Text,V) and (V>=1) then
begin
n:=0; S:=0;
while S <= V do
begin
inc(n);
if odd(n) then s := s + GT(n)
else s := s + LT(x,n);
end;
if odd(n) then S:= S-GT(n)
else S := S - LT(x,n);
n:= n-1;
edtKQ.Text :='Gia tri n= ' + IntToStr(n) + '; S = ' +
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 189

Chng 7: Chng trnh con


FloatToStr(S);
end
else ShowMessage('Du lieu nhap khong thoa');
end;
end.

- Lu d n vo th mc: S:\TongCoDK
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 23: Kt qu chng trnh

V. Chng trnh con quy


Mt chng trnh con m trong qu trnh thit lp, n s gi chnh bn thn n th
chng trnh con c tnh qui (recursion).
quy s dng cu trc d liu ngn xp (Stack) c tnh cht l vo trc- ra sau
trong qu trnh quy.
V d 17: Vit chng trnh tnh giai tha theo cch quy.
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 24: Tn cc i tng v giao din chng trnh


Trang 190

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


- on code ca chng trnh tnh giai tha bng phng php quy nh sau:
unit untGT_DeQuy;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmGT_DeQuy = class(TForm)
edt_n: TEdit;
lbl_n: TLabel;
edt_KQ: TEdit;
lblKQ: TLabel;
btnTinh: TButton;
btnKetThuc: TButton;
procedure btnTinhClick(Sender: TObject);
procedure btnKetThucClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmGT_DeQuy: TfrmGT_DeQuy;
implementation
{$R *.dfm}
function Giaithua(n: integer): extended;
begin
if n=0 then
Giaithua:=1
// truong hop neo
else
Giaithua:=n*Giaithua(n-1);
// de quy
end;
procedure TfrmGT_DeQuy.btnTinhClick(Sender: TObject);
var num:integer;
begin
try
num := StrToInt(edt_n.Text);
if num>=0 then
begin
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 191

Chng 7: Chng trnh con


lblKq.Caption:=edt_n.Text+'!=';
edt_KQ.Text:= FormatFloat('#,##0',Giaithua(num));
end
else
begin
ShowMessage('Khong tinh giai thua cua so am.');
edt_n.Clear;
edt_KQ.Clear;
edt_n.SetFocus;
end;
except
begin
ShowMessage('Gia tri ' + edt_n.Text + ' khong hop le.');
edt_n.Clear;
edt_Kq.Clear;
edt_n.SetFocus;
end;
end;
end;
procedure TfrmGT_DeQuy.btnKetThucClick(Sender: TObject);
begin
Close;
end;
end.

- Lu d n vo th mc S:\ViduDeQuy
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 25: Chng trnh quy n!


- S minh ha tnh quy v tnh kt qu ca hm quy Giaithua nh sau:

Trang 192

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 7: Chng trnh con


Gi s ta nhp n = 3, th chng trnh s gi hm quy Giaithua(3) v ta c s
nh sau:

3*2 = 6
Giaithua(3)
2*1=2
3*Giaithua(2)
1*1=1
2*Giaithua(1)
1
1*Giaithua(0)

Hnh 26: S quy ca hm Giaithua(3)

Ch :
- u im ca thut ton quy l ngn gn. N c kh nng nh ngha mt tp
hp rt ln cc i tng bng mt s cc cu lnh hu hn. Thut ton quy c v thch
hp cho cc bi ton m t thn cu trc d liu ca n c nh ngha theo li
quy.
- C mt s thut ton quy s dng cho cc bi ton n gin c th c thay
th bng mt thut ton khc khng t gi chng, s thay th c gi l kh quy.
- Trong mt s bi ton ta c th gii theo 2 cch: thut ton khng quy v thut
ton quy. Thng thng, cch gii theo thut ton khng quy th tt hn so vi thut
ton quy v quy i hi thm b nh v thi gian. Khi cc thanh ghi c s dng
cho lu tr v khi quay tr v phi khi phc li trng thi c trong mi ln gi n
chng trnh con. Mc phc tp c th gia tng khi trong chng trnh con theo thut
ton quy c cha nhng chng trnh con khc. V vy, khi dng quy ta cn thn
trng, nht l thut ton ny thng khng cho ta thy r trc tip ton b qu trnh gii
cc bc. Ni chung, ch khi no khng th dng thut ton lp ta mi nn s dng thut
ton quy.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 193

Chng 8: Kiu Lit k, Min con, Tp hp

CHNG 8: KIU LIT K, MIN CON, TP HP


I. Kiu v hng lit k (Enumerated scalar type)

I.1. Khi nim


Kiu lit k l kiu nh ngha mt tp hp hu hn c th t ca cc phn t n
gin bng cch lit k danh sch cc gi tr nm trong cp du ngoc n.

I.2. Cch khai bo: C hai cch khai bo l gin tip v trc tip
I.2.1. Khai bo gin tip
S dng t kha type nh ngha ra kiu d liu mi, ri khai bo bin thng qua
kiu d liu mi va nh ngha ra.
type
Tn_kiu_lit_k = (danh_sch_gi_tr_lit_k);
var
danh_sch_bin: tn_kiu_lit_k;
V d 1:

Khai bo gin tip

type
Days = (Sun, Mon, Tue, Wed, Thu, Fri, Sat) ;
Colors = (Red, Yellow, Green, White, Blue, Black);
var
Ngay : Days;
Mauve: Colors;
Vi cc khai bo trn chng ta c nh ngha hai kiu lit k c tn l Days v
Colors. Kiu lit k Days cha 7 phn t c gi tr c lit k nh trn. Sau chng ta
khai bo bin Ngay c kiu l kiu lit k Days.
I.2.2. Khai bo trc tip
Kiu d liu ca bin c khai bo trc tip sau tn bin.
var
danh_sch_bin: (danh_sch_gi_tr_lit_k);

V d 2:

Khai bo trc tip

var
Ngay : (Sun, Mon, Tue, Wed, Thu, Fri, Sat);
Mauve : (Red, Yellow, Green, White, Blue, Black);
Ta c th gn cho bin cc gi tr ca kiu tng ng:
Trang 194

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 8: Kiu Lit k, Min con, Tp hp


Ngay := Mon;
MauVe := Red;
Bin theo nh ngha ca kiu no ch nhn gi tr ca kiu m thi.
Theo khai bo nh v d trn, ta khng th c MauVe := Mon;
Kiu v hng lit k l mt kiu m c.
Theo nh ngha kiu v hng lit k, th t danh sch gi tr lit k c ngm
nh s tng tuyn tnh bt u t s 0 tr i theo th t t tri sang phi. Nh vy, v d
trn: Sun < Mon < Tue < Wed .... v Red < Yellow < Green ...

I.3. Mt s hm chun p dng cho kiu v hng


* Hm th t Ord (x)
Hm ny tr v th t ca gi tr x trong kiu v hng lit k.
V d 3:

Theo v d trn, ta c:
Ord (Sun) = 0

l ng v Sun c th t l 0

Ord (Mon) = 1

l ng v Mon c th t l 1

Ord (Green) = 3

l sai v Green c th t l 2

Ord (n) = n

trong n l mt gi tr kiu Longint

* Hm Pred (x)
Hm ny tr v gi tr ng trc x ca kiu v hng lit k.
V d 4:

Theo v d trn, ta c:
Pred (Mon)

= Sun

Pred (Green)

= Yellow

Pred (n)

=n-1

* Hm Succ (x)
Hm ny cho gi tr ng sau x trong nh ngha kiu ca x.
V d 5:

Theo v d trn, ta c:
Succ (Mon)

= Tue

Succ (Green) = White


Succ (n)

= n+1

* Hm chuyn mt s nguyn thnh mt gi tr v hng


Tn hm ny chnh l tn kiu v hng m ta khai bo trc.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 195

Chng 8: Kiu Lit k, Min con, Tp hp


V d 6:

Theo v d trn, ta c:
Days(2)

= Tue

Colors(3)

= White

Longint (n)

= n

II. Kiu min con (Subrange types)

II.1. Khi nim


Khi khai bo mt s trng hp, v d tui th ca ngi nu ta khai bo:
var
TuoiTho: Integer ; //Integer c min xc nh -2147483648..2147483647
th s tn nh v Integer c kch thc 4. Lm nh vy s khng cn thit v tui
con ngi ch trong khong t 0 n 150.
Trong Delphi cho php ta xc nh mt bin ly gi tr trong mt khong no
c gii hn mt hng cn di (Low) v mt hng cn trn (Hight). Hai gi tr ny
phi cng mt kiu v hng m c v hng cn trn c gi tr ln hn hng cn di.
Khai bo nh vy gi l khai bo kiu min con (Subrange type). Hay ni mt cch khc
kiu min con chnh l mt nh ngha thu hp ca cc kiu c th t khc. Trong lc chy
chng trnh, ta c th kim tra gi tr ca bin khng c vt ra khi min gi tr ca
min con.

II.2. Cch khai bo


II.2.1. Khai bo gin tip
type
tn_kiu_min_con = hng_cn_di .. hng_cn_trn;
var
danh _sch_bin: Tn_kiu_min_con;
V d 7:

Khai bo gin tip

type
TuoiTho = 0 .. 150;
GioiTinh = 0..1;

// n = 0, nam =1

var
tuoi: TuoiTho;
phai: GioiTinh;

Trang 196

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 8: Kiu Lit k, Min con, Tp hp


II.2.2. Khai bo trc tip
var
danh_sch_bin: hng_cn_di .. hng_cn_trn;

V d 8:

Khai bo trc tip

var
tuoi : 0 .. 150;
phai: 0..1;

// n = 0, nam =1

III. Kiu tp hp (Set)

III.1. Khi nim


Kiu tp hp l mt tp cc gi tr cng kiu m cc v c gi l cc phn t
ca tp hp. S phn t ti a trong mt tp hp l 256, bao gm c tp hp rng. Khi
nim tp hp trong Delphi tng t nh khi nim tp hp trong Ton hc.

III.2. Cch khai bo


III.2.1. Khai bo gin tip
type
tn_kiu_tp_hp = Set of kiu_c_bn;
var
danh_sch_bin : Tn_kiu_tp_hp;

V d 9:

Khai bo gin tip

type
Day100 = 1..100; //nh ngha mt dy con dng lm kiu c bn
TapSoNguyen = Set of Day100;
var
TapHop1, TapHop2: TapSoNguyen;
III.2.2. Khai bo trc tip
var
danh_sch_bin : Set of kiu_c_bn;

V d 10: Khai bo trc tip


var
TapHop1, TapHop2 : Set of 0..250;

// khai bo ng

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 197

Chng 8: Kiu Lit k, Min con, Tp hp


Chu : Set of char;

// khai bo ng

So

: Set of 0 .. 9;

// khai bo ng

: Set of integer;

// sai, v vt qu gii hn ti a 256 phn t

: Set of real;

// sai, do kiu d liu khng ri rc/m c

III.3. M t tp hp
Mt tp hp c m t bng cch lit k cc phn t ca tp hp, chng cch nhau
bng mt du phy (,) v c t gia hai du mc vung [ ], cc phn t c th l hng,
bin hoc biu thc.
V d 11: Cc v d tp hp trong Delphi
[]

// tp hp rng, khng c cc phn t

[5 .. 15]

// tp hp cc ch s nguyn t 5 n 15

[1, 3, 5]

// tp hp 3 s 1, 3 v 5

[i, i + j*2, 4, 5]

{tp hp cc bin nguyn gm s 4, 5 v


cc s nhn t i, i +j*2 vi i, j l 2 bin byte}

III.4. Mt s php ton trn kiu tp hp


III.4.1. Php gn
Ta c th gn gi tr cc tp c m t vo cc bin tp cng kiu. Ring tp hp
rng c th gn cho mi bin kiu tp hp khc nhau.
V d 12: Cc php gn tp hp
So:=[];

// tp rng

TapHop1 := [0,1,3,5,7,9];
TapHop2 := [0,2,4,6,8,9];
TapNguyenAm:=['A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u']; // tp cc nguyn m
III.4.2. Php hp
Hp ca 2 tp hp A v B l mt tp hp cha tt c cc phn t ca tp A hoc B
hoc c A v B.
K hiu ca php hp l du cng (+). Php hp c tnh giao hon:
A + B = B+A
Ta c th m t php hp qua hnh nh sau :

Hnh 1:
Trang 198

Hp 2 tp

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 8: Kiu Lit k, Min con, Tp hp


V d 13: Hp ca 2 tp
A := [0,1,3,5,7,9];
B := [0,2,4,6,8,9];
C := A + B;

// C = [0,1,2,3,4,5,6,7,8,9]

III.4.3. Php giao


Giao ca 2 tp hp A v B l mt tp cha cc phn t ca c A v c B.
K hiu A * B. Php giao cng c tnh giao hon, ngha l A * B = B * A
Minh ha nh sau:

Hnh 2:

Giao 2 tp

V d 14: Giao ca 2 tp.


Vi tp hp A = [0,1,3,5,7,9] v tp B= [0,2,4,6,8,9]:
D := A * B ; // tp D = [0,9]
III.4.4. Php hiu
Hiu ca 2 tp hp A v B, k hiu l A - B, l mt tp hp cha cc phn t ch
thuc A m khng thuc B.

Lu : A - B th khc B - A.
V d 15: Hiu ca 2 tp:
A := [3 .. 7] ;
B := [1.. 6, 10, 15] ;
Th: A - B = [7], cn B A = [1, 2, 10, 15]
III.4.5. Php thuc IN
Php thuc in cho php th (kim tra) xem mt gi tr no thuc v mt tp hay
khng? Php thuc in cho kt qu c kiu boolean. Nu ng th n s cho kt qu l true,
ngc li l false.
V d 16: Php ton thuc
var
Kytu : char;
NguyenAm : Set of char;
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 199

Chng 8: Kiu Lit k, Min con, Tp hp


Sau ta gn:
Kytu := 'a';
NguyenAm:= ['A', 'E', 'I', 'U','O','a', 'e', 'i', 'u','o'];
Th php ton: Kytu in NguyenAm s cho kt qu l true
III.4.6. Cc php so snh =, <>, <=, v >=
Mun so snh hai tp hp vi nhau th chng phi c cng kiu c bn. Kt qu ca
cc php so snh l gi tr kiu Boolean, tc l True hoc False.
Hai tp hp A v B gi l bng nhau (A = B) ch khi chng c cc phn t ging vi
nhau tng i mt (khng k th t sp xp cc phn t trong hai tp). Ngc li ca php
so snh bng nhau (=) l php so snh khc nhau (<>). Ngha l, nu A = B l True th A
<> B s l False v ngc li.
Php so snh nh hn hoc bng (<=) ca A <= B s cho kt qu l True nu mi
phn t c trong A u c trong B. nh ngha ny cng tng t nh ln hn hoc bng.
Vi A >= B th mi phn t ca B u c trong A, kt qu ny True, ngc li l False.
Ch : Trong Dephi khng c php so snh nh hn (<) v ln hn (>). kim tra
xem tp A c thc s nm trong tp B hay khng (A nh hn B), ta phi s dng thm cc
php logic nh sau:
if (a <> b) and (a <= b) then ShowMessage('a < b') ;

tap1 := [' a ' ];

tap1 <> tap 2

tap1 < tap 2


tap 2 := [' a '..' c ' ]; tap1 <= tap 2
V d 17: Nhp cc phn t kiu nguyn thuc min gi tr t 0 n 100 cho tp A v
tp B. Nu nhp phn t trng ( tn ti) th khng thm vo tp hp v thng bo
cho bit c. Hy cho bit kt qu ca cc php ton trn tp hp.
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Trang 200

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 8: Kiu Lit k, Min con, Tp hp

Hnh 3:

Tn cc i tng v giao din chng trnh

- on code ca chng trnh nh sau:


unit untTapHop;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmTapHop = class(TForm)
edtNew: TEdit;
Label1: TLabel;
btnTapHopA: TButton;
btnTapHopB: TButton;
Label4: TLabel;
lbxTapHopA: TListBox;
lbxTapHopB: TListBox;
btnXoa: TButton;
btnGiao: TButton;
edtKetQua: TEdit;
Label2: TLabel;
btnHop: TButton;
btnHieu: TButton;
btnSoSanh: TButton;
Label3: TLabel;
btnDong: TButton;
procedure btnTapHopAClick(Sender: TObject);

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 201

Chng 8: Kiu Lit k, Min con, Tp hp


procedure FormCreate(Sender: TObject);
procedure btnTapHopBClick(Sender: TObject);
procedure btnXoaClick(Sender: TObject);
procedure btnGiaoClick(Sender: TObject);
procedure btnHopClick(Sender: TObject);
procedure btnHieuClick(Sender: TObject);
procedure btnSoSanhClick(Sender: TObject);
procedure btnDongClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmTapHop: TfrmTapHop;
taphopA, taphopB, taphopC: Set of byte;
implementation
{$R *.dfm}
procedure TfrmTapHop.FormCreate(Sender: TObject);
begin
taphopA:=[];
//Khi to, tp rng.
taphopB:=[];
taphopC:=[];
end;
procedure TfrmTapHop.btnTapHopAClick(Sender: TObject);
var pt:integer;
begin
if TryStrToInt(edtNew.Text,pt) and (pt>=0) and (pt<=100) then
if (pt in taphopA) then
ShowMessage('Phan tu '+edtNew.Text+' da co trong tap hop
A.')
else
begin
taphopA:=taphopA+[pt];
lbxTapHopA.Items.Add(IntToStr(pt));
end
else ShowMessage('Chuong trinh chi xet cac phan tu co gia tu 0
den 100.');
edtNew.SetFocus;
end;

Trang 202

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 8: Kiu Lit k, Min con, Tp hp


procedure TfrmTapHop.btnTapHopBClick(Sender: TObject);
var pt:integer;
begin
if TryStrToInt(edtNew.Text,pt) and (pt>=0) and (pt<=100) then
if (pt in taphopB) then
ShowMessage('Phan tu '+edtNew.Text+' da co trong tap hop
B.')
else
begin
taphopB:=taphopB+[pt];
lbxTapHopB.Items.Add(IntToStr(pt));
end
else ShowMessage('Chuong trinh chi xet cac phan tu co gia tu 0
den 100.');
edtNew.SetFocus;
end;
procedure TfrmTapHop.btnXoaClick(Sender: TObject);
begin
taphopA:=[]; taphopB:=[]; taphopC:=[];
edtNew.Clear;
edtNew.SetFocus;
lbxTapHopA.Clear;
lbxTapHopB.Clear;
edtKetQua.Clear;
end;
procedure TfrmTapHop.btnGiaoClick(Sender: TObject);
var i:integer;
begin
edtKetQua.Clear;
taphopC :=taphopA*taphopB;
for i:=0 to 100 do
//chi xet cac pt tap hop tu 0..100
if (i in taphopC) then
edtKetQua.text := edtKetQua.text+' '+ IntToStr(i);
end;
procedure TfrmTapHop.btnHopClick(Sender: TObject);
var i:integer;
begin
edtKetQua.Clear;
taphopC :=taphopA + taphopB;
for i:=0 to 100 do
if (i in taphopC) then
edtKetQua.text := edtKetQua.text+' '+ IntToStr(i);
end;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 203

Chng 8: Kiu Lit k, Min con, Tp hp


procedure TfrmTapHop.btnHieuClick(Sender: TObject);
var i:integer;
begin
edtKetQua.Clear;
taphopC := taphopA - taphopB;
if taphopC = [] then
edtKetQua.text :='Tap hop rong.'
else
for i:=0 to 100 do
if (i in taphopC) then
edtKetQua.text := edtKetQua.text+' '+ IntToStr(i);
end;
procedure TfrmTapHop.btnSoSanhClick(Sender: TObject);
begin
if (taphopA <> taphopB) then
if (taphopA <= taphopB) then
edtKetQua.text :='Tap hop A < Tap hop B'
else
if (taphopA >= taphopB) then
edtKetQua.text :='Tap hop A > Tap hop B'
else
edtKetQua.text :='Tap hop A <> Tap hop B'
else
edtKetQua.text :='Tap hop A = Tap hop B';
end;
procedure TfrmTapHop.btnDongClick(Sender: TObject);
begin
Close;
end;
end.

- Lu d n vo th mc S:\ViduTapHop
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Trang 204

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 8: Kiu Lit k, Min con, Tp hp


+ Nhp cc phn t cho tp A v B:

Hnh 4:

Nhp cc phn t cho tp A v B

+ Nu nhp phn t trng s thng bo:

Hnh 5:

Thng bo nhp phn t tn ti

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 205

Chng 8: Kiu Lit k, Min con, Tp hp


+ Nu nhp vt khi min gi tr ang xt, th thng bo:

Hnh 6:

Nhp vt khi min gi tr

+ Hp ca 2 tp:

Hnh 7:

Trang 206

Kt qu hp ca 2 tp.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 8: Kiu Lit k, Min con, Tp hp


+ Tnh giao ca 2 tp:

Hnh 8:

Kt qu giao ca 2 tp.

+ Kt qu so snh gia 2 tp A v B.

Hnh 9:

Kt qu so snh

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 207

Chng 9: Kiu Mng

CHNG 9: KIU MNG


I. Khi nim v mng (Array-type data)
Mng l mt kiu d liu gm mt dy hu hn cc phn t c cng kiu, gi l kiu
c bn. Mng c c t chc theo mt trt t xc nh. S phn t ca mng c khai
bo ngay t khi nh ngha ra mng (mng tnh) hoc c th khai bo v cp pht mt cch
linh hot trong lc chng trnh ang chy (run-time) theo nhu cu s dng (mng ng).

II. Mng tnh (Static array)

II.1. Mng mt chiu (One-Dimensional array)


Mng mt chiu c th c hiu nh mt danh sch cc phn t c cng kiu.
Mi phn t ca mng c xc nh v c truy nhp trc tip thng qua tn mng cng
vi ch dn truy nhp c gia hai ngoc vung [ ].
V d chng ta c mt danh sch c tn l DaySo c n phn t (Vi n l mt hng
s xc nh trc). Vy List chnh l mt mng 1 chiu. Cc phn t ca List mang
cc tn List[0], List[1], List[2], ..., List[n-1], v c th minh ha nh hnh sau:

List[0]

List[1]

List[2]

List[3]

n-1

List:
.........

List[n-1]

Hnh 1: Hnh nh minh ha mng mt chiu.


II.1.1. Khai bo gin tip:
type
Kiu_mng = array [tp_ch_s] of kiu_phn_t;
var
Danh_sch_bin: Kiu_mng;
Ch : tp ch s phi l kiu c th t (ri rc, m c), chng hn nh kiu:
K t, kiu min con, s nguyn
V d 1:
Khai bo gin tip
type
DaySoNguyen = array [0 .. 99] of integer;
DayKyTu = array [1 .. 20] of char;
var
a, b: DaySoNguyen;
c: DaySoNguyen;
d: DayKyTu;
Trang 208

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 9: Kiu Mng


ngha:
- DaySoNguyen l kiu mng gm 100 phn t s nguyn c ch s t 0 n 99.
-

Bin a, b v c l cng kiu DaySoNguyen.

DayKyTu l kiu mng gm 20 phn t nh s t 1 .. 20 c kiu l cc k t. Bin


d c kiu l DayKyTu.

II.1.2. Khai bo trc tip


var
Danh_sch_bin : array [tp_ch_s] of kiu_phn_t;

V d 2:
Khai bo trc tip
var
a, b
:
array [1 .. 100] of integer;
c
:
array [1 .. 100] of integer;
KyTu :
array [1 .. 20 ] of char;
Chon :
array [0 .. 9 ] of boolean;
- Bin a v b c gi l cng kiu. Bin a v b l khc kiu vi bin c.
Lu : nu nh chng ta khai bo to ra mt mng tnh nhng khng gn tr cho cc
phn t ca mng th cc phn t mng vn c cp pht trong b nh, tuy nhin chng
s cha cc gi tr ngu nhin, ging nh cc bin cha c khi to gi tr.
II.1.3. Truy xut cc phn t ca mng
Mi phn t ca mng c truy xut thng qua Tn bin mng cng vi ch s th
i ca mng trong du ngoc vung []. V d tn bin mng l A, khi vit A[7], ta hiu n l
phn t c ch s th 7 ca mng A.
V d, chng ta c th thc hin php gn gi tr 10 cho phn t th by ca A nh
sau: A[7]:=10;
Ta c th gn hai bin mng cng kiu cho nhau.
V d 3:
Khai bo hai mng x, x nh sau:
var
x,y : array[0..10] of integer; // x, y cng kiu
Ta c php gn sau l hon ton hp l: y[0]:=50; x:=y;
Lc ny cc gi tr ca x s hon ton ging nhau. Chng ta cn ch l: nu ta thay
i cc gi tr ca bin y th diu khng lm nh hng n x v ngc li.
Tuy nhin, nu ta c khai bo:
var

x, y : array[0..10] of integer;
z
: array[0..10] of integer;
Th lnh gn: x:=z; l khng hp l v Delphi xem bin x v z trong trng hp ny
l khc kiu.
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 209

Chng 9: Kiu Mng


V d 4:
Vit chng trnh nhp vo mt dy s nguyn c n phn t. Sp xp
dy s va nhp theo th t tng dn.
Hng dn:
- To mt d n mi File/New/Application
- Tn (name) ca cc i tng trn form nh hnh sau:

Hnh 2: Tn cc i tng
- Thit k giao din form:

Hnh 3: Thit k giao din chng trnh


- on code ca chng trnh nh sau:
unit untMang1C;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, Grids, StdCtrls;
type
TfrmMang1C = class(TForm)
stgMang1C: TStringGrid;
edt_n: TEdit;
Label1: TLabel;
btnNhap: TButton;
btnSX: TButton;
btnKThuc: TButton;
Trang 210

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 9: Kiu Mng


bntHienthi: TButton;
procedure btnNhapClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure bntHienthiClick(Sender: TObject);
procedure btnKThucClick(Sender: TObject);
procedure btnSXClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMang1C: TfrmMang1C;
n:integer;
//so phan tu mang
a: array [0..100] of integer; // mang 1 chieu
implementation
{$R *.dfm}
procedure TfrmMang1C.btnNhapClick(Sender: TObject);
var i: byte;
begin
if (tryStrToInt(edt_n.Text,n)) and (n>0) then
begin
for i:=0 to n-1 do
a[i]:=StrToInt(InputBox('Hop nhap lieu','Phan tu
a['+IntToStr(i)+']= ',''));
stgMang1C.ColCount :=n;
end
else ShowMessage('Ban nhap gia tri n KHONG hop le.');
end;
procedure TfrmMang1C.FormCreate(Sender: TObject);
begin
stgMang1C.FixedRows:=0;
stgMang1C.FixedCols:=0;
stgMang1C.RowCount:=1;
end;
procedure TfrmMang1C.bntHienthiClick(Sender: TObject);
var i: byte;
begin
for i:= 0 to n-1 do stgMang1C.Cells[i,0]:=IntToStr(a[i]);
end;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 211

Chng 9: Kiu Mng


procedure TfrmMang1C.btnKThucClick(Sender: TObject);
begin
Close;
end;
procedure TfrmMang1C.btnSXClick(Sender: TObject);
var i, j: byte;
temp: integer;
begin
for i:=0 to n-2 do
for j:=i+1 to n-1 do
if a[i]>a[j] then
// hon v
begin
temp:=a[i];
a[i]:=a[j];
a[j]:=temp;
end;
//goi lai TTSK de hien thi mang da SX
frmMang1C.bntHienthiClick(Sender);
end;
end.

- Lu d n vo th mc S:\ViduMang1C
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 4: Chng trnh bt u chy

Trang 212

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 9: Kiu Mng

Hnh 5: Nhp s phn t n, v Click nt Nhap day so

Hnh 6: Hin th mng va nhp

Hnh 7: Sp xp tng v hin th mng

II.2. Mng nhiu chiu (Multi-Dimensional array)


Trong mt s bi ton thc t, ngi ta cn s dng cc mng nhiu hn mt chiu,
gi l mng nhiu chiu. Mng nhiu chiu cn gi l mng ca mng.
Chng ta hy xem xt mt v d sau:
Phng o to qun l im ca sinh vin. Trong kho 30 chng hn, ngi ta to ra
mt mng 2 chiu: v d mt chiu l M S ca sinh vin, chiu cn li l cc MN

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 213

Chng 9: Kiu Mng


HC (dng kiu v hng lit k), ta c th hnh dung dng ca mng ghi im (tn mng
l ghi_diem) nh sau:
MASV \ Mn
0001
0002

Triet
7
6

0003
........

8
...

TinHoc
8
10
9
...

Ly
5
6

...
...
...

3
...

...
...

AnhVan
10
7

Mn

9
...

M SV
Hnh 8: Minh ha mng hai chiu
Vi v d trn, mun nhp im mt sinh vin no ta phi khai bo hai tham s l
M s sinh vin v mn hc.
Tng t, cng vi cc kha k tip theo hc nhng mn nh vy, ta s to ra mng
nhiu chiu nh hnh v minh ha sau:

K32
K
K30
SVK30\

MASV
Hnh 9: Minh ha mng ba chiu
Trong trng hp ny, mun bit im mt sinh vin no ta phi khai bo 3 tham
s: Kho hc, sinh vin v mn hc, chng hn:
ghi_diem[K31,0001,AV] nhp im 10,...
II.2.1. Khai bo gin tip
type
Kiu_mng = array [tp_ch_s_1, tp_ch_s_2, ...,
tp_ch_s_n] of kiu_phn_t;
var
Danh_sch_bin : Kiu_mng;
Trang 214

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 9: Kiu Mng


II.2.2. Khai bo trc tip
var
Danh_sch_bin : array [tp_ch_s_1, ..., tp_ch_s_n] of kiu_phn_t;
Trong gio trnh ny ch cp chi tit v mng hai chiu.

II.3. Mng hai chiu


Mng hai chiu l mng nhiu chiu nhng ch c hai tp ch s. Mt hnh nh quen
thuc ca mng hai chiu chnh l thnh phn StringGrid m gio trnh cp
chng 5.
II.3.1. Khai bo gin tip
type
Kiu_mng = array [tp_ch_s_1, tp_ch_s_2] of kiu_phn_t;
var
Danh_sch_bin : Kiu_mng;

Hoc:
type
Kiu_mng = array [tp_ch_s_1] of array [tp_ch_s_2] of kiu_phn_t;
var
Danh_sch_bin : Kiu_mng;
V d 5:
type

Khai bo gin tip mng 2 chiu

MaTran = array [1 .. 5, 1 .. 10] of integer;


var
a : MaTran;
Lnh trn khai bo mt kiu mng c tn l Matran, c kiu cc phn t l kiu s
nguyn. y l mt mng 2 chiu, chiu th nht c cc ch s t 1 n 5, chiu th hai c
cc ch s t 1 n 10, tng cng ta c (5 x 10) phn t. V ta c mt bin a l bin c kiu
Matran.
V d trn cng c th c khai bo tng ng vi:
type
Matran = array [1 .. 5] of array [1 .. 10] of integer ;
var
a : Matran;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 215

Chng 9: Kiu Mng


II.3.2. Khai bo trc tip
var
Danh_sch_bin : array [tp_ch_s_1, tp_ch_s_2] of kiu_phn_t;
Hoc:
var
Danh_sch_bin : array [tp_ch_s_1] of array[tp_ch_s_2] of kiu_phn_t;
V d 6:
var

Khai bo mt bin a c 5 dng v 10 ct kiu l integer nh sau:

a : array [1 .. 5, 1 .. 10] of integer;


Hoc ta cng c th khai bo nh sau:
var
a : array [1 .. 5] of array [1 .. 10] of integer; // mng ca mng.
Vit chng trnh nhp ngu nhin 2 ma trn A v B c m dng, n ct
V d 7:
vi cc phn t l s nguyn trong khong [0..500]. Tnh cng hai ma trn C = A+B, v
sp xp ma trn C theo th t gim dn theo tng hng.
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh trong ca s Object
TreeView sau:

Hnh 10: Tn cc i tng

Trang 216

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 9: Kiu Mng


- Thit k giao din form:

Hnh 11: Giao din chng trnh


- on code ca chng trnh nh sau:
unit untMang2C;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, Grids, StdCtrls;
type
TfrmMang2C = class(TForm)
stgB: TStringGrid;
edt_m: TEdit;
Label1: TLabel;
btnNhap2MaTran: TButton;
btnSX: TButton;
btnKThuc: TButton;
btnTong: TButton;
Label2: TLabel;
stgA: TStringGrid;
edt_n: TEdit;
Label3: TLabel;
Label4: TLabel;
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 217

Chng 9: Kiu Mng


stgC: TStringGrid;
Label5: TLabel;
stgSX: TStringGrid;
Label6: TLabel;
procedure btnNhap2MaTranClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnTongClick(Sender: TObject);
procedure btnKThucClick(Sender: TObject);
procedure btnSXClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmMang2C: TfrmMang2C;
m, n:integer;
//so hang m, so cot n
a, b, c: array [0..10,0..10] of integer; // Mang 2 chieu
implementation
{$R *.dfm}
procedure TfrmMang2C.btnNhap2MaTranClick(Sender: TObject);
var i, j: byte;
begin
randomize; //thu tuc tron so ngau nhien
if tryStrToInt(edt_m.Text,m) and (m>0)
and tryStrToInt(edt_n.Text,n) and (n>0) then
begin
for i:=0 to m-1 do //m hang
for j:=0 to n-1 do //n cot
begin
//-----Nhap vao mang a va hien thi vao StringGird A-a[i,j]:=random(500); //ham tra ve 1 so ngau nhien
stgA.Cells[j,i] := IntToStr(a[i,j]);
//-----Nhap vao mang b va hien thi vao StringGird B-b[i,j]:=random(500); //ma tran B
stgB.Cells[j,i] := IntToStr(b[i,j]);
end;
stgA.RowCount :=m;
stgB.RowCount :=m;
stgC.RowCount :=m;
stgSX.RowCount :=m;

Trang 218

stgA.ColCount :=n;
stgB.ColCount :=n;
stgC.ColCount :=n;
stgSX.ColCount :=n;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 9: Kiu Mng


btnTong.Enabled := true;
end
else ShowMessage('Ban nhap gia tri m hoac n KHONG hop le.');
end;
procedure TfrmMang2C.FormCreate(Sender: TObject);
begin
stgA.FixedRows:=0; stgA.FixedCols:=0; stgA.DefaultColWidth:=32;
stgB.FixedRows:=0; stgB.FixedCols:=0; stgB.DefaultColWidth:=32;
stgC.FixedRows:=0; stgC.FixedCols:=0; stgC.DefaultColWidth:=32;
stgSX.FixedRows:=0;stgSX.FixedCols:=0;stgSX.DefaultColWidth:=32;
btnTong.Enabled:=False;
btnSX.Enabled:=False;
end;
procedure TfrmMang2C.btnTongClick(Sender: TObject);
var i, j: byte;
begin
for i:= 0 to m-1 do
for j:= 0 to n-1 do
begin
c[i,j]:=a[i,j] + b[i,j];
stgC.Cells[j,i]:=IntToStr(c[i,j]);//hien thi vao StringGridC
end;
btnSX.Enabled := True;
end;
procedure TfrmMang2C.btnKThucClick(Sender: TObject);
begin
Close;
end;
procedure TfrmMang2C.btnSXClick(Sender: TObject);
var i, j, k: byte;
temp: integer;
begin
for i:=0 to m-1 do
// SX theo tung hang i
for j:=0 to n-2 do
for k := j+1 to n-1 do
if c[i,j]<c[i,k] then //giam dan
begin
temp:=c[i,j];
c[i,j]:=c[i,k];
c[i,k]:=temp;
end;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 219

Chng 9: Kiu Mng


//hien thi mang tran C da SX vao StringGrid SX
for i:=0 to m-1 do
for j:=0 to n-1 do
stgSX.Cells[j,i] := IntToStr(c[i,j]);
end;
end.

- Lu d n vo th mc S:\ViduMang2C
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 12: Nhp ngu nhin 2 ma trn 5 hng 7 ct

Trang 220

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 9: Kiu Mng

Hnh 13: Tng C = A + B

Hnh 14: Sp xp mng C gim dn theo tng hng.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 221

Chng 9: Kiu Mng


III. Mng ng (Dynamic array)
Nh trnh by trn, mng tnh l mng s phn t phi c khai bo trc, v
vy khi ta khng s dng cc phn t ca mng th mng vn c cp pht v chim b
nh. Tuy nhin vi mng ng chng ta c th khai bo v cp pht mng mt cch linh
ng ty theo nhu cu s dng. Mng ng khng chim b nh c nh, ta c th dng
th tc SetLength thay i kch thc mng lc thc thi.

III.1. Mng ng mt chiu


III.1.1. Khai bo gin tip
C php khai bo mng ng mt chiu:
type
Kiu_mng = array of kiu_phn_t;
var
Danh_sch_bin : Kiu_mng;
III.1.2. Khai bo trc tip
var
Danh_sch_bin : array of kiu_phn_t;
truy xut n mi phn t ca mng, chng ta cng thc hin tng t nh truy
xut phn mng tnh.
Khai bo mt mng ng c tn l DaySo cha cc phn t s thc.
V d 8:
var
DaySo : array of extended;
III.1.3. Cp pht v gii phng vng nh trong mng ng
Trong v d trn, s phn t ca mng vn cha c xc nh. s dng mng ta
phi khai bo s phn t mng bng th tc SetLength nh sau:
SetLength(DaySo,10);
Cu lnh SetLength ny s cp pht 10 phn t trong b nh, c ch s t 0..9 (Ch
: mng ng lun c cp pht vi ch s bt u bng 0).
gii phng vng nh cp pht cho mng, chng ta ch cn gn tr nil cho bin
mng nh trong v d sau:
DaySo:=nil; // gii phng vng nh cho mng DaySo va c cp pht trn.
Ch : Ta c th thc hin php gn hai bin cng kiu mng cho nhau. V d X, Y
l hai bin cng kiu mng th lnh gn X:=Y l hp l. Tuy nhin lc ny nu ta thay i
cc gi tr ca mng X th mng Y cng thay i theo v thc cht X ch tham chiu n Y
(iu ny khc vi mng tnh).

Trang 222

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 9: Kiu Mng


III.1.4. Mt s hm v th tc c bn c s dng ly thng tin ca mng ng
- Th tc SetLength(var S; NewLength: integer);
SetLength cp pht cho mng S s phn t l NewLength.
- Hm Copy(S; Index, Count: integer): array;
Hm copy tr v mt mng con c Count phn t, vi phn t u tin c ch s l
Index.V d: khai bo mt mng 100 phn t.
var a: array[0..100] of integer;
a:= copy(a,0,20); // mng A cn 20 phn t
- Hm Low(x); tr v ch s thp nht ca mng x.
- Hm High(x); tr v ch s cao nht ca mng x. Nu mng rng th hm s tr v -1.
- Hm Length(x): integer; tr v s phn t ca mng x.
V d 9:
Vit chng trnh nhp vo mt dy cc s thng qua hm
InputBox cho n khi nhp bng 0 th ngng. Trong qu trnh nhp C kim tra li
nhp liu. Hin th cc s va nhp ln mn hnh. Cho bit trung bnh ca cc s dng
(ln hn 0) v trung bnh ca cc s m (nh hn 0) va nhp.
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 15: Tn cc i tng v giao din chng trnh

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 223

Chng 9: Kiu Mng


- on code ca chng trnh:
unit untMangDong;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmVidu = class(TForm)
btnNhap: TButton;
Label3: TLabel;
edtDaySo: TEdit;
Label1: TLabel;
btnTinhTrB: TButton;
Label2: TLabel;
memKQ: TMemo;
procedure btnNhapClick(Sender: TObject);
procedure btnTinhTrBClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmVidu: TfrmVidu;
a: array of single;
spt:integer; //So phan tu ma ban da nhap cho mang.
implementation
{$R *.dfm}
procedure TfrmVidu.btnNhapClick(Sender: TObject);
var i: integer; so:single; ds:string; kt:Boolean;
begin
i:=0;
SetLength(a,1);
ds := '';
repeat
kt := TryStrToFloat(InputBox('Hop nhap','Nhap phan tu thu ' +
IntToStr(i)+ ' :',''),so);
if kt = false then
ShowMessage('Gia tri nhap KHONG phai la kieu so. Nhap lai!')
else
begin
SetLength(a,i+1);

Trang 224

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 9: Kiu Mng


a[i] := so;
ds := ds + #32 + FloatToStr(so);
inc(i);
end;
until (so = 0);
edtDaySo.Text := ds;
spt := i;
end;

{ghep cac so vua nhap


thanh mot chuoi.}

//Hien thi day so vua nhap ra ListBox

procedure TfrmVidu.btnTinhTrBClick(Sender: TObject);


var mTongAm, mTongDuong : single; i, m, n: integer;
begin
mTongAm := 0; mTongDuong := 0;
m := 0; n := 0;
for i := 0 to spt-1 do // spt: so phan tu cua mang a
begin
if a[i] <0 then
begin
mTongAm := mTongAm + a[i];
inc(m);
end;
if a[i] >0 then
begin
mTongDuong := mTongDuong + a[i];
inc(n);
end;
end;
memKq.Lines.Clear;
if m>0 then memKq.Lines.Add('* Trung binh cac so am = '+
FloatToStr(mTongAm/m))
else memKq.Lines.Add('* Trung binh cac so am = 0');
if n>0 then memKq.Lines.Add('* Trung binh cac so duong = '+
FloatToStr(mTongDuong/n))
else memKq.Lines.Add('* Trung binh cac so duong = 0');
end;
end.

- Lu d n vo th mc: S:\MangDong1C
- Bin dch v chy chng trnh, ta c kt qu nh sau:

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 225

Chng 9: Kiu Mng

Hnh 16: Bt u chy

Hnh 17: Trng hp nhp d liu sai, phi nhp li.

Hnh 18: Nhp phn t th 0 l 15 v phn th 1 l -7.5

Hnh 19:

Trang 226

Nhp phn t th 6 l 47 v g 0 kt thc nhp liu.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 9: Kiu Mng

Hnh 20: Kt qu ca chng trnh

III.2. Mng ng nhiu chiu


Tng t nh mng tnh, mng ng nhiu chiu cng chnh l mng ca mng.
Chng ta c th dng t kha array of khai bo mng vi nhiu cp.
III.2.1. Khai bo gin tip
type
Kiu_mng = array of array of ... array of kiu_phn_t;
var
Danh_sch_bin : Kiu_mng;

V d 10:
Khai bo gin tip hai mng ng 2 chiu v 3 chiu:
type
Mang2C = array of array of single;
// mng ng 2 chiu
Mang3C = array of array of array of integer;
// mng ng 3 chiu
var
a: Mang2C; b: Mang3C;
III.2.2. Khai trc tip
var
Danh_sch_bin: array of array of .. array of kiu_phn_t;
V d 11:
Khai bo trc tip hai mng ng 2 chiu v 3 chiu:
var
a: array of array of single;
b: array of array of array of integer;
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 227

Chng 9: Kiu Mng


Khi mun s dng bin mng ng nhiu chiu th ta cng phi cp pht vng nh
ging nh mng ng mt chiu.
V d 12:
Cp pht vng nh cho bin DaySo khai bo trn
SetLength(DaySo,10,5);
// DaySo c kch thc [0..10, 0..5]
Tuy nhin, chng ta c th cp pht theo kiu nh sau:
SetLength(DaySo,5);

// cp pht 5 phn t mt chiu

SetLength(DaySo[2],5);

// m rng phn t th ba thnh mng 2 chiu

Kt qu cp pht ca v d bn trn:
0
1
2

3
4

III.3. Hng mng


khai bo hng mng, chng ta ch cn t cc gi tr hng tng ng vi tng
phn t ca mng trong du ngoc n.
V d 13:
Khai bo mt s hng mng
Const So: array[0..9] of integer = (0,10,2,35,40,45,20,7,78,9); //hng mng s
Const Kyso: array[0..7] of char = ('0','1','2','3','4','5','6','7'); //hng mng k s
nh ngha hng mng nhiu chiu, ta s dng du ngoc n v du phy
phn cch cc chiu ca mng.
V d 14:
Type

Hng mng hai chiu

Mang2C = array[0..1, 0..1] of Integer;


Const
MaTran: Mang2C = ((2, 3),(4, 5));
ngha: vi khai bo trn ta to ra mt mng hai chiu c tn l MaTran c cc
gi tr nh sau:
MaTran[0,0] = 2

MaTran[0,1] = 3

MaTran[1,0] = 4

MaTran[1,1] = 5

Trang 228

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 10: Kiu chui k t

CHNG 10: KIU CHUI K T


Chui l kiu d liu i din cho mt dy tun t cc k t. Cc k t trong chui
th c nh ch s bt u l 1 v tip tc cho n ht di ca n. Mt chui khng
cha k t no c c gi l chui rng (null/ empty string) v di ca n s bng
khng (zero). Mt c tnh hay ca chui l di thc ca n s t ng thay i khi
chy chng trnh v nh vy s thun li cho ngi vit chng trnh khng phi tnh
ton cp nht li s thay i di thc ca n.

I. Cc loi chui k t trong Object Pascal


Trong Delphi, chui c phn ra lm 3 loi: ShortString, AnsiString v
WideString

I.1. Chui ngn (ShortString)


L kiu d liu c kh nng cha ti a l 255 k t c nh ch s t 1 n 255.
Ring phn t th 0 cha di thc ca chui. Vi kiu d liu ngn ny, th mi k
t chim 1 byte b nh. Trong ngn ng lp trnh Delphi, kiu ShortString c dng
h tr kiu String trong ngn ng lp trnh Pascal, hay ni cch khc l gip ngi lp
trnh c th duy tr m ngun ca ngn ng Pascal trn phin bn Delphi.
khai bo bin thuc kiu d liu chui ngn ny, bn c th khai bo thng qua 2
cch nh sau:
I.1.1. S dng tn chun ShortString
Vi cch khai bo d liu theo cch ny, bn mun khai bo chui c di ti a l
255 k t v bn khng th gii hn li di khai bo ca n bng cch t mt hng
ch di trong cp du mc vung.
V d 1:
var diachi: ShortString;
hoten: ShortString[30];

// ng c php
// li c php

I.1.2. S dng t kha string


Vi cch khai bo ny, bn phi s dng thm ch th khng s dng cc loi chui
ln (huge strings s c cp sau) l {$H-} hoc b chn mc Huge strings trong hp
thoi Project Options thng qua chc nng Project/Options/Compiler nh sau:

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 229

Chng 10: Kiu Chui k t

Hnh 1: Tt ch th Huge strings


Cch s dng ny c th khc phc c khuyt im ca ShortString l bn c th
th gii hn li di khai bo ca n.
V d 2:
{$H-} // String chuyn thnh ShortString
var

diachi: string;

// ng c php, di khai bo l 255

hoten: string[30];

// ng c php, di khai bo l 30

Trong chng trnh, bn c th t li di thc cho n bng th tc SetLength m


bn s c trnh by phn di.

I.2. Chui di 1 byte (AnsiString)


y l loi d liu chui c s dng ph bin nht trong 3 loi, v mc nhin
(default) Delphi bt sn ch th {$H+} hay chc nng Huge strings hp thoi Project
Options.
AnsiString c kh nng cha ti khong 2,147,483,648 (~231) k t c nh ch
s bt u t 1. Mi k t ca AnsiString chim 1 byte b nh. Khc vi ShortString, phn
t th 0 khng c s dng xc nh di thc ca chui. di thc ny s c
xc nh bi hm Length.
khai bo bin thuc kiu d liu chui AnsiString ny, bn c th khai bo thng
qua 2 tn chun nh sau:
Trang 230

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 10: Kiu chui k t


I.2.1. S dng tn chun AnsiString
Vi cch khai bo d liu theo cch ny, bn mun khai bo chui c di ca n
ti a v bn khng th gii hn li di khai bo ca n bng cch t mt hng ch
di trong cp du mc vung.
V d 3:
var
DiaChi: AnsiString;
HoTen: AnsiString[30];
I.2.2.

// ng c php
// li c php

S dng tn chun String

Vi cch khai bo ny, bn phi s dng thm ch th c s dng cc loi chui ln


(huge strings) l {$H+} hoc chn mc Huge strings trong hp thoi Project Options
thng qua chc nng Project/Options/Compiler nh sau:

Hnh 2: Bt ch th Huge strings


V d 4:
{$H+}
var

// bt ch th s dng AnsiString
GhiChu: String;

// ng c php, c hiu l AnsiString

Cng nh kiu ShortString, bn c th iu chnh li di thc cho n bng th tc


SetLength trong thn chng trnh.
Mt tnh nng hu dng ca kiu AnsiString trong Delphi l n c ci t sn
chc nng m-tham chiu (Reference-counting) v sao chp-ghi (Copy-on-write).

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 231

Chng 10: Kiu Chui k t

I.3. Chui di 2 byte (WideString)


C tnh cht tng t nh AnsiString, nhng im khc bit l mi k t trong
WideString chim 2 byte b nh (k t Unicode), t c s dng hn, v khng c tnh
cht m-tham chiu (Reference-counted) v sao chp-ghi (Copy-on-write) nh kiu
AnsiString.
WideString c kh nng cha ti khong 1,073,741,824(~230) k t c nh ch
s bt u t 1. Cng tng t nh kiu AnsiString, di thc ca chui kiu WideString
cng c th iu chnh li c bi th tc SetLength v xc nh di hm Length.
khai bo bin thuc kiu d liu chui WideString, bn c th khai tn chun l
WideString nh sau:
var m_Chuoi2byte: WideString;

II. Cc thao tc trn chui


Trong cc hm v th tc x l chui k t, th hu ht cc hm c s dng cho
c 3 loi ShortString, AnsiString v WideString. Tuy nhin, gio trnh s tp trung ch yu
vo cc thao tc trn kiu chui di 1 byte AnsiString.
Lu : Di y l cc on chng trnh nh, mc ch nhm minh ho r hn
cc hm, th tc c trnh by. Cc bn c th t cc on chng trnh ny vo trong
th tc s kin ca nt lnh (TButton) th nghim chng trnh.

II.1. Php ton cng chui


V d 5: S dng ton t cng
var s:AnsiString;
begin
s := 'Le' + #32 + 'Loi';
ShowMessage('s = ' + s);
end;

Hnh 3: Cng 2 chui

II.2. Php ton so snh


Cc so snh gm c so snh bng, ln hn, ln hn hoc bng, khc, nh hn, nh
hn hoc bng tng ng vi cc ton t so snh =, >, >=, <>, <, <=
Khi so snh 2 chui k t th cc k t c so snh theo tng cp mt theo chiu
t tri sang phi da vo gi tr trong bng m ASCII. C 2 kh nng xy ra khi so snh:
Nu chui th nht l mt phn ca chui th hai k t u chui, th chui th hai s ln
hn chui th nht nu chiu di ca chui th hai ln hn, nh v d hnh 4, hoc bng
nu chui th hai c di bng chui th nht, nh v d hnh 5.

Trang 232

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 10: Kiu chui k t


Ghi ch: Chui rng (null string, vit l '') l chui khng c cha g c. Gi tr m
ASCII ca n l zero, nh nht trong cc k t trong bng m ASCII.
V vy:

'A' >''

v chr(32)> ''

V d 6: Chng trnh so snh 2 chui bt k nhp t bn phm:


var s1, s2: AnsiString;
begin
s1:= InputBox('Nhap chuoi','s1= ','Que huong la chum khe ngot');
s2 := InputBox('Nhap chuoi','s2= ','Que huong neu ai khong nho');
if s1=s2 then ShowMessage(s1+ ' = ' + s2)
else
if s1>s2 then ShowMessage(s1+ ' > ' + s2)
else ShowMessage(s1+ ' < ' + s2);
end;
Khi chy chng trnh:
+ Nu nhp s1 = 'Vietnamese' , s2 = 'Vietnam' ta c kt qu nh sau:

Hnh 4: Chui s1 > s2


+ Nu nhp s1 = 'Me hien yeu dau' , s2 = 'Me hien yeu dau' ta c kt qu
nh sau:

Hnh 5: Chui s1 = S2
+ Vi gi tr nhp nh gi tr mc nh, ta c kt qu nh sau:

Hnh 6: Chui s1 < s2


B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 233

Chng 10: Kiu Chui k t

II.3. Cc th tc v hm chun x l chui k t


Trong Delphi, cc bn cn ch cc th tc v hm chun trn tng loi chui.
II.3.1. Hm so snh chui
C php: function CompareStr(const S1, S2: string): Integer;
ngha: So snh c phn bit k t hoa thng ca chui S1 vi chui S2. Kt qu
tr v ca hm bng: khng nu S1 bng S2, mt gi tr nh hn khng nu S1 < S2, v
mt gi tr ln hn khng nu S1>S2.
V d 7: Chng trnh s dng hm CompareStr
var s1,s2: String; m_ret: integer;
begin
s1 := InputBox('Nhap chuoi','s1= ','Long Me');
s2 := InputBox('Nhap chuoi','s2= ','LONG ME');
m_ret := CompareStr(s1,s2);
if m_ret = 0 then ShowMessage('Hai chuoi bang nhau')
else
if m_ret > 0 then ShowMessage(s1+ ' > ' + s2)
else ShowMessage(s1+ ' < ' + s2);
end;

Hnh 7: Phn bit hoa thng


C php: function CompareText(const S1, S2: string): Integer;
ngha: Nh hm so snh CompareStr trn, nhng khng phn bit k t hoa
thng.

Hnh 8: Khng phn bit hoa thng

Trang 234

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 10: Kiu chui k t


II.3.2. Th tc xa chui
C php: procedure Delete(var S: string; Index, Count:Integer);
ngha: Xa khi chui S mt s k t l Count bt u t v tr Index tnh t tri
sang.
V d 8: Minh ha th tc xa chui
var s: string;
begin
s := 'Troi xanh xanh';
ShowMessage('Chuoi ban dau: ' + s);
Delete(s,6,4);
ShowMessage('Chuoi sau khi xoa: ' + s);
end;
Khi chy chng trnh, ta s thy trn mn hnh:

Hnh 9: Kt qu v d xa chui
II.3.3. Th tc chn chui
C php: procedure Insert(Source: string; var S: string; Index: Integer);
ngha: Chn chui Source vo chui S ti ch s Index.
V d 9: Minh ha th tc chn chui
var s: string;
begin
s := 'Mat troi con';
ShowMessage('Chuoi ban dau: ' + s);
Insert(' be',s,9);
ShowMessage('Chuoi sau chen: ' + s);
end;

Hnh 10:

Kt qu v d chn chui

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 235

Chng 10: Kiu Chui k t


II.3.4. Th tc i s thnh chui
C php: procedure Str(X [: Width [: Decimals ]]; var S);
ngha: i gi tr s S thnh chui ri gn cho St, Gi tr Width:Decimals nu c
s l s v tr v s ch s thp phn ca S.
V d 10: Minh ha th tc i s thnh chui
var s: string; num:extended;
begin
num:=12345.679;
Str(num:5:2,s);
ShowMessage('Chuoi ky so s = ' + s);
end;
Kt qu trn mn hnh:

Hnh 11: Kt qu v d i sang chui


II.3.5. Th tc i chui thnh s
C php: procedure Val(S; var V; var Code: Integer);
ngha: i chui k s S thnh gi tr kiu s v gn gi tr ny cho V. Code l
s nguyn dng pht hin li: nu i ng th Code c gi tr = 0, nu sai do S khng
biu din ng s nguyn hoc s thc th Code s nhn gi tr bng v tr ca k t sai
trong chui k s S.
V d 11: Minh ha th tc i chui thnh s
var S: string; V: Real;

Code: integer;

begin
S := InputBox('Nhap chuoi','Chuoi ky so hop le s: ','345.6789');
Val(S,V,Code);
ShowMessage('Voi chuoi S= ''' + S +''' thi gia tri bao loi Code = ' +
IntToStr(Code) + ', va gia tri so V = '+FloatToStr(V));
S := InputBox('Nhap chuoi','Chuoi ky so KHONG hop le s: ','345A.6789');
Trang 236

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 10: Kiu chui k t


Val(S,V,Code);
ShowMessage('Voi chuoi S= '''+ S +''' thi gia tri bao loi Code = '+ IntToStr(Code));
end;
Khi chy vi cc gi tr nhp l mc nh, bn s c nhng kt qu sau:

Hnh 12: i c t chui sang s

Hnh 13:

i khng c t chui sang s

II.3.6. Hm xc nh di ca chui k t
C php: function Length(S): Integer;
ngha: Cho kt qu l mt s nguyn ch di ca chui k t St.
V d: Minh ha hm Length
var S: String;
begin
S := 'Vet chan tron tren cat';
ShowMessage('Do dai cua chuoi ''' + s + ''' la: ' + IntToStr(Length(S)));
end;

Hnh 14:

Kt qu hm Length

II.3.7. Hm sao chp chui


C php: function Copy(S; Index, Count: Integer): string;
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 237

Chng 10: Kiu Chui k t


ngha: Kt qu tr v l mt chui con ca chui S, bt u ti ch s Index v
chp Count k t.
V d 12: Sao chp chui Ht vi ch ve con t v tr th 9 v ly 6 k t
var S, Substr: String;
begin
S := 'Hat voi chu ve con';
Substr:=Copy(S,9,6);
ShowMessage('Chuoi con Substr vua duoc copy la: '+Substr);
end;

Hnh 15:

Kt qu hm Copy

II.3.8. Hm ghp ni chui (Concatenate)


C php: function Concat(s1 [, s2,..., sn]: string): string;
ngha: Cho kt qu l mt chui mi c ghp ln lt bi cc chui s1,
s2,...,sn. Hm ny ging nh php cng cc chui.
V d 13: Ghp ni chui
var s:AnsiString;
begin
s := Concat('Ngon ngu lap trinh',Chr(32),'Delphi',#32,'7.0');
ShowMessage('Chuoi s la: ' + s);
end;

Hnh 16:

Kt qu hm Concat

II.3.9. Hm xc nh ch s ca chui
C php: function Pos(Substr: string; S: string): Integer;
ngha: Cho kt qu l v tr u tin ca chui Substr trong chui S. Nu khng
tm thy th hm s tr v gi tr 0.
Trang 238

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 10: Kiu chui k t


V d 14: Tm kim chui ve con v chui mo con trong chui Ht vi ch ve
con:
var S, Substr: String;
m_Index: integer;
begin
Substr := 've con';
S := 'Hat voi chu ve con';
m_Index := Pos(Substr,S);
if m_Index=0 then
ShowMessage('Chuoi '''+ SubStr +''' khong tim thay trong chuoi '''+ S +'''')
else
ShowMessage('Chuoi '''+ SubStr +''' bat dau tai chi so '+ IntToStr(m_Index)+
' cua chuoi '''+ S +'''');
Substr := 'meo con';
m_Index := Pos(Substr,S);
if m_Index=0 then
ShowMessage('Chuoi '''+ SubStr +''' khong tim thay trong chuoi '''+ S +'''')
else
ShowMessage('Chuoi '''+ SubStr +''' bat dau tai chi so '+ IntToStr(m_Index) +
' cua chuoi '''+ S +'''');
end;
Khi chy chng trnh ta c 2 kt qu hin th ln lt nh sau:

Hnh 17:

Tm thy v tr, m_Index =13

Hnh 18:

Khng tm thy, m_Index = 0

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 239

Chng 10: Kiu Chui k t


* Sau y l cc v d minh ha v chng chui.
V d 15: Thit k form v vit code gii bi ton: Nhp vo mt chui k t bt
k t bn phm. Chuyn i chui va nhp sang dng tOGGLE cASE.
Nhp vo gi tr n, hy ct n t cui ca s, nu n nhp khng tha mn so
vi s, thng bo li: n khng tha.
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Hnh 19:

Tn cc i tng v giao din chng trnh

- on code ca chng trnh:


unit untCatPhai;
interface

//Tn unit file

uses
Windows, Messages, SysUtils, Variants,
Controls, Forms, Dialogs, StdCtrls;

Classes,

Graphics,

type
TfrmCatTu = class(TForm)
edtChuoi: TEdit;
Label1: TLabel;
btnCat: TButton;
edtN: TEdit;
Label2: TLabel;
edtKQ: TEdit;
Label3: TLabel;
btnDong: TButton;
btnChuyen: TButton;

Trang 240

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 10: Kiu chui k t


edtChuyen: TEdit;
procedure btnCatClick(Sender: TObject);
procedure btnDongClick(Sender: TObject);
procedure btnChuyenClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmCatTu: TfrmCatTu;
implementation
{$R *.dfm}
procedure TfrmCatTu.btnCatClick(Sender: TObject);
var i, j, n, dem, sotu :integer;
s: string;
begin
s := edtChuyen.Text;
sotu := 0;
for i:=1 to length(s) do
if s[i]=#32 then inc(sotu);
sotu := sotu + 1;
if TryStrToInt(edtN.Text,n) and (n>=1) and (n<=sotu) then
begin
dem:=0;
j:=length(s); //Bat dau tu ben phai...
while (dem < n) and (j>=1) do
begin
if s[j]=#32 then inc(dem);
dec(j); //...va tro nguoc ben trai
end;
edtKq.Text := Copy(s,j+2,length(s)-j);
end
else
edtKq.Text := 'Gia tri n nhap vao khong thoa bai toan.';
end;
procedure TfrmCatTu.btnDongClick(Sender: TObject);
begin
Close;
end;

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 241

Chng 10: Kiu Chui k t


procedure TfrmCatTu.btnChuyenClick(Sender: TObject);
var s: string;
i: integer;
begin
s := edtChuoi.Text;
s := Trim(s);
while pos(#32#32,s)>0 do delete(s,pos(#32#32,s),1);
s := UpperCase(s);
s[1] := Chr(ord(s[1])+ 32); //i k t th nht sang thng
for i:=2 to length(s)-1 do
if s[i]=#32 then s[i+1] := Chr(ord(s[i+1])+ 32);
edtChuyen.Text := s;
end;
end.

- Lu d n vo th mc: S:\ViduCatPhai
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Hnh 20:

Kt qu chng trnh

V d 16: Thit k form v vit code gii bi ton: Nhp vo mt chui s. Cho
bit chui c bao nhiu t. Nhp vo mt t mi, xt xem t mi ny xut
hin bao nhiu ln trong chui s?
Hng dn:
- To d n mi: File/New/Application
- t thuc tnh name cho cc i tng ca chng trnh nh ca s Object
TreeView, v thit k form nh hnh sau:

Trang 242

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 10: Kiu chui k t

Hnh 21:

Tn cc i tng v giao din chng trnh

- on code ca chng trnh:


unit untDemTu;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TfrmVidu = class(TForm)
edtChuoi: TEdit;
Label1: TLabel;
btnSLXH: TButton;
edtTuMoi: TEdit;
Label2: TLabel;
edtSLXH: TEdit;
Label3: TLabel;
btnSoTu: TButton;
edtSoTu: TEdit;
Label4: TLabel;
procedure btnSLXHClick(Sender: TObject);
procedure btnSoTuClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmVidu: TfrmVidu;
s: string; //bien chung.
implementation
B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 243

Chng 10: Kiu Chui k t


{$R *.dfm}
procedure TfrmVidu.btnSLXHClick(Sender: TObject);
var slxh :integer;
tumoi, s2, tu :string;
begin
s2 := s; //Lay chuoi da cat bo khang trang thua.
s2 := s2 + #32; //them phan tu cam canh.
tumoi := trim(edtTuMoi.Text);
slxh := 0;
while s2 <>'' do //s <> rng
begin
tu := copy(s2,1, pos(#32,s2)-1);
if tumoi = tu then inc(slxh);
delete(s2,1, pos(#32,s2));
end;
edtSlxh.Text := IntToStr(slxh);
end;
procedure TfrmVidu.btnSoTuClick(Sender: TObject);
var i, sotu: integer;
begin
if edtChuoi.Text = '' then ShowMessage('Ban da nhap chuoi rong.
Hay nhap lai!')
else
begin
s := trim(edtChuoi.Text;);
while pos(#32#32,s)>0 do delete(s,pos(#32#32,s),1);
sotu := 0;
for i:=1 to length(s) do
if s[i]=#32 then inc(sotu);
edtSoTu.Text := IntToStr(sotu + 1);
end;
btnSLXH.Enabled := True;
end;
procedure TfrmVidu.FormCreate(Sender: TObject);
begin
btnSLXH.Enabled := False;
end;
end.

- Lu d n vo th mc: S:\ViduDemTu
- Bin dch v chy chng trnh, ta c kt qu nh sau:

Trang 244

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Chng 10: Kiu chui k t


- Trng hp t mi c xut hin 2 ln trong chui:

Hnh 22:

T m c xut hin trong chui nhp

- Trng hp t mi khng xut hin ln no trong chui:

Hnh 23:

T nh khng xut hin trong chui nhp

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 245

 Ph lc v Chng trnh Simple view picture ----

PH LC
Phn ny gii thiu mt s thnh phn thng dng v chng trnh hin th nh n
gin Simple view picture:
1. Th System

Thnh phn TTimer: ng h bm gi. Biu tng:


Thuc tnh

ngha

Name

t tn i tng

Enable

Nu c gi tr true (mc nhin) th t ng bt s kin bm gi - OnTimer.


Cn False th khng.

Interval

Khong thi gian (milliseconds) kch hot s kin OnTimer

S kin OnTimer: S kin c kch hot khi ht khong thi gian xc nh trong Interval
2. Th Additional

Thnh phn TImage: Hin th nh. Biu tng:


Thuc tnh

ngha

Name

t tn i tng

Picture

Xc nh hnh c np (load) vo hin th

V mt s s kin quen thuc nh: OnClick, OnContextPopup, OnChange...


3. Th Win 3.1

a. TFileListBox: Hp danh sch lit k cc tp tin. Biu tng:


Thuc tnh

ngha

Name

t tn i tng

Mask

Mt n lc tp tin c hin th trong n nh: *.jpg;*.gif;*.bmp

Cursor

Cc kiu con tr mouse khi bn tr n i tng. Mc nhin l crDefault.

Trang 246

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

 Ph lc v Chng trnh Simple view picture ---V mt s s kin quen thuc nh: OnClick, OnContextPopup, OnChange...
b. TFilterComboBox: Hp lit k th lc kiu tp tin. Biu tng:
Thuc tnh

ngha

FileList

lc cc kiu tp tin c hin th trong Hp danh sch lit k cc tp tin.


Bn Click chn tn i tng FileListBox (flbPics) gn kt vo.

Cursor

Cc kiu con tr mouse khi bn tr n i tng. Mc nhin l crDefault.

Filter

Cc kiu tp tin lc. Bn s dng cc k t i din nhm li mt s


loi tp tin nh: *.doc, *.dpr, *.jpg, Bn Click vo biu tng son
tho cc kiu lc thng qua ca s "Filter Editor".

V mt s s kin quen thuc nh: OnClick, OnContextPopup, OnChange...

c. TDirectoryListBox: Hp danh sch lit k cc th mc. Biu tng:


Thuc tnh

ngha

FileList

hin th cc tp tin trong Hp danh sch lit k cc tp tin. Bn Click


chn tn i tng FileListBox (flbPics) gn kt vo.

TextCase

Hin th tn a l ch in hoa (tcUpperCase) hay thng (tcLowerCase)

Cursor

Cc kiu con tr mouse khi bn tr n i tng. Mc nhin l crDefault.

DirLabel

gn tn i tng nhn dng cho vic hin thi ng dn (path) khi bn


chn m (DClick) th mc lm vic .

V mt s s kin quen thuc nh: OnClick, OnContextPopup, OnChange...


d. TDriveComboBox: Hp lit k th cc a. Biu tng:
Thuc tnh

ngha

DirList

hin th cc th mc vo trong hp danh sch lit k cc th mc. Bn


Click chn tn i tng DirectoryListBox (dlbPics) gn kt vo.

TextCase

Hin th tn a l ch in hoa (tcUpperCase) hay thng (tcLowerCase)

Cursor

Cc kiu con tr mouse khi bn tr n i tng. Mc nhin l crDefault.

V mt s s kin quen thuc nh: OnClick, OnContextPopup, OnChange...


Phn ny ch nhm gii thiu cc thnh phn c bn trong Windows. Trong Delphi
cn c cc thnh phn khc u vit hn l cc thnh phn trn th Dialogs, th
Simples,... Bn c th d dng vit li chng trnh ny thng qua cc thnh phn trong 2
th ny.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 247

 Ph lc v Chng trnh Simple view picture ---Trong tng lai, B mn Tin hc ng Dng - Khoa Khoa Hc T Nhin c th s
vit thm phn Delphi nng cao gip cc bn khai thc sc mnh ca Delphi nh lp
trnh v C s d liu, lp trnh Mng, lp trnh Web, Tr chi,...
Chng trnh hin th hnh nh n gin - Simple view picture, hin th cc tp tin
hnh nh dng .jpg, .wmf, .bmp. Ngoi ra chng trnh cng to dng ch chy (Marquee)
trn thanh tiu ca form theo hng t phi sang tri theo hng nhn (tri sang phi
theo hng mn hnh), v c hin th ng h chy.
Chng trnh hin th hnh nh n gin - Simple view picture:
frmViewPics
grbPics
dcbPics
dlbPics
flbPics
fcbPics
lblClock
pnlPics

:
:
:
:
:
:
:
:

TForm
TGroupBox
TDriveComboBox
TDirectoryListBox
TFileListBox
TFilterComboBox
TLabel
TPanel

imgView

TImage

tmrClock

TTimer

Tn ca cc i tng

Trang 248

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

 Ph lc v Chng trnh Simple view picture ----

on lnh ca chng trnh nh sau:


unit untViewPics;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, ExtCtrls, StdCtrls, jpeg, ExtDlgs,
FileCtrl;
type
TfrmViewPics = class(TForm)
tmrClock: TTimer;
pnlPics: TPanel;
imgView: TImage;
grbPics: TGroupBox;
dcbPics: TDriveComboBox;
fcbPics: TFilterComboBox;
dlbPics: TDirectoryListBox;
flbPics: TFileListBox;
lblClock: TLabel;
procedure tmrClockTimer(Sender: TObject);
procedure flbPicsClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 249

 Ph lc v Chng trnh Simple view picture ---{ Public declarations }


end;
var
frmViewPics: TfrmViewPics;
implementation
{$R *.dfm}
procedure TfrmViewPics.tmrClockTimer(Sender: TObject);
begin
lblClock.Caption := 'ng h: ' + TimeToStr(Time);
Caption:= Copy(Caption,2,length(Caption)-1)+Copy(Caption,1,1);
end;
procedure TfrmViewPics.flbPicsClick(Sender: TObject);
begin
try
imgView.Picture.LoadFromFile(flbPics.FileName);
except
on E: Exception do ShowMessage('Sorry! Tap tin anh nay bi SAI
kieu hoac KHONG duoc ho tro!...')
end;
end;
procedure TfrmViewPics.FormCreate(Sender: TObject);
begin
dcbPics.DirList := dlbPics;
dlbPics.FileList := flbPics;
flbPics.Mask := '*.jpg;*.gif;*.bmp';
fcbPics.FileList := flbPics;
fcbPics.Filter := 'All (*.jpg, *.wmf, *.bmp)|
*.jpg;*wmf;*.bmp|All files (*.*)|*.*';
lblClock.Font.Color := clTeal;
lblClock.Font.Name := 'VNarial';
{Delphi7 khong ho tro
font Unicode. Con Delphi8 thi ok...}
lblClock.Font.Size := 10;
lblClock.Font.Style := [fsBold];
imgView.Center := True;
imgView.Proportional := True;
imgView.Stretch := False;
frmViewPics.Caption:='Chuong trinh hien thi hinh anh don gian Simple view picture... ';
frmViewPics.WindowState := wsMaximized;
pnlPics.Color := clGradientActiveCaption;
tmrClock.Enabled := True;
tmrClock.Interval := 150;
end;
end.
Trang 250

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

 Ph lc v Chng trnh Simple view picture ---- Lu vo trong th mc S:\Simple view picture
- Bin dch v chy ta c hnh nh nh sau:

Chng trnh Simple view picture.

B mn Tin Hc ng Dng Khoa Khoa Hc T Nhin Trng HCT

Trang 251

 Ti liu tham kho & Bn quyn tc gi ----

TI LIU THAM KHO


1. Borland IDD - JM, MM, HM, CC, JG (2005), Object Pascal Language
Guide.
2. http://delphi.about.com
3. John Barrow, Linda Miller, Katherine Malan, Helene Gelderblom (2005),
Introducing Delphi Programming: Theory through Practice (Paperback),
Oxford University Press, USA.
4. John Ayres (2002), The Tomes of Delphi Win32 Core API Windows 2000
Edition, Wordware Publishing, Inc.
5. Julian Bucknall (2001), The Tomes of Delphi Algorithms and Data
Structures, Wordware Publishing, Inc.
6. L Phng Lan, Hong c Hi (2000), Gio trnh l thuyt v bi tp
Borland Delphi, NXB Gio Dc, H Ni.
7. Marco Cantu (2003), Mastering Delphi 7, SyBex.

BN QUYN TC GI
Ti liu ny c vit nhm phc v cho vic hc tp ca sinh vin giai on u
lm quen v hc cch lp trnh s kin nh th no thng qua ngn ng lp trnh Delphi,
mi trng xy dng ng dng tc thi RAD. Tc gi s upload ti liu ny ln internet
trong thi gian gn thng qua file: Giao trinh lap trinh can ban B Delphi 7.pdf. Mi
thng tin cn trao i, xin lin h tc gi thng qua a ch email: vdlinh@ctu.edu.vn.
Cn th, 19 November 2010, V Duy Linh.

Trang 252

B mn Tin Hc ng Dng - Khoa Khoa Hc T Nhin Trng HCT

You might also like