CHƯƠNG TRÌNH VẬT LÝ LỚP 12 NÂNG CAO NGÔN NGỮ LẬP TRÌNH DELPHI
Trang 1BỘ MÔN VẬT LÝ
LUẬN VĂN TỐT NGHIỆP
GV hướng dẫn: VƯƠNG TẤN SĨ SV thực hiện: NGÔ MINH HẢI
DƯƠNG BÍCH THẢO
CẦN THƠ, 04-2009
Trang 2GVHD: VƯƠNG TẤN SĨ Trang 1 SVTH: NGÔ MINH HẢI
PH Ầ N MỞ D Ầ U
I LÝ DO CHỌN ĐỀ TÀI
1 Hoàn cảnh thực tế
1.1 Hoàn cảnh thực tế trong đời sống xã hội
Sự phát triển cực kỳ nhanh chóng và mạnh mẽ cả công nghệ phần cứng và phần mềm của máy tính điện tử, từ lâu đã ảnh hưởng sâu sắc đến mọi hoạt động của con người như: Nghiên cứu khoa học, phát triển sản xuất, điều khiển tự động, điều tra cơ bản, thông tin liên lạc; lưu truyền phổ biến thông tin, dữ liệu, kiến thức cũng là mục tiêu quan trọng… Đặc biệt là trong công tác quản lí như: Quản
lí sản xuất, quản lí con người, quản lí giáo dục, quản lí tài nguyên… bên cạnh đó việc áp dụng tin học để phục vụ cho giảng dạy cũng không kém phần quan trọng,
đó là một trong những phương pháp giảng dạy tiến bộ nhất hiện nay
Ngày nay, tin học được coi là một trong những phương tiện đa dụng, phục
vụ cho các chính sách kinh tế, chính sách giáo dục, chính sách khoa học và công nghệ ở hầu hết các nước trên thế giới
Nhiệm vụ của giáo dục là phải đáp ứng mọi đòi hỏi của xã hội, đó là một đòi hỏi có tính nguyên tắc Xã hội muốn phát triển thì khoa học phải vươn lên phía trước, luôn luôn được kế thừa để không ngừng nhảy vọt
Đây là thời đại mà máy tính được sử dụng rộng rãi, sự hiểu biết về máy tính không còn là vấn đề phức tạp nữa
1.2 Hoàn cảnh thực tế trong ngành giáo dục ở các trường phổ thông
Ngày nay, trong giảng dạy một số môn khoa học tự nhiên (Lý, Hoá, Sinh…) là các môn có thí nghiệm cần độ chính xác cao, việc thu thập tín hiệu, xử
lý số liệu, việc tạo ra một điều kiện, môi trường lý tưởng cho việc tiến hành thí nghiệm thành công, thu thập số liệu chính xác là vấn đề hết sức khó khăn, trong khi có một số thí nghiệm không thể tiến hành được do thiếu dụng cụ thí nghiệm hoặc dụng cụ thí nghiệm quá đắc tiền Mặt khác do các ngành khoa học và công nghệ ở nước ta còn kém phát triển, đa số dụng cụ thí nghiệm với độ chính xác cao phải nhập từ nước ngoài, một số trường phổ thông chưa thể trang bị đầy đủ Với sự phát triển của công nghệ máy tính điện tử và một số phần mềm chuyên dùng thiết kế các hình ảnh mô phỏng, minh họa cho thí nghiệm thì việc thực hiện vấn đề trên phần nào có thể đáp ứng và giải quyết được những vấn đề khó khăn như đã đề cập Mặc dầu vậy, nhưng việc trang bị một phòng máy tính, màn hình
đủ lớn cỡ 400 (inch) để cả lớp quan sát được, hoặc một bộ máy chiếu và máy vi tính phục vụ cho giảng dạy là vấn đề hết sức khó khăn bởi vì một số trường phổ thông còn hạn chế nhiều mặt
Trang 32 Mục đích của đề tài
Với những hạn chế trong ngành giáo dục như đã đề cập ở trên, trong điều kiệncông nghệ thông tin đã và đang phát triển rầm rộ như hiện nay thì việc áp dụng các ngôn ngữ lập trình để hỗ trợ phổ biến kiến thức phục vụ cho học tập và nghiên cứu phần nào hoàn thiện hơn chương trình giảng dạy trên lớp là rất cần thiết phải được tiến hành phổ biến, thường xuyên Một mặt nhằm đáp ứng nhu cầu thời đại công nghệ thông tin là kết hợp giáo dục với tin học, giáo dục với công nghệ hiện đại, giảng dạy theo phương pháp chủ động, mặt khác nhằm đảm bảo kiến thức cho giảng dạy và nghiên cứu
Trong đó kiến thức vật lý là một bộ phận rất quan trọng trong các môn khoa học tự nhiên, nó là nền tảng cho mọi ngành công nghiệp hiện đại Cho nên việc phổ biến kiến thức vật lý một cách sâu rộng là điều rất cần thiết
Để giải quyết bớt những khó khăn trong ngành giáo dục, đáp ứng được những đòi hỏi tiến bộ của xã hội và bắt kịp nhịp độ phát triển của thời đại công nghệthông tin, thì việc soạn thảo kiến thức trọng tâm của chương trình kiến thức phổthông, thiết kế chương trình kiểm tra trắc nghiệm tự động tính điểm để học sinh
có thể trắc nghiệm kiểm tra kiến thức, trình độ của bản thân, sử dụng những phần mềm chuyên dụng để minh họa các hiện tượng, thiết kế các ảnh động mô phỏng cho hiện tượng vật lý nhằm phổ biến cho người học là việc nên làm Phần nào đáp ứng nhu cầu trên, đồng thời đặt nền móng cho hoạt động kết hợp giáo dục
với công nghệ mới, tôi đã mạnh dạng xây dựng “Chương trình vật lý lớp 12 nâng cao” viết bằng ngôn ngữ lập trình Delphi Một mặt nhằm thực hiện mục
tiêu chính của đề tài luận văn, mặt khác sinh viên thực hiện đề tài cũng tích lũy được một kỹ năng rất quan trọng và hữu ích ngoài kiến thức chuyên ngành, đó là
hiểu biết về ngôn ngữ lập trình và kỹ năng thiết kế-thực hiện một dự án, thiết kế
bài trắc nghiệm, đồng thời cũng bổ sung thêm tầm hiểu biết, nắm vững hơn về kiến thức chuyên ngành thông qua việc tìm hiểu rất kỷ nội dung xây dựng, soạn thảo câu hỏi trắc nghiệm và khảo sát một số hình ảnh minh họa các hiện tượng vật lý mà từ trước tới nay chưa có điều kiện quan sát trên thí nghiệm thực tế, thông qua các phần mềm chuyên dùng cho mô phỏng và thực hành vật lý
3 Giới hạn của đề tài
Delphi là một ngôn ngữ lập trình rất mạnh có tính ứng dụng cao, tuy nhiên trong thời đại phần mềm tin học rất phát triển như hiện nay thì việc lựa chọn ngôn ngữ lập trình nào cho phù hợp lại là một vấn đề đặt ra đối với một sinh viên không chuyên về tin học như tôi Với mong muốn khám phá bản thân trong việc vận dụng cái mới vào một mục đích cụ thể là xây dựng một chương trình Vật lý
12 nâng cao, nhờ sự tư vấn của giáo viên hướng dẫn (GVHD) tôi đã mạnh dạng chọn ngôn ngữ lập trình Delphi phục vụ cho mục đích của mình
Như một điều tất yếu, tôi phải gặp rất nhiều khó khăn trong lúc thực hiện đề tài bởi trước đây chưa quen sử dụng ngôn ngữ lập trình nói chung và Delphi nói riêng
Bên cạnh đó thời gian thực hiện đề tài rất giới hạn nên chương trình chưa được phong phú lắm về nội dung và số câu hỏi trắc nghiệm, tuy nhiên việc cập
Trang 4GVHD: VƯƠNG TẤN SĨ Trang 3 SVTH: NGÔ MINH HẢI
nhật và phát triển nội dung chương trình là rất dễ dàng trong trường hợp chúng ta muốn nâng cấp chương trình
II CÁC GIẢ THUYẾT CỦA ĐỀ TÀI
Tìm hiểu ngôn ngữ lập trình Delphi
Sưu tập câu hỏi trắc nghiệm theo từng bài
Tìm hiểu các phần mềm chuyên dụng khác phục vụ cho việc xây dựng chương trình như: Windows Movie Maker, SnagIt, các chương trình xử lý ảnh,…
Scan nội dung sách giáo khoa Vật lý 12 nâng cao
Các bước để thực hiện một dự án trong Delphi
III PHƯƠNG PHÁP VÀ PHƯƠNG TIỆN THỰC HIỆN ĐỀ TÀI
1 Phương pháp
Nghiên cứu lý thuyết
Cách thức làm việc và quản lý dự án của Delphi trong môi trường WINDOWS
Thực hành và điều chỉnh: Đối với mỗi mục tiêu trong quá trình xây dựng chương trình, sau khi đọc tài liệu phải bắt tay vào thực hiện mục tiêu ngay, ban đầu chương trình chưa thỏa mãn được yêu cầu, thậm chí là sai
so với yêu cầu của mục tiêu, do đó bắt buộc tôi phải điều chỉnh liên tục cho đến khi đạt mục tiêu đã đề ra
IV CÁC BƯỚC THỰC HIỆN ĐỀ TÀI
Đề tài được chia làm 3 giai đoạn:
Giai đoạn 1: Tham khảo tài liệu và thu thập dữ liệu
Giai đoạn 2: Xây dựng một sản phẩm cụ thể
Giai đoạn 3: Viết luận văn
Trang 5tự học đối với học sinh.
2 Thực trạng xung quanh nội dung ngôn ngữ lập trình Delphi
Dephi 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 tới đố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 nhanh 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 quá 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òncho cả Linux và NET
Với khả năng mạnh như vậy của Dephi, tôi hoàn toàn an tâm khi dùng nó để triển khai các ứng dụng của Điều cần quan tâm ở Dephi 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 Delphicũng như những nhà lập trình chuyên nghiệp
II TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH DELPHI
1 Giới thiệu về ngôn ngữ lập trình 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 Tuy
nhiên đến thời điểm này thì Delphi 7 là phiên bản phù hợp nhất và dễ dùng nhất,
do đó tôi đã quyết định sử dụng Delphi 7 phục vụ cho công việc của mình
Trang 6GVHD: VƯƠNG TẤN SĨ Trang 5 SVTH: NGÔ MINH HẢI
2 Môi trường phát triển thí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 5phần: Cửa sổ chính của chương trình Delphi, cửa sổ thiết kế 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, bạn sẽ có một giao diện (Interface) để thiết kế (Design), biên dịch (Compile) và sữa lỗi (Debug) dự án mà bạn đang phát triển
Hình 1: Giao diện của dự án mới tạo trong Delphi 7
1: Cửa sổ chính của Delphi 72: Cửa sổ thiết kế biểu mẫu3: Cửa sổ liệt kê các thành phần, đối tượng dạng cây
4: Cửa sổ thiết lập thuộc tính thành phần, đối tượng
5: Của sổ soạn thảo mã lệnh
3 Cửa sổ chính của Delphi:
Cửa sổ chính của Delphi chính là cửa sổ có thanh tiêu đề chứa tên dự án (Projeect 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)
1
2
4
53
Trang 74 Thanh thực đơn chính và thanh công cụ:
4.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 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, sữa lỗi, chạy chương trình,…
Hình 2: Thanh thực đơn chính
4.2 Thanh công cụ (Toolbars):
Trong Delphi có nhiều thanh công cụ như: thanh công cụ chuẩn (Standard), thanh sữa 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 mệnh 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ụ
Trang 8GVHD: VƯƠNG TẤN SĨ Trang 7 SVTH: NGÔ MINH HẢI
5 Bảng chứa các thành phần của Delphi (Component Palette)
Thành phần (Component), hay đượ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à 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 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 của thẻ Standard
Trang 96 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)
6.1 Cửa sổ thiết kế mẫu:
Khi bạn tạo một dự án mới, môi trường phat triển thích hợp IDE của Dephi 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ị thuộc tính dựa trên Properties, và các thủ tục dựa vào Events, được xác định trong Ojbect Inspector, cho việc thiết kế chương trình Trong hầu hết các 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 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
Hình 5: Các Components trên Form (Label, Edit, Button, Memo)
Các giá trị của From và các giá trị của 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ế
Các Component: Frames, MainMemu, PopupMenu, Label, Edit, Memo, Button,… trong thẻ Standard
Trang 10GVHD: VƯƠNG TẤN SĨ Trang 9 SVTH: NGÔ MINH HẢI
6.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 đặt tên trong quá 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ó
Hình 6: Cửa sổ soạn thảo mã lệnh cho Form unit có tên Unit1.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.
Trang 117 Cửa sổ thuộc tính và sự kiện của đối tượng (Object Inspector)
Cửa sổ thuộc tính và sự kiện của đối tượng (Object Inspector)
Hình 7: Thẻ Properties và thẻ Events của cửa sổ Object Inspector.
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 các tác động 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
Trang 12GVHD: VƯƠNG TẤN SĨ Trang 11 SVTH: NGÔ MINH HẢI
8 Cửa sổ liệt kê các thành phần, đối tượng dạng cây (Object TreeView)
Hình 8: Cửa sổ liệt kê các thành phần, đối tượng dạng cây trên Form.
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ê
Trang 13cho các Form Unit và tên dự án Ở ví dụ trên, Form Unit có tên là Unit1.pas và tên dự án là Project1.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.
Để 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 Dephi 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 khai báo sau từ khóa uses.
Trang 14GVHD: VƯƠNG TẤN SĨ Trang 13 SVTH: NGÔ MINH HẢI
Chỉ thị biên dịch {$*.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 Dephi 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 các Form Khi chương trình được thi hành (Run, Execute), nó được 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.
9.2 Các tập tin chứa mã lệnh (Unit file)
Trong mỗi ứng dụng được viết bởi Dephi thường gồm có một tập tin dự án (Project file) và nhiều tập tin đơn vị chương trình (Unit file) Cửa sổ soạn thảo
mã lệnh ở phần trên Mỗi khi ta thêm vào mới 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 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 như trên các thành phần (Component) mà chúng được đặt trên nó
9.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 (click chuột phải) trên Form
rồi chọn View as Text
Để 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
9.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 ứ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ộ Dephi
Trang 15III BẮT ĐẦU VỚI DELPHI 7
1 Bắt đầu dự án Chương trình Vật lý 12 nâng cao với Delphi
2 Lưu dự án
Trước khi bắt đầu triển khai dự án, bạn nên lưu dự án vào một thư mục cụ thể, khi cần lưu dự án thì ta có thể chọn các thao tác sau:
phím Ctrl-S để lưu tập tin viết mã lệnh (*.pas)
Chọn menu File| Save As để lưu và đổi tên tập tin viết mã lệnh
Chọn menu File| Save Project As để lưu và đặt tên cho tập tin dự án (*.dpr)
phím Shift-Ctrl-S để lưu cả hai tập tin viết mã lệnh và tập tin dự án Nếu
cả hai tập tin này chưa được đặt tên thì Delphi sẽ yêu cầu người dùng đặt tên cho nó
Trang 16GVHD: VƯƠNG TẤN SĨ Trang 15 SVTH: NGÔ MINH HẢI
Thông thường một dự án có nhiều tập tin, do đó ta phải tạo một thư mục (Folder) để chứa dự án đó: dùng Windows Explorer, hoặc trong hộp “Save As” Click vào nút “Create New Folder” để tạo thư mục Trong quá trình thiết kế biểu mẫu và viết mã lệnh thì chúng ta nhớ thường xuyên nhấn tổ hợp phím Shift-Ctrl-
S để lưu toàn bộ chương trình
3 Biên dịch và thực thi một dự án
3.1 Biên dịch chương trình
Khi đang thiết kế và viết mã lệnh người dùng có thể ra lệnh biên dịch chương trình dùng để kiểm tra các lỗi phát sinh trong quá trình thực hiện bằng
cách chọn menu Project| Compile hoặc dùng tổ hợp phím Ctrl-F9 Nếu chương
trình có phát sinh lỗi thì trong cửa sổ viết mã lệnh xuất hiện một vệt sáng ngay dòng có lỗi và bên dưới sẽ có thông báo là lỗi gì Nếu chương trình không có lỗi xuất hiện thì trình biên dịch sẽ biên dịch chương trình chúng ta thiết kế thành một
tập tin thực thi (*.exe).
3.2 Thực thi một dự án
Khi chương trình đã hoàn thành, chúng ta đã kiểm tra không còn lỗi thì có
thể thực thi chương trình bằng cách chọn menu Run| Run hoặc Click vào biểu
có thể thi hành tập tin thực thi (*.exe) được tạo ra từ trình biên dịch
3.3 Tạo một dự án mới
Để tạo một dự án mới, ta chọn File| New| Application thì một cửa sổ thiết
kế biểu mẫu và một cửa sổ viết mã lệnh mới sẽ xuất hiện để ta bắt đầu một chương trình mới Với thao tác này thì Delphi chưa lưu (Save) chương trình của chúng ta chưa thực hiện
Khi thiết kế biểu mẫu và viết mã lệnh nếu có nhu cầu chuyển qua lại giữ phần thiết kế và phần viết mã lệnh thì người dùng nhấn phím F12 hoặc Click chuột lên phần chúng ta muốn chọn
Trang 17Trong dự án người dùng có thể có nhiều Form, để thêm Form vào dự án, người dùng sử dụng chức năng File| New| Form, lúc này người dùng sẽ có thêm 1 Form mới trong dự án, đi kèm với nó là một tập tin (*.pas) Để chọn 1 Form nào
đó trong số các Form làm Form chính, người dùng sử dụng chức năng Project| Options| Forms như hình sau:
4 Bắt đầu dự án “Chương trình Vật lý lớp 12 nâng cao” với Delphi
4.1 Xây dựng mô hình cho chương trình
Chương trình gồm 148 Form:
1 Form chính
10 Form chương: tương ứng với 10 chương trong sách giáo khoa
61 Form bài: tương ứng với 61 bài trong sách giáo khoa
61 Form trắc nghiệm: trương ứng với 61 bài học
1 Form ghi chú: dùng để ghi lại những lưu ý trong quá trình học
1 Form đồng hồ: dùng để đếm ngược thời gian khi làm trắc nghiệm
13 Form tiểu sử: dùng để giới thiệu các nhà khoa học
Trang 18GVHD: VƯƠNG TẤN SĨ Trang 17 SVTH: NGÔ MINH HẢI
Mô hình được thể hiện trên sơ đồ cấu trúc sau:
Form chính
Form trắc nghiệm bài 1Form trắc nghiệm bài 2
Form trắc nghiệm bài 3
Form trắc nghiệm bài 4
Form trắc nghiệm bài 5
Trang 194.2 Tiến hành xây dựng Form
Chọn File| New Form từ trình đơn Lưu tập tin chứa Form với tên *.pas
Đặt lên Form các thành phần đối tượng VCL với các thuộc tính và phương thức xử lý tình huống như sau:
CaptionBroderStylePopupMenuPosition
OnCreate
Formbai1Formbai1bsDialogPopupMenuchonmaupoDesktopCenter
FormCreate
BorderStyleColor
Panel1bsSingleclNone
StretchPicture
OnMouseDown OnMouseMove OnMouseUp
ImagehienthiTrue
(Tbitmap)
ImagehienthiMouseDown ImagehienthiMouseMove ImagehienthiMouseUps
CaptionCursorFont.ColorFont.SizeStyleGlyphLayoutTransparent
OnClick
SpeedbuttonSaveSave
csHandPointGreen9fsBold(Tbitmap)blGraphTopTrue
Trang 20GVHD: VƯƠNG TẤN SĨ Trang 19 SVTH: NGÔ MINH HẢI
Sau khi đã đặt lên Form các thành phần VCL chúng ta sẽ sắp xếp chúng vào các vị trí trên Form như hình sau:
TLabel
TImage
TPanel
TSpeedButtonTTimer
TPopupMenuTSaveDialog
Hình ảnh Form lúc thiết kế
Trang 21Sau khi thiết kế Form và viết mã lệnh (Code) cho Form chúng ta sẽ được giao diện lúc thực thi chương trình là:
Khi khởi tạo màu nền mặc định của Form là màu xám (clMenuBar), để
trên thẻ Standard, sau khi nhúng vào Form và đặt tên (Name) cho đối tượng TpopupMenu chúng ta vào Opject InSpector| Properties| Items để đặt các Items ứng với các màu nền khác nhau
Để thực hiện đổi màu người dùng kích chuột phải lên Form (Rclick) sau
đó chọn một trong các màu nền đã được lập trình sẵn như hình:
Ví dụ người dùng chọn màu xanh (Blue) thì nền của Form sẽ đổi thành màu xanh ngay sau khi người dùng kích chuột vào Items Blue như trên hình Để thực hiện điều đó, chúng ta có thể viết Code tình huống (Events) OnClick của Items Blue như sau:
procedure TFormbai1.BlueClick(Sender: TObject);
begin
RClick chọn màu nền cho Form
InSpector| Properties|
Hình ảnh Form lúc thực thi (Run) chương trình
Trang 22GVHD: VƯƠNG TẤN SĨ Trang 21 SVTH: NGÔ MINH HẢI
Các hình ảnh sẽ thay đổi sau mỗi 5 giây
Thuộc tính của đối tượng TTimer
Trang 23Để tải (Load) hình từ đĩa vào đối tượng Timage ta kích chọn đối tượng này sau
đó vào Object Inspector| Properties| Picture và thực hiện theo đường dẫn của Delphi, quá trình đó được mô tả như hình theo các bước sau:
Click vào đây
Chọn ảnh cần Load, sau đó Click “Open”
Click vào nút “Load”
Trang 24GVHD: VƯƠNG TẤN SĨ Trang 23 SVTH: NGÔ MINH HẢI
Ta cũng làm tương tự để Load nội dung các trang sách lên chương trình
Làm tương tự chúng ta Load ảnh cho 10 Timage
Click vào “Load”
Trang 25Sau khi Load ảnh và đặt các thuộc tính cho các TTimer xong chúng ta sẽ viết Code cho chúng như sau:
{Xử lý tình huống sau 5 giây}
procedure TFormbai1.Timerl1Timer(Sender: TObject);
begin
Imageslideshow.Picture:=Imagel1.Picture; //thay đổi hình ảnh sau 5
giây
Timerl1.Enabled:=False; //Tắt đối tượng Timerl1
Timerl2.Enabled:=True; //Kích hoạt đối tượng Timerl2
end;
Làm tương tự cho các đối tượng còn lại
Khi rê chuột vào đối tượng Tlabel có Caption là “Xem hình đúng cỡ” thì người
dùng sẽ xem được Size gốc của ảnh:
Để thực hiện điều đó chúng ta viết Code cho sự kiện OnMouseMove của đối tượng Tlabel như sau:
{Xử lý tình huống khi người dùng muốn xem ảnh đúng Size gốc}
procedure TFormbai1.Labelphongto1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Imagehienthi.Visible:=False; //Giấu hình ảnh hiện tại
Labelphongto2.Visible:=True; //Làm nổi chử báo hiệu đang ở chế độ
Trang 26GVHD: VƯƠNG TẤN SĨ Trang 25 SVTH: NGƠ MINH HẢI
Để cập nhật thời gian của hệ thống (System) và cho hiển thị lên màn hình
cho tình huống OnCreate của Form như sau:
procedure TFormbai1.TimerthoigianTimer(Sender: TObject);
begin
Labelthoigian.Caption:='Bây giờ là: '+TimeToStr(Now()); //Cập
nhật thời gian của hệ thống và cho hiển thị trên Form
end;
Để hiển thị các Form bằng các TspeedButton chúng ta cĩ thể viết Code như sau:
{Xử lý tình huống khi người dùng kích chuột vào nút trắc nghiệm}
procedure TFormbai1.SpeedButtontracnghiemClick(Sender: TObject); begin
Form1.Hide;//Ẩn Form chính
Formbai1.Hide; //Ẩn Form bài
Formtnbai1.show;//Hiện Form trắc nghiệm
end;
Đoạn Code trên viết cho TspeedButton cĩ Properties| Name là
SpeedButtontracnghiem và cĩ sự kiện (Events) là OnClick, chúng ta làm tương
tự cho các TspeedButton cịn lại
Bắt đầu vào nội dung bài học:
Để mở các trang sách người dùng kích chuột vào SpeedButton “Mở” thì các trang sách hiện ra ở dạng thu nhỏ
Trang 27Chúng ta cĩ thể sử dụng đoạn Code sau cho tình huống trên:
{Xử lý tình huống khi người dùng kích chuột vào nút mở sách}
procedure TFormbai1.SpeedButtonmoClick(Sender: TObject);
begin
//Kiểm tra sách cĩ đang ở trạng thái mở hay khơng
If speedbuttonmo.Down then //Nếu sách mở
Speedbuttonmo.Caption:='Mở'; //Dổi Caption
Imagesachmo.Visible:=False; //Giấu hình ảnh sách mở (hiện ảnh sách
đĩng)
Paneltrangsach.Visible:=False; //Giấu các trang sách đi
Panelshow.Visible:=False; //Vơ hiệu hĩa khả năng View của trang sách
end;
end;
Để đọc lướt qua các trang người dùng chỉ cần rê chuột đến trang muốn xem, hình ảnh phĩng to của trang đĩ sẽ hiện ở bên cạnh:
Trang 28GVHD: VƯƠNG TẤN SĨ Trang 27 SVTH: NGÔ MINH HẢI
Để thực hiện điều đó chúng ta có thể viết Code như sau:
{Xử lý tình huống khi người dùng rê chuột vào các trang sách khi sách đang ở trạng thái mở}
procedure TFormbai1.trang1MouseMove(Sender: TObject; Shift:
TShiftState; X,
Y: Integer);
begin
Imagehienthi.Visible:=False; //Giấu trang đang hiển thị
Imageshow.Picture:=trang1.Picture; //Gán trang đang được rê chuột cho
{Xử lý tình huống khi người dùng rê chuột ngoài các trang sách}
procedure TFormbai1.PaneltrangsachMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Imagehienthi.Visible:=True; //Xuất hiện lại trang hiển thị
Panelshow.Visible:=False; //Giấu trang View
end;
Nếu người dùng muốn nghiên cứu, đánh dấu (Highlight), ghi chú (Take Note) đối với trang nào thì Click vào trang đó, người dùng sẽ có được trang được chọn ở trên Form như hình:
Trang 2 đã được chọn
Trang 29Ngay lập tức “Trang 2” bị đổi màu, đồng thời vị trí trang 2 trống, thông báo với người dùng rằng trang 2 đã được chọn, khi Click chọn trang khác thì trang 2 sẽ được trả về vị trí cũ, chúng ta có thể viết Code cho tình huống trên như sau:
{Khi người dùng kích chuột vào các Imagetrang}
procedure TFormbai1.trang1Click(Sender: TObject);
//Kiểm tra xem trước đó trang nào đang được mở để thu về
If trang2.Visible = false then
Trang 30GVHD: VƯƠNG TẤN SĨ Trang 29 SVTH: NGÔ MINH HẢI
Đoạn Code trên được viết cho Timage có Properties| Name là trang1 với Events là OnClick chúng ta làm tương tự cho các đối tượng còn lại
Sau khi chọn trang, nếu muốn chúng ta có thể đóng sách lại bằng thao tác Click vào SpeddButton “Đóng” và bắt đầu làm việc trên trang đã được chọn với các tiện ích đã được lập trình sẵn như sau:
Phóng to, thu nhỏ trang sách bằng cách Click vào hai SpeedButton
Chúng ta có thể viết code cho hai đối tượng này như sau;
{Xử lý tình huống khi người dùng kích chuột vào nút phóng to}
procedure TFormbai1.SpeedButtonZoomOutClick(Sender: TObject); begin
Imagehienthi.ClientHeight:=Imagehienthi.Height+20; //Chiều cao
khung hình tăng thêm 20 pixel
Trang 31Trong trường hợp người dùng cần Highlight lên trang sách, người dùng có thể thao tác như sau:
chương trình sẽ hiển thị 1 hộp thoại nhắc nhở người dùng chọn màu cần Highlight như hình:
Chúng ta có thể viết Code cho tình huống trên như sau:
{Xử lý tình huống khi chế độ Highlight được bật}
procedure TFormbai1.SpeedButtonPenClick(Sender: TObject);
begin //Kiểm tra điều kiện chế độ Highlight đang bật hay tắt
If SpeedButtonPen.Down then
//Nếu bật
begin
Panelmangche.Hide; //Hiện bảng màu RGB
Imagehienthi.Cursor:=crCross; //Đổi trạng thái chuột sang “Cross” Imagehienthi.Enabled:=True; //Cho can thiệp vào vùng Higlight
Imagehienthi.AutoSize:=True; //Trả hình ảnh hiển thị về đúng SIZE gốc
(bắt buộc để cho việc Highlight chính xác)
Speedbuttonzoomout.Enabled:=False; //Vô hiệu hóa nút phóng to và thu