giÁo trÌnh lẬp trÌnh cĂn bẢn tn035

258
TRƯỜNG ðẠI HỌC CẦN THƠ KHOA KHOA HỌC TỰ NHIÊN Giáo trình lý thuyết LẬP TRÌNH CĂN BẢN B MSMH: TN035 (Áp dng cho chương trình tín ch) Biên soạn: ThS. VŨ DUY LINH ThS. NGUYỄN NHỊ GIA VINH ThS. LÊ THỊ DIỄM Năm 2010

Upload: hoc-huynh-ba

Post on 29-Nov-2014

1.050 views

Category:

Documents


4 download

DESCRIPTION

 

TRANSCRIPT

  • 1. TR NG I H C C N TH KHOA KHOA H C T NHIN Gio trnh l thuy t LP TRNH CN BN B MSMH: TN035 (p d ng cho chng trnh tn ch ) Bin so n: ThS. V DUY LINH ThS. NGUY N NH GIA VINH ThS. L TH DI M Nm 2010

2. B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang i M C L C CHNG 1: D LI U V THU T TON................................................................1 I. D li u v thng tin: .............................................................................................1 I.1. Khi ni m.......................................................................................................1 I.2. S t ng qut c a m t qu trnh x l thng tin.........................................1 II. T bi ton t i chng trnh................................................................................1 II.1. Cc giai o n gi i m t bi ton trn my tnh i n t ..................................1 II.2. Thu t ton (Algorithm).................................................................................2 CHNG 2: BORLAND DELPHI .............................................................................5 I. T ng quan v Delphi.............................................................................................5 I.1. Delphi l g.....................................................................................................5 I.2. Cc phin b n c a Delphi ..............................................................................5 II. Mi tr ng pht tri n tch h p (IDE) c a Delphi................................................5 II.1. C a s chnh c a Delphi...............................................................................6 II.2. Thanh th c n chnh v thanh cng c .......................................................6 II.3. B ng ch a cc thnh ph n c a Delphi (Component Palette) .......................7 II.4. C a s thi t k bi u m u (Form Designer) v C a s so n th o m l nh (Code Editor) .................................................................................................8 II.5. C a s thu c tnh v s ki n c a i t ng (Object Inspector) ...................9 II.6. C a s li t k cc i t ng d ng cy (Object TreeView).........................10 III. C u trc m t d n Delphi ...............................................................................10 III.1. T p tin d n: (Delphi project file) ...........................................................10 III.2. Cc t p tin ch a m l nh (Unit file)..........................................................11 III.3. Cc t p tin c t bi u m u (Form file).....................................................11 III.4. Cc t p tin ti nguyn (Windows Resource File)......................................13 IV. Cc thao tc c b n trn Delphi .......................................................................14 IV.1. M m t d n m i.....................................................................................14 IV.2. Lu d n ..................................................................................................14 IV.3. Lu Form (t p tin unit) v i tn khc.........................................................18 IV.4. Lu d n v i tn khc..............................................................................18 IV.5. ng d n................................................................................................18 IV.6. Thot kh i Delphi .....................................................................................18 CHNG 3: CC THNH PH N C B N C A NGN NG DELPHI (OBJECT PASCAL).............................................................................................19 I. B ch vi t.........................................................................................................19 II. T kha..............................................................................................................19 III. Tn danh hi u t t.........................................................................................20 IV. H ng.................................................................................................................20 IV.1. Khi ni m..................................................................................................20 IV.2. H ng tr ......................................................................................................20 3. Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCTii IV.3. H ng nh ki u: .........................................................................................21 V. Ki u (Type)........................................................................................................21 V.1. nh ngha ..................................................................................................21 V.2. Cch khai bo .............................................................................................21 VI. Bi n ..................................................................................................................22 VII. Bi u th c.........................................................................................................22 VII.1. nh ngha................................................................................................22 VII.2. Th t u tin...........................................................................................22 VIII. Chuy n ki u (Typecast).................................................................................23 IX. L i ch thch v cc ch d n bin d ch.............................................................24 X. C u trc m t d n ch Form (Form Application)....................................25 CHNG 4: CC KI U D LI U S C P CHU N, L NH N.......................26 I. Cc ki u d li u s c p (Simple type) ................................................................26 I.1. Ki u s nguyn (Integer)..............................................................................26 I.2. Ki u k t (Char) .........................................................................................26 I.3. Ki u s th c (Real type)...............................................................................30 I.4. Ki u logic (Boolean)....................................................................................34 II. Cu l nh (statement) ..........................................................................................34 III. L nh n (Simple statement) ...........................................................................35 IV. L nh gn (Assignment statement)....................................................................35 V. L nh g i th t c v hm ....................................................................................35 VI. L nh Goto.........................................................................................................37 CHNG 5: L P TRNH X L S KI N CC THNH PH N TRONG GIAO DI N DELPHI....................................................................................38 I. L p trnh x l s ki n ........................................................................................38 I.1. L p (Class) v i t ng (Object) ...............................................................38 I.2. Thu c tnh ....................................................................................................43 I.3. Phng th c (Method).................................................................................44 I.4. S ki n (Event).............................................................................................44 I.5. X l s ki n (Event Handlers)....................................................................45 I.6. Trnh h tr m l nh (Code Completion /IntelliSense)................................46 II. Sinh m t ng v m t s cch s a l i ............................................................46 II.1. Cch t ng sinh m (generate code) trong Delphi .................................46 II.2. Cch s a l i sinh m trong Delphi.............................................................49 II.3. Thm t p tin unit vo d n........................................................................54 II.4. Vi t l nh sau khi thm unit form vo d n................................................58 II.5. G b t p tin unit form ra kh i d n .........................................................62 III. Bi u m u (TForm)............................................................................................62 IV. Cc thnh ph n (Component) giao di n ph bi n............................................68 IV.1. Nhn (TLabel)...........................................................................................68 IV.2. H p vn b n (TEdit)..................................................................................71 4. B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang iii IV.3. Nt l nh (TButton)....................................................................................78 IV.4. Nhn v H p nh p (TLabeledEdit)...........................................................80 IV.5. H p nh d u hay h p ki m (TCheckbox) ...............................................81 IV.6. Nt ty ch n (TRadioButton) ...................................................................87 IV.7. Nhm ty ch n (TRadioGroup)................................................................88 IV.8. Vng vn b n (TMemo)............................................................................91 IV.9. H p danh sch (TListBox)........................................................................96 IV.10. TSpinEdit ..............................................................................................100 IV.11. H p danh sch nh d u (TCheckListBox) ..........................................101 IV.12. H p danh sch cc kho (TValueListEditor)........................................107 IV.13. H p li t k th (TComboBox)...............................................................113 IV.14. L i chu i (TStringGrid)......................................................................118 IV.15. B ng ch a cc thnh ph n (TPanel)......................................................124 IV.16. Thanh th c n chnh (TMainMenu)....................................................125 IV.17. Th c n (TMenuItem) ........................................................................126 IV.18. Menu i t ng (TPopupMenu) ...........................................................134 CHNG 6: CC L NH C C U TRC.............................................................138 I. L nh ghp (Compound statement)....................................................................138 II. L nh c u trc r nhnh ....................................................................................138 II.1. L nh if ... then ... v l nh if ... then ... else................................................138 II.2. L nh Case ... of.........................................................................................146 III. C u trc l nh l p.............................................................................................149 III.1. L nh l p c s l n xc nh tr c ...........................................................149 III.2. L nh l p c s l n khng xc nh tr c ................................................155 CHNG 7: CHNG TRNH CON....................................................................164 I. Khi ni m..........................................................................................................164 II. Hm..................................................................................................................165 III. Th t c............................................................................................................172 IV. Truy n tham s ...............................................................................................175 IV.1. nh ki u v khng nh ki u cho tham s hnh th c.............................175 IV.2. Truy n b ng tham tr (Value parameter).................................................177 IV.3. Truy n b ng tham bi n (Variable parameter).........................................179 IV.4. Truy n b ng tham s h ng (Constant parameter) ...................................181 IV.5. Truy n b ng tham s xu t (Out parameter) ............................................184 V. Chng trnh con quy.................................................................................190 CHNG 8: KI U LI T K, MI N CON, T P H P ..........................................194 I. Ki u v h ng li t k (Enumerated scalar type) ..............................................194 I.1. Khi ni m...................................................................................................194 I.2. Cch khai bo: C hai cch khai bo l gin ti p v tr c ti p ...................194 I.3. M t s hm chu n p d ng cho ki u v h ng .........................................195 5. Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCTiv II. Ki u mi n con (Subrange types)......................................................................196 II.1. Khi ni m..................................................................................................196 II.2. Cch khai bo............................................................................................196 III. Ki u t p h p (Set)...........................................................................................197 III.1. Khi ni m ................................................................................................197 III.2. Cch khai bo ..........................................................................................197 III.3. M t t p h p...........................................................................................198 III.4. M t s php ton trn ki u t p h p .........................................................198 CHNG 9: KI U M NG.....................................................................................208 I. Khi ni m v m ng (Array-type data) ..............................................................208 II. M ng tnh (Static array)...................................................................................208 II.1. M ng m t chi u (One-Dimensional array)...............................................208 II.2. M ng nhi u chi u (Multi-Dimensional array)..........................................213 II.3. M ng hai chi u..........................................................................................215 III. M ng ng (Dynamic array) ..........................................................................222 III.1. M ng ng m t chi u.............................................................................222 III.2. M ng ng nhi u chi u ...........................................................................227 III.3. H ng m ng...............................................................................................228 CHNG 10: KI U CHU I K T ......................................................................229 I. Cc lo i chu i k t trong Object Pascal ..........................................................229 I.1. Chu i ng n (ShortString) ...........................................................................229 I.2. Chu i di 1 byte (AnsiString) ....................................................................230 I.3. Chu i di 2 byte (WideString) ...................................................................232 II. Cc thao tc trn chu i.....................................................................................232 II.1. Php ton c ng chu i................................................................................232 II.2. Php ton so snh......................................................................................232 II.3. Cc th t c v hm chu n x l chu i k t .............................................234 PH L C........ .........................................................................................................246 TI LI U THAM KH O ..........................................................................................252 B N QUY N TC GI ............................................................................................252 6. Chng 1: D li u v Thu t ton B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 1 CHNG 1: D LI U V THU T TON I. D li u v thng tin: I.1. Khi ni m D li u (Data) l cc s ki n khng c c u trc, khng c ngha r rng t i th i i m xt. Thng tin (Information) l m t khi ni m tr u t ng c th hi n qua cc thng bo, cc bi u hi n,... em l i m t nh n th c ch quan cho m t i t ng nh n tin. Thng tin l d li u c x l xong, mang ngha r rng t i th i i m xt. M t h th ng thng tin (Information system) l m t ti n trnh ghi nh n d li u, x l n v cung c p t o nn d li u m i c ngha thng tin, lin quan m t ph n n m t t ch c, tr gip cc ho t ng lin quan n t ch c. I.2. S t ng qut c a m t qu trnh x l thng tin M i qu trnh x l thng tin b ng my tnh hay b ng con ng i u c th c hi n theo m t quy trnh sau: D li u c nh p u vo (Input). My tnh hay con ng i s th c hi n qu trnh x l no nh n c thng tin u ra (Output). Hnh 1: M hnh t ng qut qu trnh x l thng tin II. T bi ton t i chng trnh Trong cu c s ng, chng ta c r t nhi u bi ton c n ph i gi i quy t. S d ng my tnh i n t gi i cc bi ton l i u r t hi u qu do kh nng tnh ton c a my tnh. my tnh c th hi u c, chng ta c n ph i c nh ng b c gi i c th c a bi ton m t cch ng logic, t s d ng m t ngn ng chng trnh hay ph n m m l p trnh h ng d n my tnh th c hi n cc thao tc c n thi t tm ra k t qu c a bi ton. II.1. Cc giai o n gi i m t bi ton trn my tnh i n t gi i quy t m t bi ton trn my tnh i n t , c n qua cc giai o n sau: - Tm hi u m c tiu chnh c a bi ton: d li u nh p vo v k t qu xu t. - Xy d ng m t chu i thao tc tnh ton theo m t th t logic, g i l thu t gi i. - L p chng trnh di n t chi ti t cc b c tnh theo thu t gi i. - Nh p chng trnh vo my tnh, thng d ch v ch y th s a ch a l i. - Th c hi n gi i bi ton v i s li u thu th p c v ghi nh n k t qu . NH P D LI U (INPUT) X L (PROCESSING) XU T D LI U (OUTPUT) LU TR (STORAGE) 7. Chng 1: D li u v Thu t ton Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT2 - Th nghi m v i nhi u tr ng h p d li u nh p khc nhau c a bi ton chng trnh ki m tra ng trong m i tr ng h p t ng qut. - Phn tch k t qu v hon ch nh chng trnh. Trong cc b c trn, vi c thi t k thu t ton l giai o n quan tr ng nh t. II.2. Thu t ton (Algorithm) II.2.1. nh ngha Thu t ton l m t phng php trnh by cc b c gi i quy t m t hay nhi u bi ton theo m t ti n trnh xc nh. II.2.2. c tnh c a thu t ton - Tnh xc nh: Cc thao tc c a thu t ton l r rng v ch c ch n th c hi n c d n n k t qu no . - Tnh h u h n v d ng: thu t ton ph i c m t s b c gi i nh t nh v cu i cng ph i c k t thc i m d ng. - Tnh k t qu : V i d li u h p l, thu t ton ph i cho k t qu th a yu c u. - Tnh ph d ng: Thu t ton ph i gi i c nhi u bi ton c cng c u trc v i cc d li u khc nhau v u d n n m t k t qu mong mu n. - Tnh hi u qu : Thu t gi i ph i n gi n, d hi u trong cc b c gi i, t i thi u ho b nh v th i gian th c hi n. - Tnh hnh th c: Cc b c trong thu t ton l my mc, ngha l n ph i th c hi n ng nh quy nh m khng c n bi t n m c tiu cu i cng. II.2.3. Cc phng php bi u di n thu t ton Thu t ton c th c di n gi i thng qua 3 phng php ph bi n, l s d ng ngn ng t nhin, ngn ng gi v ngn ng s (lu ). II.2.3.1 Ngn ng t nhin L cch di n t t nhin c a con ng i b ng ngn ng c a mnh m t cc b c gi i bi ton. V d 1: M t thu t ton theo ngn ng t nhin c a phng trnh ax + b = 0 - B c 1: Nh p vo 2 h s a v b. - B c 2: Xt i u ki n a = 0? N u ng l a = 0, th i n b c 3, n u khng (ngha l a 0) th i n b c 4. - B c 3: Xt i u ki n b = 0? N u b = 0, th bo phng trnh c v s nghi m. i n b c 5. N u b 0, thng bo phng trnh v nghi m. i n b c 5. - B c 4: Thng bo phng trnh c m t nghi m duy nh t l x = - b/a. - B c 5: K t thc thu t ton. 8. Chng 1: D li u v Thu t ton B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 3 II.2.3.2 Ngn ng gi L cch di n t cc b c gi i c a bi ton thng qua m t s cu l nh c c u trc (nh cu l nh if..then..else, for..to..do, while..do, repeat..until) V d 2: M t thu t ton theo ngn ng gi c a phng trnh b c nh t ax + b = 0 - B c 1: Nh p vo 2 h s a v b. - B c 2: if (a=0) then if (b=0) then phng trnh v s nghi m else phng trnh v nghi m else phng trnh c m t nghi m duy nh t x = -b/a - B c 3: K t thc thu t ton. II.2.3.3 Ngn ng lu (Flowchart) L cch di n t cc b c gi i c a bi ton thng qua cc k hi u c a lu . M t s qui c k hi u lu : K hi u M t i m b t u ho c k t thc thu t ton Thao tc nh p hay xu t Kh i x l cng vi c Kh i quy t nh ch n l a i m n i Chu n b T p h p cc t p tin d li u Kh i chng trnh con Cc ghi ch, gi i thch Dng tnh ton, thao tc c a chng trnh Hnh 2: Cc k hi u lu 9. Chng 1: D li u v Thu t ton Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT4 V d 3: M t thu t ton theo ngn ng lu c a phng trnh ax + b = 0 Hnh 3: Lu thu t ton PTB1 B t u Nh p a,b a=0 b=0 Phng trnh v s nghi m Phng trnh v nghi m x := -b/a K t thc ng ng Sai Sai Xu t nghi m x 10. Chng 2: Borland Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 5 CHNG 2: BORLAND DELPHI I. T ng quan v Delphi I.1. Delphi l g Delphi l m t ngn ng l p trnh c p cao, c trnh bin d ch hon h o, h tr m nh v cc ki u d li u c c u trc v thi t k h ng i t ng d a trn n n t ng ngn ng l p trnh h ng i t ng (OOP: Object-Oriented Programming) c a Borland Pascal. Ngy nay, Delphi c pht tri n thnh mi tr ng xy d ng ng d ng t c th i RAD (Rapid Application Development). T nh ng cng c c a RAD, b n c th gi i quy t nh ng v n ph c t p trong qua trnh pht tri n ph n m m nh: l p trnh ng d ng v c s d li u (Database), l p trnh m ng v Internet (Internet/Networking), l p trnh Multimedia (Animation, sound), l p trnh tr chi (Game) cng nh h a (Graphic) ho c l p trnh h th ng, v.v khng nh ng trn n n Windows m cn cho c Linux v .NET. Trong gio trnh ny, chng ti ch gi i thi u cc khi ni m c a Delphi trong ph m vi h i u hnh Windows. V i kh nng m nh nh v y c a Delphi, b n an tm khi dng n tri n khai cc ng d ng c a b n quy m nh hay l n. i u c n quan tm Delphi l m t ngn ng r t thn thi n v i ng i dng, ph h p cho nh ng ng i b t u lm quen v i n cng nh nh ng nh l p trnh chuyn nghi p. V y l gio trnh c so n dnh cho i t ng l cc sinh vin b t u h c Tin h c i cng thng qua ngn ng Delphi. Do v y, gio trnh ny ch gi i thi u nh ng khi ni m cn b n nh m gip cho ng i h c c m t s ki n th c nh t nh v n d ng vo gi i cc bi ton ho c vi t nh ng chng trnh ng d ng nh . Cc chng trong gio trnh ny s trnh by cc ph n t c b n c a Delphi t o m t chng trnh ch y trn n n Windows, chnh l mi tr ng pht tri n tch h p IDE (Integrated Development Environment) v ngn ng h ng i t ng Borland Pascal. Cc b n s c h c cch thi t k (Design), pht tri n (Develop) hay vi t m l nh (Code), v ki m tra l i (Test) chng trnh ng d ng b i vi c s d ng Delphi. I.2. Cc phin b n c a Delphi Ti n thn c a Delphi chnh l ngn ng i t ng Borland Pascal, v n ngy nay Delphi c m t qu trnh pht tri n v ng m nh t phin b n 1 (Delphi1) vo nm 1995, n phin b n 8 (Delphi for .NET) nm 2005. Trong gio trnh ny, chng ti th ng nh t trnh by v i cc b n Delphi 7. y l phin b n ph h p nh t v d dng nh t hi n nay cho cc b n, i t ng l cc sinh vin h c Tin h c i cng. II. Mi tr ng pht tri n tch h p (IDE) c a Delphi Mi tr ng so n th o v thi t k ng d ng c a Delphi 7 chia ra lm 5 ph n: C a s chnh c a chng trnh Delphi, c a s thi t k bi u m u (Form designer), c a s li t k cc thnh ph n, i t ng d ng cy (Object TreeView), c a s thi t l p thu c tnh i t ng (Object Inspector), v c a s so n th o m l nh (Code Editor). V i mi tr ng IDE ny, b n s c m t giao di n (Interface) thi t k (Design), bin d ch (Compile) v g l i (Debug) d n m b n ang pht tri n. 11. Chng 2: Borland Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT6 Hnh 1: Giao di n c a d n m i t o trong Delphi 7 C a s chnh c a Delphi 7 C a s thi t k bi u m u C a s li t k cc i t ng d ng cy C a s thi t l p cc thu c tnh v s ki n c a i t ng C a s so n th o m l nh II.1. C a s chnh c a Delphi C a s chnh c a Delphi chnh l c a s c thnh tiu ch a tn d n (Project name) m b n ang pht tri n, n bao g m th c n chnh (Main menu), thanh cng c (Toolbar), v b ng thnh ph n (Component palette). II.2. Thanh th c n chnh v thanh cng c II.2.1. Thanh th c n chnh Bao g m cc th c n th xu ng (Drop-down menu) nh: File, Edit, Search, View, v Help. Trong m i menu th xu ng c nhi u ch c nng khc nhau nh: m m t d n m i, lu d n, bin d ch, g l i, ch y chng trnh, m gio trnh s trnh by chi ti t ph n sau. 12. Chng 2: Borland Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 7 Hnh 2: Thanh th c n chnh II.2.2. Thanh cng c (Toolbars) Trong Delphi c nhi u thanh cng c , nh: thanh cng c chu n (Standard), thanh g l i (Debug), thanh hi n th (View), M i nt (Button) trn thanh cng c th ng l m t thao tc hay m t l nh m khi ta Click vo n s thi hnh, v d nh: Bin d ch (Compile), ch y (Run) ho c k t thc ch y chng trnh (Program Reset), Hnh 3: Cc thanh cng c II.3. B ng ch a cc thnh ph n c a Delphi (Component Palette) Thnh ph n (Component), hay cn c g i l i u khi n, chnh l i t ng c s n trong Delphi m b n c th thao tc trn n trong th i i m thi t k form. C 2 lo i thnh ph n, l thnh ph n tr c quan (visual component): nhn th y khi ch y chng trnh, v thnh ph n khng tr c quan (nonvisual component): khng nhn th y khi ch y chng trnh. M i thnh ph n c m t s tnh ch t ring, v c qu n l thng qua cc thu c tnh (Properties), s ki n (Events) v cc phng th c (Methods). Cc thu c tnh ny gip b n c th qu n l v i u khi n chng trnh c a b n. Khi b n t m t thnh ph n ln form, th n s xu t hi n trong c a s Object TreeView v Object Inspector s c trnh by ph n sau. Trong b ng ch a cc thnh ph n c nhi u th (tab) khc nhau, nh th Standard, Addition, Win32, System, Data Access, ADO, Internet, Rave, Server, Trn m i th ch a cc bi u t ng (icon) i di n cho cc thnh ph n. Hnh 4: B ng ch a cc thnh ph n trong th Standard 13. Chng 2: Borland Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT8 II.4. C a s thi t k bi u m u (Form Designer) v C a s so n th o m l nh (Code Editor) II.4.1. C a s thi t k bi u m u Khi b n t o m t d n m i, mi tr ng pht tri n tch h p IDE c a Delphi s t t o ra m t bi u m u m i (Form) b n ty nghi thi t l p cc gi tr c a thu c tnh d a trn Properties, v cc th t c s ki n d a vo Events, c xc nh trong Object Inspector, cho vi c thi t k chng trnh. Trong h u h t tr ng h p, m t d n th ng c t nh t m t form. Cng v i cc thnh ph n trn b ng cc thnh ph n, b n s thi t k c m t giao di n cho chng trnh m b n ang xy d ng l thn thi n nh t cho ng i s d ng. TLabel (StdCtrls) TEdit (StdCtrls) TButton (StdCtrls) TMemo (StdCtrls) Hnh 5: Form Giai phuong trinh bac nhat v cc Components Cc gi tr c a form v cc gi tr c a cc component t trn form c lu trong t p tin form (form file) v c ph n m r ng .dfm, v i ph n tn c xc nh gi ng nh ph n tn c a n v chng trnh form. T p tin form ny ch a ng cc gi tr c a form cng nh cc gi tr c a cc component m ta t trn form trong qu trnh thi t k . II.4.2. C a s so n th o m l nh M i m t form trong d n c qu n l trong m t t p tin n v chng trnh (Unit file/ Form unit), tn t p tin c a form unit ny c t tn trong qua trnh lu (Save) v c ph n m r ng l .pas, n i dung c a t p tin form unit ny ch a ng cc khai bo thng th ng c a unit (s c p chi ti t ph n sau) cng nh cc hm s ki n tng ng cho form v cc component trn n. 14. Chng 2: Borland Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 9 Hnh 6: C a s so n th o m l nh cho form unit untPtb1.Pas chuy n i gi a c a s so n th o m l nh v i c a s thi t k bi u m u, ta s d ng ch c nng View/Toggle Form/Unit t main menu ho c g phm ch c nng F12. V d 1: Trong project Giai phuong trinh bac nhat trn, ta lu unit file v i tn untPtb1.Pas v form file s c t ng t theo l untPtb1.dfm II.5. C a s thu c tnh v s ki n c a i t ng (Object Inspector) Hnh 7: th Properties c a Form v th Events c a Button C a s Object Inspector c a form hay component u c 2 th : Properties v Events. Th Properties dng xc nh cc tnh ch t c a i t ng ni chung (Form, component) hi n hnh m t cch tr c quan, ch ng h n nh Caption, Name, Position, Visible, Th Events dng l p trnh s ki n: xc nh nh ng p ng c a i t ng khi nh n tc ng 15. Chng 2: Borland Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT10 t chu t (Mouse) ho c bn phm (Keyboard) nh: nh p chu t (OnClick), ng c a s (OnClose), g phm Enter (OnEnter), thng qua cc th t c s ki n. Khi thay i cc gi tr trong th Properties trong qu trnh thi t k , th m l nh tng ng c a i t ng s c thay i theo trong c a s so n th o m l nh. II.6. C a s li t k cc i t ng d ng cy (Object TreeView) Hnh 8: C a s li t k cc i t ng d ng cy trn frmPTB1 Object TreeView li t k cc thnh ph n tr c quan v khng tr c quan m b n t chng trn form hi n hnh. M i th i i m ch c m t form duy nh t c li t k. III. C u trc m t d n Delphi III.1. T p tin d n: (Delphi project file) Hnh 9: T p tin d n prjPtb1.dpr 16. Chng 2: Borland Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 11 Khi b n b t u m m i m t chng trnh ng d ng b ng thao tc: File/New/Application, Delphi 7 s t ng t o ra m t t p tin d n c tn m c nhin ban u l Project1. Khi b n lu d n, Delphi s l n l t nh c b n t tn cho cc form unit v tn d n. v d gi i phng trnh b c nh t trn, form unit c tn l untPTB1.pas v tn d n l prjPTB1.dpr. Ph n tn c a t p tin d n cng chnh l tn c a chng trnh, c khai bo sau t kha program. B n ch : ti n t c a unit file l unt, cn project file l prj. V d nh untPTB1.pas v prjPTB1.dpr hi n th t p tin d n, ta vo ch c nng Project/View Source M l nh ngu n (Source code) c Delphi t ng sinh ra trong t p tin d n bao g m: - Tn chng trnh, c khai bo b i t kha program, y cng chnh l tn chng trnh ng d ng (Application file). - Cc cu l nh ch d n t i cc form v cc unit c s d ng trong d n c khi bo sau t kha uses. - Ch th bin d ch {$R *.res}: s d ng cc t p tin ti nguyn (Resources). - Kh i l nh thn chng trnh chnh, b t u b i t kha begin v k t thc l end. + Initialize : Kh i ng chng trnh ng d ng. + CreateForm : T o form chnh (Main form). + Run : Ch y chng trnh ng d ng. T p tin d n l t p tin trung tm c a m t d n c tri n khai b i Delphi. T p tin ny ch a ng cc tham kh o (Reference) t i t t c cc file khc trong d n v lin k t v i cc form cng nh t p tin n v (Unit file) km theo c a form. Khi chng trnh c thi hnh (Run, execute), n s b t u t t p tin d n ny. T p tin ny c t ng sinh ra, v nh v y, b n khng nn thay i n i dung c a n ngo i tr trong nh ng tr ng h p c n thi t. T p tin d n c lu v i ph n m r ng .dpr III.2. Cc t p tin ch a m l nh (Unit file) Trong m i ng d ng c vi t b i Delphi th ng g m c 1 t p tin d n (Project file) v nhi u t p tin n v chng trnh (Unit file) xem l i ph n "C a s so n th o m l nh" ph n trn. M i khi ta thm vo m i m t form (ho c Data Module, Frame,) th m t t p tin unit s c t o ra. Thng th ng m t d n c tri n khai trong th c t s c nhi u t p tin unit ny. N i dung t p tin unit ny ch a ng m l nh c a chng trnh v c a cc s ki n i u khi n (Event handles) trn form cng trn cc thnh ph n (Component) m chng c t trn n. Unit file c lu v i ph n m r ng l .pas III.3. Cc t p tin c t bi u m u (Form file) N i dung c a t p tin ny xc nh m t cch chi ti t cc tnh ch t hay thu c tnh (Properties) c a form v t t c cc i t ng (ni chung) l p trnh vin thi t k . T p tin ny lun i km v i m t t p tin unit file. Form file c lu v i ph n m r ng l .dfm hi n th n i dung t p tin ny, b n RClick trn form r i ch n View as Text. 17. Chng 2: Borland Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT12 V d 2: Xem n i dung t p tin form file c tn untPTB1.dfm nh sau: T ch thi t k c a form c tn l frmPTB1, b n RClick trn form r i ch n View as Text nh hnh sau: Hnh 10: Chuy n cch hi n th t d ng Form sang d ng Text N i dung c a t p tin untPTB1.dfm d ng vn b n s c nh hnh sau: Hnh 11: Hi n th d ng text c a untPTB1.dfm chuy n i t cch hi n th d ng Text sang d ng Form, ta s d ng ch c nng RClick ch n ch c nng View as Form hay t h p phm Alt+F12: 18. Chng 2: Borland Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 13 Hnh 12: Chuy n cch hi n th d ng Text sang d ng Form. III.4. Cc t p tin ti nguyn (Windows Resource File) T p tin ny cng c t ng sinh ra. N i dung c a n ch a ng cc thng tin v phin b n (Version) cng nh bi u t ng c a ng d ng (Application icon) d ng m nh phn. T p tin ny c ph n m r ng .res Ta c th m t p tin ti nguyn ny ch thi t k (Design) b ng chng trnh Image Editor c km theo b Delphi. Hnh 13: Giao di n chng trnh x l nh Image Editor 19. Chng 2: Borland Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT14 IV. Cc thao tc c b n trn Delphi IV.1. M m t d n m i t o m t d n m i, b n s d ng l nh File/New/Application. Hnh nh m t d n m i t o nh hnh sau: Hnh 14: D n m i t o IV.2. Lu d n M t d n trong Delphi s sinh ra kh nhi u t p tin. Do v y, khi lu d n, b n c n ph i t o ra 1 th m c ch a cc t p tin trong d n . Qu trnh lu d n nh sau: lu m t d n, b n s d ng l nh: File/Save All hay t h p phm Shift+Ctrl+S. Thng th ng b n ph i lu cc form tr c (m i form l m t t p tin unit c ph n m r ng l pas), r i sau m i lu t p tin d n (ph n m r ng l dpr). V d 3: Lu d n hi n th cu "Hello world!..." ch c m t form, vo th m c S:HelloWorld nh sau: Hnh 15: C a s thi t k Form 20. Chng 2: Borland Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 15 - T c a s thi t k , ch n l nh File/Save All, Delphi s xu t hi n ra c a s "Save Uniti File" (v i i =1..n) nh sau: Hnh 16: H p tho i Save Uniti As Click ch n h p li t k th "Save in" ch n a S: nh hnh sau: Hnh 17: H p tho i Save Uniti As: Ch n a 21. Chng 2: Borland Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT16 Ti p n, Click ch n bi u t ng "Create New Folder" t o th m c m i ch a cc t p tin c a d n m b n mu n lu (th m c HelloWorld). Hnh 18: H p tho i Save Uniti As: T o th m c Sau khi t o th m c xong, b n Click nt l nh Open m th m c HelloWorld ra. Hnh 19: H p tho i Save Uniti As: M th m c 22. Chng 2: Borland Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 17 Ti p n, b n g tn t p tin unit m b n mu n lu vo trong h p li t k th "File name", y l tn untHelloWorld.pas, r i Click Save. Hnh 20: H p tho i Save Uniti As: Nh p vo tn t p tin unit n y, Delphi s ti p t c xu t hi n h p tho i "Save Projecti As" b n lu t p tin d n. B n g vo tn t p tin d n vo trong h p li t k th "File name", v d ny l tn prjHelloWorld.dpr, v Click Save. Hnh 21: H p tho i Save Projecti As: Nh p tn t p tin d n 23. Chng 2: Borland Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT18 D n c lu v t tn xong. Sau vi c ny, n u b n c ch nh s a chng trnh, lu l i nh ng s thay i ny, b n ch c n ra l nh File/Save All Delphi t ng lu ton b l i d n. Hnh d i y cho b n th y s l ng cc t p tin trong m t d n Hello World c lu, thng qua c a s Windows Explorer nh sau: Hnh 22: Cc t p tin c a d n Hello Wolrd trong th m c S:HelloWorld IV.3. Lu Form (t p tin unit) v i tn khc B n ch n l nh File/Save As lu. IV.4. Lu d n v i tn khc B n ch n l nh File/Save Project As lu d n. IV.5. ng d n B n ch n l nh File/Close All ng l i ton b d n. IV.6. Thot kh i Delphi Sau khi lu l i ton b d n. thot kh i Delphi, b n s d ng l nh: File/Exit 24. Chng 3: Cc thnh ph n c b n c a ngn ng Delphi (Object Pascal) B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 19 CHNG 3: CC THNH PH N C B N C A NGN NG DELPHI (OBJECT PASCAL) Trong chng ny v chng 4 ti p theo sau, gip cho vi c lm quen v i cc khi ni m c b n c d dng. Gio trnh s xy d ng cc v d theo d ng chng trnh ch vn b n (Text mode) hay khng h tr ho (Console Application). t o m t project m i theo d ng Console Application, b n s d ng ch c nng File/New/Other/Console Application. I. B ch vi t - B 26 ch Latin: o Ch in : A, B, C, ..., X, Y, Z o Ch th ng : a, b, c, ..., x, y, z - B ch s th p phn : 0, 1, 2, 3, ..., 8, 9 - K t g ch n i : _ - Cc k hi u ton h c : +, -, *, /, =, , (, ), [, } II. T kha L cc t ring c a Object Pascal, c ng ngha c xc nh, khng c dng n vo cc vi c khc ho c t tn m i trng v i 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 c a l nh l a ch n: if ... then ... else, case ... of - T kha c a l nh l p: for... to... do, for... downto... do, while... do, repeat... until - T kha i u khi n: with, goto, exit, halt - T kha ton t : and, or, not, in, div, mod D i y l danh sch m t s t kha thng d ng: and array begin case class const div do downto for function goto if implementation interface label mod object record repeat set to try type unit until uses 25. Chng 3: Cc thnh ph n c b n c a ngn ng Delphi (Object Pascal). Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT20 else end finalization finally of procedure program property var while with B ng 1: Cc t kho III. Tn danh hi u t t Trong Delphi t tn cho cc bi n, h ng, ki u, chng trnh con ta dng cc danh hi u (Identifier). Quy t c t tn c a danh hi u trong Delphi l: - Chi u di t i a: 256 k t . - B t u b ng ch ci ho c d u _ (g ch d i); ti p theo c th k t h p s v cc k t khc. - Khng c ch a kho ng tr ng. - Khng trng v i cc t kha. - Khng phn bi t ch hoa v ch th ng. - Cc nh danh l ng nhau c dng d u . (d u ch m) truy xu t. V d 1: - Danh hi u t t h p l : x; s1; delta; pt_bac_2; - Danh hi u t t khng h p l : 1S (b t u b ng s ), Del ta (tn c kho ng tr ng),... IV. H ng IV.1. Khi ni m H ng l m t i l ng c gi tr khng i trong qu trnh ch y chng trnh. Ta dng tn h ng chng trnh c r rng v d s a i. C php khai bo: Const Tn_h ng = bi u_th c_xc_ nh_gi_tr _c a_h ng; IV.2. H ng tr Trong tr ng h p ny th bi u_th c_xc_ nh_gi_tr _c a_h ng l m t tr xc nh. Gi tr c a bi u th c ny s c nh tr m t l n v khng thay i. V d 2: Const MaxSize = 100; Const x = Abs(-100)+Length('Chao ban'); // h ng x =108 Const St = 'Borland'+ ' Delphi'; // h ng St = 'Borland Delphi' 26. Chng 3: Cc thnh ph n c b n c a ngn ng Delphi (Object Pascal) B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 21 Ch : Bi u th c h ng y c th l s , chu i k t , cc h ng true, false, nil, k t h p v i cc ton t thch h p. Bi u th c h ng khng th ch a cc l i g i hm, bi n hay con tr , ngo i tr m t s hm n gi n nh: Abs, Chr, Length, Succ, Odd, IV.3. H ng nh ki u: C th ch a cc gi tr ki u m ng, b n ghi, ki u th t c v ki u con tr . C php khai bo h ng nh ki u: Const Tn_h ng: ki u_d _li u = gi_tr _h ng; V d 3: Const MaxSize : Integer =100; Trong v d trn chng ta khai bo m t h ng c tn l MaxSize, c ki u Integer v mang gi tr b ng 100. Chng ta th y, cch khai bo h ng ki u ny r t gi ng khai bo v kh i t o bi n (chng ta s xem trong ph n bi n). N u ng i l p trnh b t ch th bin d ch {$J+} th h ng c xem nh bi n; t c l chng ta c th thay i gi tr c a h ng lc chng trnh th c thi. H ng m ng, h ng ki u b n ghi, h ng ki u th t c chng ta s tm hi u chi ti t trong cc ph n sau. V. Ki u (Type) V.1. nh ngha Ngoi cc ki u nh s n, Delphi cn cho php ta nh ngha cc ki u d li u khc t cc ki u cn b n theo qui t c xy d ng c a Delphi. V.2. Cch khai bo Type Tn_ki u = M_t _xy_d ng_ki u; V d 4: nh ngha cc ki u d li u ng i dng (ki u d li u m i) v khai bo bi n theo ki u v a nh ngha type //Khai bo ki u ng i dng SoNguyen = integer; Diem = single; Tuoi = 1 .. 100; Color = (Red, Blue, Green); Thu = (ChuNhat, Hai, Ba, Tu, Nam, Sau, Bay); V khi khai bo ki u th ta c quy n s d ng ki u nh ngha khai bo bi n nh sau: var //Khai bo bi n theo ki u ng i dng nh ngha i, j: SoNguyen; dtb: Diem; t: Tuoi; 27. Chng 3: Cc thnh ph n c b n c a ngn ng Delphi (Object Pascal). Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT22 mau: Color; ngay_hoc: Thu; VI. Bi n Bi n l m t c u trc ghi nh c tn ( l tn bi n hay danh hi u c a bi n). Bi n ghi nh m t d li u no g i l gi tr (value) c a bi n. Gi tr c a bi n c th c bi n i trong th i gian s d ng bi n. S truy xu t c a bi n ngha l c gi tr hay thay i gi tr c a bi n c th c hi n thng qua tn bi n. C php khai bo bi n: Var tn_bi n [ho c danh_sch_tn_bi n] : Ki u_bi n; N u chng ta khai bo m t danh sch cc bi n c cng ki u th m i tn bi n cch nhau m t d u ph y. Ki u bi n l m t ki u d li u chu n trong Delphi ho c ki u c nh ngha b i ng i dng. V d 5: var a : extended ; // khai bo a l m t bi n ki u s th c b, c : integer ; // khai bo 2 bi n b, c c ki u s nguyn hten : shortstring; m_Ok: boolean; // khai bo m_Ok l m t bi n ki u logic Chon : char; // khai bo Chon l m t bi n ki u k t C n khai bo cc bi n tr c khi s d ng chng trong chng trnh. Khai bo m t bi n l khai bo s t n t i c a bi n v cho bi t n thu c ki u g. VII. Bi u th c VII.1. nh ngha M t bi u th c l m t cng th c tnh ton bao g m cc php ton (ton t ), h ng, bi n, hm v cc d u ngo c. V d 6: 5 + u * sqrt(t) / sin(pi/2) ; (a=5) and (b7) or (c >= 10); max(x,y); // g i hm Trong : a, b, c, x, y, u, t l cc bi n c khai bo. VII.2. Th t u tin Ton t : Trong Delphi g m c cc ton t c phn chia nh sau: - Ton t s h c : +, -, *, /, div, mod 28. Chng 3: Cc thnh ph n c b n c a ngn ng Delphi (Object Pascal) B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 23 - Ton t logic : not, and, or, xor - Ton t quan h : =, >, ? @ 65 - 90 : cc ch in hoa t A n Z 91 96 : cc d u [] _ ` 97 122 : cc ch th ng t a n z 123 127 : cc d u { | } ~ DEL (xa) H m ASCII 8 bit (ASCII m r ng) c thm 128 k t khc ngoi cc k t nu trn, g m cc ch ci c d u, cc hnh v , cc ng k khung n v khung i v m t s k hi u c bi t. th c hi n cc php ton s h c v so snh, ta d a vo gi tr s th t m ASCII c a t ng k t , ch ng h n: 'A' < 'a' v s th t m ASCII tng ng l 65 v 97. Hm Chr(n): Tr v k t tng ng v i s th t m ASCII n. Hm Ord(ch): Tr v s th t c a k t ch trong b ng m ASCII. V d 1: V i khai bo bi n var ch: char; stt:byte; th cc cu l nh sau s c gi tr nh sau: ch := chr(65); //ch = 'A' stt := ord('A'); //stt = 65 33. Chng 4: Cc ki u d li u s c p chu n, l nh n Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT28 B NG M ASCII v i 128 k t chu n Hex 0 1 2 3 4 5 6 7 0 NUL 0 DLE 16 SP 32 0 48 @ 64 P 80 ` 96 p 112 1 SOH 1 DC1 17 ! 33 1 49 A 65 Q 81 a 97 q 113 2 STX 2 DC2 18 34 2 50 B 66 R 82 b 98 r 114 3 3 DC3 19 # 35 3 51 C 67 S 83 c 99 s 115 4 4 DC4 20 $ 36 4 52 D 68 T 84 d 100 t 116 5 5 NAK 21 % 37 5 53 E 69 U 85 e 101 u 117 6 6 SYN 22 & 38 6 54 F 70 V 86 f 102 v 118 7 BEL 7 ETB 23 39 7 55 G 71 W 87 g 103 w 119 8 BS 8 CAN 24 ( 40 8 56 H 72 X 88 h 104 x 120 9 HT 9 EM 25 ) 41 9 57 I 73 Y 89 I 105 y 121 A LF 10 SUB 26 * 42 : 58 J 74 Z 90 j 106 z 122 B VT 11 ESC 27 + 43 ; 59 K 75 [ 91 k 107 { 123 C FF 12 FS 28 , 44 < 60 L 7692 l 108 | 124 D CR 13 GS 29 - 45 = 61 M 77 ] 93 m 109 } 125 E SO 14 RS 30 . 46 > 62 N 78 ^ 94 n 110 ~ 126 F SI 15 US 31 / 47 ? 63 O 79 _ 95 o 111 DEL 127 Hnh 1: B ng m ASCII chu n 34. Chng 4: Cc ki u d li u s c p chu n, l nh n B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 29 B NG M ASCII v i 128 m r ng Hex 8 9 A B C D E F 0 128 144 160 176 192 208 224 240 1 129 145 161 177 193 209 225 241 2 130 146 162 178 194 210 226 242 3 131 147 163 179 195 211 227 243 4 132 148 164 180 196 212 228 244 5 133 149 165 181 197 213 229 245 6 134 150 166 182 198 214 230 246 7 135 151 167 183 199 215 231 247 8 136 152 168 184 200 216 232 248 9 137 153 169 185 201 217 233 249 A 138 154 170 186 202 218 234 250 B 139 155 171 187 203 219 235 251 C 140 156 172 188 204 220 236 252 D 141 157 173 189 205 221 237 253 E 142 158 174 190 206 222 238 254 F 143 159 175 191 207 223 239 255 Hnh 2: B ng ASCII m r ng 35. Chng 4: Cc ki u d li u s c p chu n, l nh n Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT30 V d 2: Vi t chng trnh in ra 256 k t c a b ng m ASCII: T File/New/Other, DClick vo Console Application m ra 1 d n m i v nh p cc dng l nh hon ch nh nh hnh sau: Hnh 3: Chng trnh in b ng m ASCII Nh n t h p phm Ctrl+F9 bin d ch l i. Nh n phm ch c nng F9 ch y chng trnh, v ta c k t qu ch Console nh sau: Hnh 4: K t qu chng trnh ch Console I.3. Ki u s th c (Real type) I.3.1. Khi ni m Delphi, ki u s th c bi u di n m t t p h p cc s mang d u ch m ng (float, real). Kch th c c a n ty thu c vo t kha m chng ta s d ng trong khai bo. 36. Chng 4: Cc ki u d li u s c p chu n, l nh n B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 31 T kha Ph m vi Kch th c (byte) Real48 2.9 x 10^-39 .. 1.7 x 10^38 6 Single 1.5 x 10^-45 .. 3.4 x 10^38 4 Double 5.0 x 10^-324 .. 1.7 x 10^308 8 Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 10 Comp -2^63+1 .. 2^63 -1 8 Currency -922337203685477.5808.. 922337203685477.5807 8 B ng 3: Cc t kho c a ki u th c Tuy nhin, ki u s th c chng ta th ng dng c khai bo b ng t kha Real, trong Delphi ki u Real tng ng v i ki u Double. T kha Ph m vi Kch th c (byte) Real 5.0 x 10^-324 .. 1.7 x 10^308 8 B ng 4: Ki u Real I.3.2. M t s php ton v hm trn ki u s (s nguyn v s th c) Cc php ton s h c hai ngi: Php ton ngha Ki u ton h ng Ki u k t qu + C ng integer, real integer, real - Tr integer, real integer, real * Nhn integer, real integer, real / Chia th c integer, real real div Chia nguyn integer integer mod L y ph n d integer integer B ng 5: Cc php ton 2 ngi V d 3: V i cc bi n x, y, z ki u integer x := 3*2; // x = 6 y := 15 div 6; // t = 2 z := 15.5 mod 5; // l i Tuy nhin, php ton + v ton - cn c th l php ton m t ngi: Php ton ngha Ki u ton h ng Ki u k t qu V d + (unary) d u dng integer, real integer, real +7 - (unary) d u m (l y s i) integer, real integer, real -7 B ng 6: Cc php ton 1 ngi 37. Chng 4: Cc ki u d li u s c p chu n, l nh n Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT32 Khi th c hi n cc php ton chng ta c n ch m t s i m c bi t sau: - K t qu c a php chia th c (/) lun lun c ki u Extented, khng quan tm n ki u c a cc ton h ng. - Php ton mod l php ton l y ph n d. - Khi th c hi n php chia x/y (hay l x mod y ho c x div y) th y ph i khc 0, n u y c gi tr 0 th chng trnh s pht sinh l i. M t s hm chuy n i ki u d li u: function IntToStr ( Number : Integer ) : string; //Unit: SysUtils function IntToStr ( BigNumber : Int64 ) : string; //Unit: SysUtils Hm IntToStr l hm th c hi n vi c chuy n i m t s nguyn (ho c s int64) thnh m t chu i s . function FloatToStr(Value: Extended): string; //Unit: SysUtils function FloatToStr(Value: Extended; const FormatSettings: TFormatSettings): string; Hm FloatToStr chuy n i m t s th c hay s d u ch m ng (Value) thnh m t chu i bi u di n tng ng cho s . B ng d i y l cc hm lin quan n ki u s : Hm ngha abs(x); |x| : l y gi tr tuy t i c a s x arctan(x:extended): extended; arctang(x) cos(x: extended): extended; cos(x) : l y cos c a x exp(x: real): real; ex frac(x:extended): extended; Tr v ph n th p phn c a bi n x inc(var x [ ; n: longint ] ); tng bi n x ln 1 ho c n gi tr int(x: extended): extended; Tr v ph n nguyn c a bi n x ln(x); ln x : l y logarit nepe c a tr x (e 2.71828) max(a,b:numbertype):numbertype; Tr v s l n 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; Ki m tra n c ph i l s l hay khng: True: N u n l False: N u n ch n. pi: extended; Tr v gi tr pi=3.1415926535897932385. random[( range: integer)]; Tr v m t s ng u nhin x v 0 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 m c S:ViDuMemo 101. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT96 - Bin d ch v ch y chng trnh, ta c k t qu nh sau: Hnh 56: K t qu chng trnh Memo IV.9. H p danh sch (TListBox) L thnh ph n li t k m t danh sch cc ph n t . Cc ph n t ny khng th nh p tr c ti p khi ch y chng trnh. * Bi u t ng: * M t s thu c tnh th ng dng: Tn thu c tnh ngha Name Xc nh tn cho h p danh sch. Align Xc nh vi c canh l tri, ph i, trn, d i,... c a Listbox bn trong thnh ph n ch a n. N u c gi tr b ng alClient th kch th c ListBox s chi m ton b b m t c a thnh ph n ch a n. Columns S c t trong ListBox Font Xc nh cc thu c tnh v font nh: ki u ch , mu, c ,... Items Cho php b n nh p cc ph n t vo ListBox lc thi t k thng qua c a s String List Editor. Items[i] Ph n t ch s th i trong Listbox. Ch s i b t u t 0 v ti p t c l 1, 2,... trong h p danh sch. Cch ny th ng c dng vi t m l nh. ItemIndex Tr v ch s ph n t hi n t i ang c ch n trong Items. M c nhin c gi tr l -1 (cha c ph n t no c ch n) Count Tr v s ph n t c m t trong ListBox SelCount Tr v s ph n t c c ch n trong Listbox MultiSelect C gi tr True ho c False: Cho php Click ch n cng lc nhi u ph n 102. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 97 Tn thu c tnh ngha t (k t h p v i phm Ctrl ho c Shift) hay ch 1 ph n t . Sorted C gi tr True ho c False: S p x p cc ph n t theo th t ch ci ho c khng s p x p. Visible C gi tr True ho c False: c xu t hi n hay khng khi ch y chng trnh. Enabled C gi tr True ho c False: Cho php hay khng ng i s d ng truy xu t n n. Hint Dng g i t ng n g n v ListBox khi b n tr mouse n n. Ch c nng ny ch c tc ng khi thu c tnh ShowHint l True. TabOrder c nh th t b t u t 0, 1, 2,... xc nh th t m ListBox c nh n Focus khi b n nh n phm Tab. Ch c nng ny ch c tc ng khi thu c tnh TabStop c gi tr True. B ng 34: Cc thu c tnh c a TListBox * M t s s ki n th ng dng: Tn s ki n p ng c a s ki n OnClick Khi ng i s d ng Click vo i t ng OnContextPopup Khi ng i s d ng RClick vo i t ng, ho c th c hi n vi c b t ln menu i t ng. OnDblClick Khi ng i s d ng DClick vo i t ng OnExit Khi i t ng m t tiu i m (Lost Focus) OnKeyDown Khi c phm b t k c nh n OnKeyPress G n nh s ki n OnKeyDown, nhng khng p ng cho cc phm i u khi n nh: F1, Ctrl, Shift,... B ng 35: Cc s ki n c a TListBox * M t s phng th c (Method) th ng dng: C php c a phng th c ngha Items.Add(const S: string): Integer; Hm thm ph n t ki u string vo pha cu i v tr v ch s c a ph n t ny trong Items. Items.Append(const S: string); Th t c n i thm ph n t ki u string vo pha cu i Items. Items.Delete(Index: Integer); Th t c xa m t ph n t ch s index trong Items. Items.Insert(Index: Integer; const S: string); Th t c xa m t ph n t ki u string t i ch s index trong Items. Th t c ny tng ng cu l nh gn vo thu c tnh Items nh sau: Items[index] := S; 103. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT98 C php c a phng th c ngha Clear; Th t c xa h t cc ph n t trong ListBox. ClearSelection; Th t c xa cc ph n t ch n. B ng 36: Cc phng th c c a TListBox V d 19: m s ph n t m b n ch n trong ListBox - T o m t d n m i File/New/Application - Thi t l p cc thu c tnh c a form nh sau: Thu c tnh Gi tr Name frmMain Caption Vi du ve doi tuong ListBox B ng 37: Thi t l p thu c tnh Form. - t cc i t ng ln form v t thu c tnh nh sau: i t ng Thu c tnh Gi tr Name lbxSo Items r ng ( 0 line) Columns 2 ListBox MultiSelect True Name edt_pt Text r ngEdit TabOrder 0 Name btnThem Button 1: Caption &Them phan tu vao Listbox Name btnDem Button 2: Caption &Dem so phan tu chon v 2 Label v i Caption nh m t trong form. B ng 38: Thi t l p thu c tnh cho cc i t ng. o n m l nh chng trnh: unit untDanhSach; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Qt; 104. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 99 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 d ng phm Enter a gi tr nh p 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. 105. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT100 - Lu d n vo th m c S:ViDuListBox - Bin d ch v ch y chng trnh, ta c k t qu nh sau: Hnh 57: K t qu chng trnh ListBox IV.10. TSpinEdit Thnh ph n ny n m trong th Sample. N cho php b n nh p vo m t s nguyn b t k nh thnh ph n TEdit. Tuy nhin, TSpinEdit cn cho php b n thay i (tng, gi m) gi tr ny theo m t b c nh y (step/increment) no b ng cch Click vo nt (nt UpDown) tng ho c gi m. * Bi u t ng: * M t s thu c tnh th ng dng: Tn thu c tnh ngha Name Xc nh tn cho i t ng. Value Ki u integer: Gi tr c a i t ng SpinEdit MinValue Ki u integer: Gi tr th p nh t c a SpinEdit, m c nhin c gi tr 0: c ngha l khng gi i h n v c th c gi tr nh nh t trong ph m vi ki u s nguyn l 2147483648 MaxValue Ki u integer: Gi tr cao nh t c a TSpinEdit, m c nhin c gi tr 0: c ngha l khng gi i h n v c th c gi tr l n nh t trong ph m vi ki u s nguyn l 2147483647 Increment Ki u integer: Gi tr b c nh y (step). M c nhin c gi tr l 1. MaxLength Ki u integer: di l n nh t (hay s l ng k s nhi u nh t) c a s nguyn trong SpinEdit. Ch ng h n b n gi i h n ch nh p s t i a n hng ngn th b n cho thu c tnh ny b ng 4. Text Ki u String: Chu i k s bn trong i t ng. Thu c tnh ny tng ng v i thu c tnh Value nhng khc ki u d li u. ReadOnly Ki u boolean: C gi tr l True, n u KHNG c n thay i gi tr c a thu c tnh Value. Cn ng c l i, b n c th thay i. 106. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 101 Tn thu c tnh ngha Visible Ki u boolean: C gi tr True ho c False: C xu t hi n SpinEdit v cc thnh ph n bn n hay khng khi ch y chng trnh. Enabled Ki u boolean: C gi tr True ho c False: Cho php hay khng ng i s d ng truy xu t n cc thnh ph n m n ch a hay khng. Hint Dng g i t ng n g n v TPanel khi b n tr mouse n n. Ch c nng ny ch c tc ng khi thu c tnh ShowHint l True. TabOrder c nh th t b t u t 0, 1, 2,... xc nh th t m SpinEditl c nh n Focus khi b n nh n phm Tab. Ch c nng ny ch c tc ng khi thu c tnh TabStop c gi tr True. B ng 39: Cc thu c tnh c a TSpinEdit * M t s s ki n th ng dng: Tn s ki n p ng c a s ki n OnClick Khi ng i s d ng Click vo i t ng OnContextPopup Khi ng i s d ng RClick vo i t ng, ho c th c hi n vi c b t ln menu i t ng. OnExit Khi i t ng m t tiu i m (Lost Focus) OnKeyDown Khi b n g phm b t k OnKeyPress G n nh s ki n OnKeyDown, nhng khng p ng cho cc phm i u khi n nh: F1, Ctrl, Shift,... OnChange Khi b n thay i gi tr trong i t ng c a thnh ph n TSpinEdit B ng 40: Cc s ki n c a TSpinEdit * M t s phng th c (Method) th ng dng: C php c a phng th c ngha Show; Th t c hi n th i t ng khi ch y chng trnh. Hide; Th t c n i t ng khi ch y chng trnh. Clear; Th t c xa h t gi tr trong TSpinEdit B ng 41: Cc phng th c c a TSpinEdit IV.11. H p danh sch nh d u (TCheckListBox) L thnh ph n k t h p c ch c nng c a TListBox v TCheckBox m cc b n h c. Trong TListBox, m i ph n t tng ng v i m t dng. Cn trong TCheckListBox, m i ph n t tng ng v i m i h p ki m. Tnh nng c a ny cho ng i l p trnh ch n ph n t no trong danh sch ch c n nh d u ch n trong h p ki m l xong. Thnh ph n ny n m trong th Additional. 107. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT102 * Bi u t ng: * M t s thu c tnh th ng dng: Tn thu c tnh ngha Name Xc nh tn cho h p danh sch nh d u. Align Xc nh vi c canh l tri, ph i, trn, d i,... c a TCheckListBox bn trong thnh ph n ch a n. N u c gi tr b ng alClient th kch th c CheckListBox s chi m ton b b m t c a thnh ph n ch a n. Columns S c t trong i t ng CheckListBox Items Cho php b n nh p cc ph n t c d ng l h p ki m vo CheckListBox trong lc thi t k thng qua c a s String List Editor. Items[i] Ph n t ch s th i trong CheckListBox. Ch s i b t u t 0 v ti p t c l 1, 2,... trong h p danh sch. Cch ny th ng c dng vi t m l nh. Checked[i] Ph n t th i trong TCheckListBox c nh d u ch n. Ch s i b t u t 0 v ti p t c 1, 2, ItemIndex Tr v ch s ph n t hi n t i ang c ch n trong Items. M c nhin c gi tr l 1 (cha c ph n t no c ch n) Count Tr v s ph n t c m t trong CheckListBox SelCount Tr v s ph n t c c ch n trong CheckListBox MultiSelect C gi tr True ho c False: Cho php Click ch n cng lc nhi u ph n t (k t h p v i phm Ctrl ho c Shift) hay ch 1 ph n t . Sorted C gi tr True ho c False: S p x p cc ph n t theo th t ch ci ho c khng s p x p. Visible C gi tr True ho c False: c xu t hi n hay khng khi ch y chng trnh. Enabled C gi tr True ho c False: Cho php hay khng ng i s d ng truy xu t n n. Hint Dng g i t ng n g n v CheckListBox khi b n tr mouse n n. Ch c nng ny ch c tc ng khi thu c tnh ShowHint l True. TabOrder c nh th t b t u t 0, 1, 2,... xc nh th t m CheckListBox c nh n Focus khi b n nh n phm Tab. Ch c nng ny ch c tc ng khi thu c tnh TabStop c gi tr True. B ng 42: Cc thu c tnh c a TCheckListBox * M t s s ki n th ng dng: Tn s ki n p ng c a s ki n OnClick Khi ng i s d ng Click vo i t ng OnContextPopup Khi ng i s d ng RClick vo i t ng, ho c th c hi n vi c b t ln menu i t ng. 108. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 103 Tn s ki n p ng c a s ki n OnDblClick Khi ng i s d ng DClick vo i t ng OnExit Khi i t ng m t tiu i m (Lost Focus) OnKeyDown Khi c phm b t k c nh n OnKeyPress G n nh s ki n OnKeyDown, nhng khng p ng cho cc phm i u khi n nh: F1, Ctrl, Shift,... B ng 43: Cc s ki n c a TCheckListBox * M t s phng th c (Method) th ng dng: C php c a phng th c ngha Items.Add(const S: string): Integer; Hm thm ph n t ki u string vo pha cu i v tr v ch s c a ph n t ny trong Items. Items.Append(const S: string); Th t c n i thm ph n t ki u string vo pha cu i Items. Items.Delete(Index: Integer); Th t c xa m t ph n t ch s index trong Items. Items.Insert(Index: Integer; const S: string); Th t c xa m t ph n t ki u string t i ch s index trong Items. Th t c ny tng ng cu l nh gn vo thu c tnh Items nh sau: Items[index] := S; Clear; Th t c xa h t cc ph n t trong TCheckListBox. ClearSelection; Th t c xa cc ph n t ch n. B ng 44: Cc phng th c c a TCheckListBox V d 20: Vi t chng trnh ng k v tnh h c ph cho sinh vin - T o m t d n m i File/New/Application - Thi t l p cc thu c tnh c a form nh sau: Thu c tnh Gi tr Name frmVidu Caption Vi du ve CheckListBox B ng 45: Thi t l p thu c tnh Form. - t cc i t ng ln form v t thu c tnh nh sau: i t ng Thu c tnh Gi tr CheckListBox Name clbTenMH 109. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT104 i t ng Thu c tnh Gi tr Items G m 15 ph n t nh sau: 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 Name lbxSoTC ListBox Items G m 15 ph n t nh sau: 2 3 2 3 2 2 3 3 5 4 5 5 3 5 Name speGia1TC MinValue 15000 MaxValue 30000 Value 15000 SpinEdit Increment 1000 Name memTienHP Memo Lines 0 line (r ng) Name btnTinhTien Button 1 Caption Tinh &tien hoc phi Name btnThemMH Button 2 Caption Them ten &mon hoc moi v m t s Label nh thi t k form 110. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 105 o n m l nh 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; 111. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT106 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 m c S:ViDuCheckListBox - Bin d ch v ch y chng trnh, ta c k t qu nh sau: Hnh 58: Ch n tn mn h c v ch n Tnh ti n h c ph 112. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 107 Hnh 59: Thm tn mn h c m i v s tn ch Hnh 60: Sau khi thm tn mn h c m i v tnh l i ti n h c ph IV.12. H p danh sch cc kho (TValueListEditor) Thnh ph n ny g n gi ng nh TListBox, nhng m i ph n t /dng th c 2 ph n: ph n tn kho (Key name) v ph n tr kho (Key value). Hai ph n ny c th hi n trn 2 c t v tiu c a 2 c t ny m c nhin l Key v Value. Tuy nhin ta c th thay i tn tiu ny. Thnh ph n ny n m trong th Additional. * Bi u t ng: * M t s thu c tnh th ng dng: Tn thu c tnh ngha Name Xc nh tn cho i t ng ValueListEditor, tn ny c t nh tn bi n v c s d ng trong vi c vi t m l nh c a chng trnh. TitleCaptions Tiu cho cc c t c a ValueListEditor. B n Click vo nt thay i tn tiu n u b n c n thng qua c a s String List Editor DisplayOptions doColumnTitles: C hi n th (True) hay khng (False) hi n th hng tiu . N u c hng tiu , th n l hng u tin trong 113. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT108 Tn thu c tnh ngha ValueListEditor nn c ch s hng l 0. Strings Cho php b n nh p cc ph n t hay hng c a TValueListEditor, v i m i ph n t c 2 ph n: Tn kho v tr kho vo TValueListEditor trong lc thi t k thng qua c a s Value List Editor khi b n Click vo nt RowCount Tr v s hng (c tnh c hng tiu ) c m t trong ValueListEditor. ColCount Tr v s c t trong ValueListEditor. Strings.Count S hng/ph n t khng tnh hng tiu c trong ValueListEditor Keys[i] L tn kho (ki u String) th i trong ValueListEditor. Ch s i b t u t 0 v ti p t c l 1, 2,... Cch ny th ng c dng vi t m l nh (Coding). B n c n ch l: N u khng hi n th hng tiu , th ph n t u tin s c ch s b t u l 0. Cn n u c hi n th hng tiu th ph n t u tin c ch s hng b t u t 1. Values[i] L tr kho (ki u String) th i c a ValueListEditor. Trong i ln tn c a kho c a ph n t th i. Strings[i] Tr v tr kho (ki u String) c a ph n t th i. Ch s i lun lun b t u t 0 r i 1, 2, B n c n ch l: Thu c tnh ny KHNG tnh hng tiu . N u c hi n th hng tiu th ph n t u tin c ch s l 0 v ph n t cu i cng l RowCount-1 (hay Strings.Count). Cn n u khng hi n th hng tiu , th ph n t u tin c ch s l 0 v ph n t cu i cng l RowCount-2 (hay Strings.Count-1). Row Tr v ch s hng hi n hnh c a ph n t c ch n khi ch y chng trnh. N u khng hi n th hng tiu th ch s hng u tin b t u t 0 r i 1, 2, Cn n u c hi n th hng tiu th ch s hng u tin c ch s hng b t u t 1. Col Tr v ch s c t hi n hnh c a ph n t c ch n khi ch y chng trnh. Ch s c t b t u t 0 r i 1, 2, Cell[i,j] Tr v gi tr trong ch s c t i v hng j. KeyOptions Cc tu ch n trn c t kho (Key): Cho php (True) hay khng cho php (False): s a tn kho - keyEdit, thm tn kho - keyAdd, xo tn kho - keyDelete, ki m tra tn kho duy nh t (khng trng kho) - keyUnique. Options Cc tu ch n trn c t gi tr (Value) c a kho: Cho php (True) hay khng cho php (False): thay i tr kho- goEditing, s d ng phm Tab v t h p phm Shift + Tab - goTabs, ch n c hng goRowSelect, Visible C gi tr True ho c False: c xu t hi n hay khng khi ch y chng trnh. Enabled C gi tr True ho c False: Cho php hay khng ng i s d ng truy xu t n n. Hint Dng g i t ng n g n v CheckListBox khi b n tr mouse n n. Ch c nng ny ch c tc ng khi thu c tnh ShowHint l True. 114. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 109 Tn thu c tnh ngha TabOrder c nh th t b t u t 0, 1, 2,... xc nh th t m i t ng ny nh n Focus khi b n nh n phm Tab. Ch c nng ny ch c tc ng khi thu c tnh TabStop c gi tr True. B ng 46: Cc thu c tnh c a TCheckListBox * M t s s ki n th ng dng: Tn s ki n p ng c a s ki n OnClick Khi ng i s d ng Click vo i t ng OnContextPopup Khi ng i s d ng RClick vo i t ng, ho c th c hi n vi c b t ln menu i t ng. OnDblClick Khi ng i s d ng DClick vo i t ng OnExit Khi i t ng m t tiu i m (Lost Focus) OnKeyDown Khi c phm b t k c nh n OnKeyPress G n nh s ki n OnKeyDown, nhng khng p ng cho cc phm i u khi n nh: F1, Ctrl, Shift,... OnSelectCell Khi m t b t k trong TValueListEditor c Click ch n. B ng 47: Cc s ki n c a TValueListEditor * M t s phng th c (Method) th ng dng: C php c a phng th c ngha InsertRow(const KeyName, Value: string; Append: Boolean): Integer; Hm chn thm vo m t hng (ph n t ) g m tn kho v tr kho. N u mu n chn pha trn hng hi n hnh th truy n tr False cho tham s Append; Cn n u mu n chn ph n t vo cu i danh sch th cho Append b ng True. DeleteRow(ARow: Integer); Th t c xo m t hng b t k. FindRow(const KeyName: string; var Row: Integer): Boolean; Hm tm m t ph n t d a vo tn kho (Key). N u tm th y th hm s tr v gi tr True v tham bi n Row s ch a ch s hng c a ph n t u tin c tm th y. Cn ng c l i hm tr v gi tr False. Strings.Add(const S: string): Integer; Hm thm m t tr kho (c t Value) ki u string vo pha cu i v tr v ch s c a ph n t ny. Strings.Append(const S: string); Th t c n i thm m t tr kho c t Value. Strings.Delete(Index: Integer); Th t c xa m t hng/ph n t ch s index trong Items. Strings.Clear; Th t c xa h t cc hng (ph n t ) trong TValueListEditor nga i tr hng tiu . B ng 48: Cc phng th c c a TValueListEditor 115. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT110 V d 21:Vi t chng trnh nh p vo danh sch cc m t hng v n gi. Tm ki m theo m t hng. - T o m t d n m i File/New/Application - Thi t l p cc thu c tnh c a form nh sau: Thu c tnh Gi tr Name frmMain Caption Vi du ve ValueListEditor B ng 49: Thi t l p thu c tnh Form. - t cc i t ng ln form v t thu c tnh nh sau: i t ng Thu c tnh Gi tr Name vleMatHang TitleCaptions 2 lines tng ng l Key v Value: Ten Giao Trinh: Don Gia: Key Value Strings Ly thuyet Access Thuc hanh Access Ly thuyet Delphi Thuc hanh Delphi 150 145 165 140 ValueListEditor KeyOptions KeyEdit = True, KeyAdd=True KeyDelete = False, KeyUnique=True Name lbeTenHang EditLabel.Caption Nhap &Ten giao trinh moi: LabelPosistion lpAbove LabeledEdit th 1 Text (r ng) Name lbeDonGia EditLabel.Caption Nhap &Don gia: LabelPosistion lpAbove LabeledEdit th 2 Text (r ng) Name lbeKQTK EditLabel.Caption Ket qua tim kiem. LabelPosistion lpBelow LabeledEdit th 3 Text (r ng) Button th 1 Name btnThem 116. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 111 i t ng Thu c tnh Gi tr Caption Them vao &danh sach Name btnTimKiem Button th 2 Caption Tim &kiem v 1 Label nh thi t k form o n m l nh 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 117. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT112 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 m c S:ViDuValueListEditor - Bin d ch v ch y chng trnh, ta c k t qu nh sau: Hnh 61: Thm gio trnh "Anh vn cn b n" 118. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 113 - N u b n nh p thm vo tn gio trnh c, v d nh: "Ly thuyet Delphi" th s nh n c thng bo nh sau: Hnh 62: Nh p b trng Hnh 63: Tm ki m theo tn gio trnh IV.13. H p li t k th (TComboBox) L thnh ph n li t k m t danh sch cc ph n t th xu ng. Cc ph n t ny c th c nh p tr c ti p ho c khng th nh p tr c ti p khi ch y chng trnh l ty thu c vo ki u (Style) m b n thi t l p n qu trnh thi t k . * Bi u t ng: * M t s thu c tnh th ng dng: 119. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT114 Tn thu c tnh ngha Name Xc nh tn cho i t ng h p li t k th . AutoDropDown C gi tr True ho c False: Nt li t k th t ng th xu ng hay khng khi nh n m t phm. Items Cho php b n nh p cc ph n t vo ComboBox lc thi t k thng qua c a s String List Editor. Items[i] Ph n t ch s th i trong ComboBox. Ch s i b t u t 0 v ti p t c l 1, 2,... trong h p li t k th . Cch ny th ng c dng vi t m l nh. ItemIndex Xc nh ch s ph n t c ch n, ch s ny c gi tr b t t 0, 1, 2,... N u ItemIndex = -1 th cha c ph n t no c ch n. Items.Count T ng s cc ph n t c trong h p li t k th . DropDownCount S l ng cc ph n t c li t k trong h p li t k th t i m i th i i m. Style C 2 gi tr m b n c n phn bi t l: - csDropDown Cho php b n nh p tr c ti p thm m t ph n t m i vo trong TComboBox. - csDropDownList ch cho b n ch n t danh sch cc ph n t c s n trong ComboBox. Text Xc nh chu i vn b n (hay ph n t ) ang hi n th trong TComboBox Sorted C gi tr True ho c False: S p x p cc ph n t theo th t ch ci ho c khng s p x p. Visible C gi tr True ho c False: C xu t hi n hay khng khi ch y chng trnh. Enabled C gi tr True ho c False: Cho php hay khng ng i s d ng truy xu t n n. Hint Dng g i t ng n g n v TComboBox khi b n tr mouse n n. Ch c nng ny ch c tc ng khi thu c tnh ShowHint l True. TabOrder c nh th t b t u t 0, 1, 2,... xc nh th t m ComboBox c nh n Focus khi b n nh n phm Tab. Ch c nng ny ch c tc ng khi thu c tnh TabStop c gi tr True. B ng 50: Cc thu c tnh c a TComboBox * M t s s ki n th ng dng: Tn s ki n p ng c a s ki n OnClick Khi ng i s d ng Click vo i t ng OnContextPopup Khi ng i s d ng RClick vo i t ng, ho c th c hi n vi c b t ln menu i t ng. OnDblClick Khi ng i s d ng DClick vo i t ng 120. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 115 Tn s ki n p ng c a s ki n OnExit Khi i t ng m t tiu i m (Lost Focus) OnKeyDown Khi c phm b t k c nh n OnKeyPress G n nh s ki n OnKeyDown, nhng khng p ng cho cc phm i u khi n nh: F1, Ctrl, Shift,... B ng 51: Cc s ki n c a TComboBox * M t s phng th c (Method) th ng dng: C php c a phng th c ngha Items.Add(const S: string): Integer; Hm thm ph n t ki u string vo pha cu i v tr v ch s c a ph n t ny trong Items. Items.Append(const S: string); Th t c n i thm ph n t ki u string vo pha cu i Items. Items.Delete(Index: Integer); Th t c xa m t ph n t ch s index trong Items. Items.Insert(Index: Integer; const S: string); Th t c xa m t ph n t ki u string t i ch s index trong Items. Th t c ny tng ng cu l nh gn vo thu c tnh Items nh sau: Items[index] := S; Clear; Th t c xa h t cc ph n t trong ListBox. B ng 52: Cc phng th c c a TComboBox - M t s khi ni m c s d ng trong v d : + Cu l nh r nhnh: case of Gi_tr _i: cng_vi c_i; end; + Hm Trunc(x): tr v ph n s nguyn c a m t s l th p phn x V d 22:My tnh n gi n s d ng thnh ph n ComboBox. - T o m t d n m i File/New/Application - Thi t l p cc thu c tnh c a form nh sau: Thu c tnh Gi tr Name frmMain Caption Vi du ve doi tuong ComboBox BorderIcons [] Position poDesktopCenter B ng 53: Thi t l p cc thu c tnh TForm. 121. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT116 - t cc i t ng ln form v thi t l p cc thu c tnh nh sau: i t ng Thu c tnh Gi tr Name cboToantu Items + - * / Div Mod Style csDropDownList ComboBox ItemIndex -1 Name edt_ToanHang1 Text 0Edit th 1 TabOrder 0 Name edt_ToanHang2 Text 0Edit th 2 TabOrder 1 Name Edt_Kq Text 0Edit th 3 ReadOnly True Name btnKetThuc Button Caption &Ket thuc v 4 Label v i Caption nh m t trong form. B ng 54: Thi t l p cc thu c tnh c a cc i t ng - L n l t nh p vo cc cu l nh cho cc th t c s ki n 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; 122. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 117 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 b0 then edt_Kq.Text := FloatToStr(a / b) else edt_Kq.Text := 'Loi!... Mau so bang khong.'; 4: if b0 then edt_Kq.Text := IntToStr(Trunc(a) Div Trunc(b)) else edt_Kq.Text := 'Loi!... Mau so bang khong.'; 5: if b0 then edt_Kq.Text := IntToStr(Trunc(a) Mod Trunc(b)) else edt_Kq.Text := 'Loi!... Mau so bang khong.'; 123. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT118 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 m c S:ViDuComboBox - Bin d ch v ch y chng trnh, ta c k t qu nh sau: Hnh 64: K t qu chng trnh ComboBox IV.14. L i chu i (TStringGrid) L thnh ph n c thi t k theo d ng b ng g m cc ch a d li u ki u chu i. Cc ny c xc nh b i nh ch s c t v ch s hng. Trong TStringGrid, ch s c t u tin (c t bn tri nh t) v hng u tin (hng trn nh t) c nh s m c nh l 1. Tuy nhin, b n c th thay i ch s ny v 0 ph h p ch s b t u c a m ng (Array) trong Delphi l 0 (zero) d a vo cc thu c tnh c a TStringGrid c m t chi ti t d i y. * Bi u t ng: * M t s thu c tnh th ng dng: Tn thu c tnh ngha Name Xc nh tn cho i t ng StringGrid. FixedCols Xc nh ch s c t u tin (bn tri nh t) trong l i, cc gi tr ny c th b t u t 0, 1, 2,... M c nh c gi tr l 1. FixedRows Xc nh ch s hng u tin (hng trn nh t) trong l i, cc gi tr 124. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 119 Tn thu c tnh ngha ny c th b t u t 0, 1, 2,... M c nh c gi tr l 1. ColCount Xc nh s c t trong l i, s c t c nh ch s b t u t 0 n ColCount-1 RowCount Xc nh s hng trong l i, s hng c nh ch s b t u t 0 n RowCount-1 Col Ch s c t c a hi n hnh Row Ch s hng c a hi n hnh Cells[i,j] Gi tr trong ch s c t i v hng j Options L cc ty ch n cho l i, d i y trnh by l m t s ty ch n: - goEditing c gi tr True ho c False, cho hay khng php so n th o trong cc l i. - goTabs c gi tr True ho c False, cho hay khng cho s d ng phm Tab di chuy n qua l i gi a cc . - goRowSelect c gi tr True ho c False, cho hay khng php ch n t t c cc trn ton b m t hng. ScrollBars Xc nh s thanh cu n c n hi n th , cc gi tr c a n nh sau: - ssBoth: Hi n th c 2 thanh cu n ng v ngang - ssHorizontal: Hi n th thanh cu n ngang - ssVertical: Hi n th thanh cu n ng - ssNone: Khng hi n th thanh cu n no c Visible C gi tr True ho c False: C xu t hi n hay khng khi ch y chng trnh. Enabled C gi tr True ho c False: Cho php hay khng ng i s d ng truy xu t n n. Hint Dng g i t ng n g n v StringGrid khi b n tr mouse n n. Ch c nng ny ch c tc ng khi thu c tnh ShowHint l True. TabOrder c nh th t b t u t 0, 1, 2,... xc nh th t m StringGrid nh n Focus khi b n nh n phm Tab. Ch c nng ny ch c tc ng khi thu c tnh TabStop c gi tr True. B ng 55: Cc thu c tnh TStringGrid * M t s s ki n th ng dng: Tn s ki n p ng c a s ki n OnClick Khi b n Click vo i t ng OnContextPopup Khi b n RClick vo i t ng, ho c th c hi n vi c b t ln menu i t ng. OnDblClick Khi b n DClick vo i t ng OnExit Khi b n a con nhy v a r i kh i i t ng OnKeyDown Khi b n g phm b t k OnKeyPress G n nh s ki n OnKeyDown, nhng khng p ng cho cc 125. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT120 Tn s ki n p ng c a s ki n phm i u khi n nh: F1, Ctrl, Shift,... OnSelectCell Khi b n Click vo c ch n B ng 56: Cc s ki n TStringGrid - M t s khi ni m c s d ng trong v d : + Cu l nh bao nhm: with tn_ i_t ng do begin cc thu c tnh v phng th c c a i t ng end; + Cu l nh l p: for i := tr _ u to tr _cu i do cng_vi c; N u tr _cu i >= tr _ u th c hi n cng_vi c v i (tr _cu i - tr _ u +1) l n. V d 23: Hi n th b ng 26 k t ch ci. Click vo tng ng trong l i hi n th k t trong b n v a ch n. - T o m t d n m i File/New/Application - Thi t l p cc thu c tnh c a form nh sau: Thu c tnh Gi tr Name frmAlphabet Caption Vi du ve doi tuong StringGrid Position poDesktopCenter B ng 57: Thi t l p cc thu c tnh cho Form. - t cc i t ng ln form v thi t l p cc thu c tnh nh sau: i t ng Thu c tnh Gi tr StringGrid Name stgAlphabet Name lblAlphabet Caption BANG 26 KY TU CHU CAILabel Font.Size 12 B ng 58: Thi t l p cc thu c tnh cho cc i t ng o n m l nh chng trnh: unit untAlphabet; interface 126. Chng 5: L p trnh x l s ki n Cc thnh ph n c a Delphi B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 121 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; // C t tri nh t FixedRows:=0; // Hng trn nh t ColCount:=5; RowCount:=6; Options := Options+ [goEditing]; //cho php c p nh t for i := FixedCols to ColCount - 1 do for j:= FixedRows to RowCount - 1 do begin k := k + 1; if k =4 then begin x := 2*sin(PI/2)/sqrt(9); ShowMessage( ' x = ' + FormatFloat('0.000', x); end //khng c d u ; else ShowMessage( 'Dieu kien sai'); // K t qu hi n th gi tr bi n x = 0.667 // Cc l nh IF l ng vo nhau if true Then if false Then ShowMessage(' I ' ) else ShowMessage(' LOVE ' ) else ShowMessage(' DELPHI ' ); end; // K t qu hi n th t : LOVE V d 3: Vi t chng gi i phng trnh b c nh t ax + b = 0 H ng d n: - T o d n m i: File/New/Application Lu : Do cc b n h c xong chng 5, nn gio trnh s trnh by cch vi t chng trnh m t cch ng n g n hn. B n ph i t xc nh v thi t l p cc thu c tnh cho cc i t ng trong chng trnh sao cho thch h p nh t theo c a mnh. Gio trnh ch a ra cc tn (name) c a i t ng vi t code cho d n m thi. - t thu c tnh name cho cc i t ng c a chng trnh nh sau: Hnh 4: Tn (name) c a cc i t ng 146. Chng 6: Cc l nh c c u trc B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 141 - Thi t k giao di n trn form: Hnh 5: Giao di n phng trnh b c nh t - o n code c a chng trnh nh sau: Lu : vi t chng trnh cho chnh xc, b n c n ph i xc nh ng th t c s ki n m b n xc nh l c a i t ng no ng v i s ki n g trn form. B n c th xem l i trong ph n Cch hnh thnh th t c s ki n chng 5. unit untPtb1;//tn untPtb1 l do lu unit file v i 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); 147. Chng 6: Cc l nh c c u trc Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT142 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; 148. Chng 6: Cc l nh c c u trc B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 143 procedure TfrmPTB1.btnKetThucClick(Sender: TObject); begin Close; end; end. - Lu d n vo th m c S:ViduPTB1 - Bin d ch v ch y chng trnh, ta c k t qu nh sau: Hnh 6: Ch y chng trnh V d 4: Gi i phng trnh ax2 + bx +c = 0 H ng d n: - T o d n m i: File/New/Application - t thu c tnh name cho cc i t ng c a chng trnh nh c a s Object TreeView, v thi t k form nh hnh sau: Hnh 7: Tn cc i t ng v giao di n chng trnh 149. Chng 6: Cc l nh c c u trc Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT144 - o n code c a 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 150. Chng 6: Cc l nh c c u trc B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 145 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 a0 end // end if mOK1... else // else if: Nh p d li u 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 m c S:ViduPTB2 - Bin d ch v ch y chng trnh, ta c k t qu nh sau: 151. Chng 6: Cc l nh c c u trc Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT146 Hnh 8: Ch y chng trnh II.2. L nh Case ... of * C php, ngha: Case of // Xt gi tr c a bi u th c: GT1 : cng_vi c_1 ; // N u bi u_th c = GT1 (gi tr 1) th th c hi n cng_vi c_1, GT2 : cng_vi c_2 ; // n u bi u_th c = GT2 th th c hi n cng_vi c_2, GTn : cng_vi c_n ; // n u bi u_th c = GTn th th c hi n cng_vi c_n [else cng_vi c_0 ;] //Ng c l i s th c hi n cng_vi c_0 End; //end case * Lu : Hnh 9: Lu l nh Case ... of ... end; cng_vi c_1 BI U TH C cng_vi c_2 .... cng_vi c_n cng_vi c_0 case of end; else GT1 GT2 GTn GT0GT... 152. Chng 6: Cc l nh c c u trc B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 147 Ch : - L nh Case ... of c th khng c else - Bi u th c trong Case... of ph i c ki u d li u r i r c/ m c nh: Integer, Char,... - N u mu n ng v i nhi u gi tr khc nhau c a bi u th c m my v n thi hnh m t Cng_vi c th cc gi tr ny c th vi t trn cng m t hng cch nhau b i d u ph y (,): k1, k2, ..., kp : cng_vi c; V d 5: o n chng trnh sau m t cch s d ng l nh 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: Vi t chng trnh nh p vo hai s th c a, b v m t k t ch l php tnh c n th c hi n (+, -, *, /). Sau th c hi n php tnh v hi n th k t qu ln mn hnh. H ng d n: - T o d n m i: File/New/Application - t thu c tnh name cho cc i t ng c a chng trnh nh c a s Object TreeView, v thi t k form nh hnh sau: Hnh 10: Tn cc i t ng v giao di n chng trnh 153. Chng 6: Cc l nh c c u trc Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT148 - o n code c a 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]; // l y 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 154. Chng 6: Cc l nh c c u trc B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT Trang 149 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 m c S:ViduCaseOf - Bin d ch v ch y chng trnh, ta c k t qu nh sau: Hnh 11: Ch y chng trnh III. C u trc l nh l p L nh c c u trc l p th ng c s d ng khi chng trnh ph i th c hi n cng vi c l p i l p l i nhi u l n. III.1. L nh l p c s l n xc nh tr c L nh l p for cho php chng trnh th c hi n cng vi c nhi u l n v v i s l n l p bi t tr c. L nh for c 2 d ng: For ... to ... do : m ln, v For ... downto ... do : m xu ng. * C php m ln: for to do cng_vi c; 155. Chng 6: Cc l nh c c u trc Trang B mn Tin H c ng D ng Khoa Khoa H c T Nhin Tr ng HCT150 K t thc ng ng tng bi n m ln 1 Sai Sai * Lu : Hnh 12: Lu l nh l p for ... to ... do Ch : Bi n m, tr u, tr cu i l ki u d li u m c (r i r c) nh: s nguyn, Char, ki u li t k (Enum). V d 7: Tnh t ng s = 1 + 2 + 3 + 4 + 5. var i, s : integer; begin s := 0; //Kh i t o bi n t ng 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: K t qu chng trnh tnh t ng * ngha lu : u tin ki m tra tr u nh hn ho c b ng tr cu i khng? N u: + Sai, k t thc l nh. + ng, th th c hi n cng vi c v tng bi n m ln 1, sau ki m tra bi n m c cn nh hn ho c b ng tr cu i khng? N u ng th l p l i vi c th c hi n cng vi c cho n khi bi n m khng cn nh hn ho c b ng tr cu i n a th thot kh i vng l p v k t thc l nh. bi n m := tr u bi n m =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 beg