GIÁO TRÌNH LẬP TRÌNH CĂN BẢN tn035

927 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
927
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
38
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

GIÁO TRÌNH LẬP TRÌNH CĂN BẢN tn035

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

×