Nhập môn. Friday, January 23, 2004 Quyển 1 HƯỚNG DẪN LẬP TRÌNH DELPHI. Phụ lục

Similar documents
Nhập môn. Friday, January 23, 2004 Quyển 1 HƯỚNG DẪN LẬP TRÌNH DELPHI. Phụ lục

BÀI 1: VBA LÀ GÌ? TẠO MACRO, ỨNG DỤNG CÁC HÀM TỰ TẠO (UDF), CÀI ĐẶT ADD-INS VBA là gì?

HƯỚNG DẪN SỬ DỤNG HỆ THỐNG CẬP NHẬT CHỨNG THƯ SỐ HOTLINE:

Tạo Project với MPLAB

HƯỚNG DẪN CÁCH SỬ DỤNG WINDOWS MOVIE MAKER

Khối: Cao Đẳng nghề và Trung Cấp Năm 2009

HƯỚNG DẪN CÀI ĐẶT PHẦN MỀM DIỆT VIRUS AVIRA

BÀI TẬP THỰC HÀNH LẬP TRÌNH WINDOWS C#

Internet Protocol. Bởi: Phạm Nguyễn Bảo Nguyên

Giáo trình này được biên dịch theo sách hướng dẫn của Sun Light. Vì là hướng dẫn kỹ thuật, trong này những thuật ngữ kỹ thuật bằng tiếng Anh tôi chỉ

Cài đặt và cấu hình StarWind iscsi trên Windows. iscsi SAN là gì?

TÀI LIỆU THỰC HÀNH MÔN CƠ SỞ DỮ LIỆU NÂNG CAO

Chương 6. Transport Layer. Tài liệu : Forouzan, Data Communication and Networking

Tình huống 1: PPPoE với Username và Password

Bài Thực hành Asp.Net - Buổi 1 - Trang: 1

HƯỚNG DẪN SỬ DỤNG PLESK PANEL

Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính

Tài liệu hướng dẫn: Stored Procedure

SIMULATE AND CONTROL ROBOT

Nhấn nút New để tạo 1 biến mới Trang 17

STACK và QUEUE. Lấy STACK

CẤU TRÚC DỮ LIỆU NÂNG CAO

Cụ thể những công việc mà AndroidManifest.xml thực hiện: - Đặt tên cho Java package của ứng dụng.

HƯỚNG DẪN SỬ DỤNG ĐẦU GHI H.264 DVR VISION VS (4CH - 8CH - 16CH)

Chương 5. Network Layer 19/09/2016 1

Tạo repository mới. The working tree. The staging index. Lệnh git init tạo một repository loại git. tại thư mục hiện tại: $ git init

Bộ môn HTMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Chương 5. Network Layer. Phần 1 - Địa chỉ IPv4. Tài liệu : Forouzan, Data Communication and Networking

ĐỌC, GHI XML VỚI C# TRONG ADO.NET --- SỬ DỤNG VISUAL STUDIO

Kỹ thuật thu nhỏ đối tượng trong Design (Layout)

Bài tập lớn số 1. Giả lập bộ định thời

Hướng dẫn cài đặt FPT

LẬP TRÌNH WINDOWS FORM VỚI CÁC CONTROL NÂNG CAO (Các control trình bày dữ liệu dưới dạng danh sách)

Nội dung chính của chương. Các công nghệ đĩa cứng Cấu tạo vật lý của đĩa cứng Cấu tạo logic của đĩa cứng Cài đặt đĩa cứng như thế nào?

Tìm hiểu Group Policy Object và các ví dụ

Google Search Engine. 12/24/2014 Google Search Engine 1

Bộ môn MMT&TT, Khoa Công Nghệ Thông Tin và TT, ĐH Cần Thơ

Dọn "rác" Windows 7 vào dịp cuối năm

HƢỚNG DẪN TRIỂN KHAI KASPERSKY - MOBILE DEVICE MANAGEMENT

Phần 2. SỬ DỤNG POWERPOINT ĐỂ CHUẨN BỊ NỘI DUNG TRÌNH BÀY

MỤC LỤC. Giáo trình Thiết kế web Trang 1

CHƯƠNG 2: CÁC ĐẶC ĐIỂM VỀ MÔI TRƯỜNG PHÁT TRIỂN (IDE)

Online Appointment System will work better with below conditions/ Hệ thống đặt hẹn online sẽ hoạt động tốt hơn với điều kiện sau đây:

BELGIUM ONLINE APPOINTMENT

Ôn tập Thiết bị mạng và truyền thông DH07TT - Lưu hành nội bộ (không sao chép dưới mọi hình thức)

GIẢI THUẬT ĐỊNH TUYẾN (ROUTING ALGORITHM)

Mạng máy tính - Computer Network: Hệ. Giao thức - Protocol:

GV: Phạm Đình Sắc or

TỔNG QUAN VỀ.NET VÀ C#

1 Bước 1: Test thử kit LaunchPad.

Entity Framework (EF)

Bài tập căn bản Visual Basic.Net Vòng lặp. txtn. txtketqua. btntinh. txtn. txtketqua. btntinh. Trang 1

BÀI GIẢNG CHƯƠNG 3 GIAO TIẾP KẾT NỐI SỐ LIỆU

Môn Học: Cơ Sở Dữ Liệu 2. Chương 3 LẤY DỮ LIỆU TỪ NHIỀU NGUỒN

B5: Time to coding. Tới thư mục src/example.java và thay đổi nội dung file như sau: Mã: package at.exam;

TÀI LIỆU HƯỚNG DẪN SỬ DỤNG HOSTING PLESK PANEL

BÀI 6 LÀM VIỆC VỚI THÀNH PHẦN MỞ RỘNG CỦA CSS3

I. Hướng Dẫn Đăng Nhập:

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

Lecture 12. Trees (1/2) Nội dung bài học:

HỢP ĐỒNG MUA BÁN HÀNG HÓA QUỐC TẾ GV: NGUYỄN THỊ BÍCH PHƯỢNG

Mô hình dữ liệu quan hệ (Relational data model)

SIEMENS INDUSTRIAL NETWORKS

LÂ P TRI NH WEB ASP.NET

BÀI THỰC HÀNH SỐ 1. Quản trị tập tin: 1/ Tạo các thư mục sau: Bài tập thực hành linux Linuxlab. bt1 bt11 bt111. bt121. bt12. bh1 bh11 bh111.

Chương 7. Application Layer. Tài liệu : Forouzan, Data Communication and Networking

HƯỚNG DẪN SỬ DỤNG DỊCH VỤ CDN

Bài 7: Các cấu trúc điều khiển

NHẬP MÔN LẬP TRÌNH KHOA HỌC DỮ LIỆU. Bài 10: Thư viện Pandas (2)

BÀI LAB ĐỔI TÊN DOMAIN

Bài 10. Cấu trúc liên nối. khác nhau được gọi là cấu trúc liên nối. nhu cầu trao đổi giữa các module.

BẢO MẬT TRONG SQL SERVER

dụng một chính sách, điều này giúp dễ dàng quản lý và cung cấp tính năng Load Balancing (cân bằng tải) phục vụ tốt hơn các yêu cầu của tổ chức.

2.4. GIAO THỨC MQTT Các khái niệm cơ bản MQTT được phát triển bởi IBM và Eurotech, phiên bản mới nhất là MQTT 3.1 MQTT (Giao vận tầm xa) là

HƯỚNG DẪN QUẢN TRỊ HỆ THỐNG

HƯỚNG DẪN SỬ DỤNG NHANH MINDJET MIND MANAGER

PHÁT TRIỂN ỨNG DỤNG WEB

SMS Live Hướng dẫn sử dụng

Các kiểu định địa chỉ họ MSC-51

Câu 1. Thiết bị nào sau đây dùng để kết nối mạng? a)ram b)rom c)router d)cpu Câu 2. Hệ thống nhớ của máy tính bao gồm: a) Bộ nhớ trong, Bộ nhớ ngoài

Parallels Cloud Server 6.0

Bài 10: Cấu trúc dữ liệu

KIẾN TRÚC MÁY TÍNH. Giảng viên: ThS. Phan Thanh Toàn. v

Bài thực hành số 2 QUYỀN và ROLE

Bài 13: C++11. EE3490: Kỹ thuật lập trình HK1 2017/2018 TS. Đào Trung Kiên ĐH Bách khoa Hà Nội

[ASP.NET] MVC Framework và ví dụ minh họa

LINQ TO SQL & ASP.NET

3 cách Backup Profile trong Windows 7

Cấu hình Router FTTH ---X---

JAVASCRIPT. Giảng viên : Ths. PHẠM ĐÀO MINH VŨ

Đa ngôn ngữ (Internationalization) trong Servlet

Cập nhật ResultSet trong JDBC

Qu n ả tr h ố g t p ậ tin

ĐỀ CƯƠNG CHI TIẾT HỌC PHẦN

CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

FCAPS. nhìn từ quan điểm ITIL. Công cụ ManageEngine và ứng dụng khung ITIL trong các tổ chức, doanh

Lab01: M V C Lưu ý: Để thực hành, các bạn phải cài Visual Studio 2013 trở lên mới hỗ trợ MVC5.

METAPOST. 1.1 Cấu trúc file Metapost. 1.2 Cấu trúc trong Preamble. beginfig(...) endfig;... extra_beginfig(...) extra_endfig... begingraph(...

MA NG MA Y TI NH (Computer Networks)

TỔNG QUAN LẬP TRÌNH JAVA

Transcription:

Friday, January 23, 2004 Quyển 1 HƯỚNG DẪN LẬP TRÌNH DELPHI Nhập môn Phụ lục TỰA ĐỀ Trang Giới thiệu thông tin 2 Tóm lượt môi trường lập trình Delphi 3 Bài 1 Chương trình Delphi đơn giản nhất 4 Bài 2 Sử dụng nút nhấn và thuộc tính 5 Bài 3 Xuất văn bản và sử dụng nhãn 7 Bài 4 Ra và vào của văn bản 9 Bài 5 Sử dụng lệnh IF 12 Bài 6 Adding Machine - Alter it to do [ - * div ] as well. 13 Bài 7 Thêm Items vào một List Box 14 Bài 8 Tạo menu - Một Text Editor - Files 15 Bài 9 Graphics, sự lặp lại sử dụng FOR và các biến 20 Ngôn ngữ Pascal 1

Lời giới thiệu Delphi cho phép bạn tạo ra một chương trình bằng các công cụ rất mạnh. Chẵn hạn như với 3 cái click chuột và không cần xử lý mã lệnh bạn có thể tạo và chạy một chương trình soạn thảo đơn giản. Công việc mà phải mất vài tuẫn lễ để làm được với các ngôn ngữ cũ. Mỗi chương trình Delphi đều có 1 PROJECT (dự án), chứa đựng mọi thứ cần thiết cho chương trình. Đây là ngôn ngữ dựa trên nền tảng ngôn ngữ hướng đối tượng của Pascal (Object Pascal). Đặt một dự án trong 1 thư mục riêng biệt. Tài liệu này yêu cầu bạn phải biết về những công cụ trong Window và làm sao để quản lý hồ sơ (File), thư mục (Folder) để bắt đầu công việc này! Thư mục chương trình. Đây là 1 ý tưởng tốt để các các dự án Delphi của bạn vào trong thư mục mà bạn đã định (thư mục của mình). Bạn sẽ nhầm lẫn nếu có quá nhiều các dự án đặt trong các thư mục khác nhau. Việc đầu tiên là bạn hãy tạo một thư mục để cất giữ chương trình của bạn chẵn hạn: D:\Delphi\My Program Có thể sử dụng MS DOS or Windows Explorer để tạo thư mục. 2

Tóm lượt môi trường lập trình Delphi Có nhiều cách để thực hiện các lệnh trong Windows. Những ví dụ đã cho bên dưới: 1) Alt+F4.Nghĩa là bạn phải nhấn giữ phím Alt, tiếp theo bấm F4 và thả phím Alt. 2) Alt File Save. Bấm Alt tiếp theo F cuối cùng S. Chữ bị gạch dưới biểu hiện là phím nóng. Bạn đừng nên giữ Alt sau khi bấm F. 3) Click chuột vào File sau đó click Save. 4) Click vào biểu tượng trên ToolBar như vầy nè: 5) Học và sử dụng các phím tắt trong menu 6) Để File Save-All nó là Ctrl+V Các phím tắt cần thiết Đóng cửa sổ hiện thời. Thoát Chạy chuong trình Ghi nhận Form thiết kế Ghi nhận thay đổi đối tượng Chuyển tới điều khiển tiếp theo Chuyển đổi thuộc tính tính và các Tab trong đối tượng Tạo xử lý được lựa chọn trong đối tượng Thuôc tính có sẵn trong đối tượng Thả list của Control trong đối tượng Thả list của đối tượng Alt+F4 Alt File Exit F9 F12 F11 Tab Ctrl+Tab Ctrl+Enter Ctrl+Enter Ctrl+Down-Arrow Alt+Down-Arrow 3

Học Bài 1 - Chương trình Delphi đon giản nhất Do This Nhiệm vụ Explanation Viết chương trình theo những bước bên dưới. Khởi động Delphi Tạo một dự án (project) Bạn cần tạo thư mục này. Use MS DOS or File Manager. Alt File New Application Alt File Save All Hai file sẽ được lưu. Lưu project của bạn tới đó. F:\Delphi\My Program Chạy project. F9 UNIT1.PAS PROJECT1.DPR Nhớ phím này. Bạn sẽ có một form trống, có thể đổi kích thước, di chuyển và đóng. Đóng chương trình bạn đang chạy. Nó rất quan trọng để nhớ làm nó. Delphi sẽ xử lý khác nếu bạn còn chương trình nào chạy và nó có thể bối rối. Bấm F11 nhiều lần và ghi nhớ nó. Bấm F12 nhiều lần và ghi nhớ nó Lưu công việc của bạn. Sau đó thoát từ Delphi. Ba phương pháp có sẵn Alt SpaceBar Close Alt+F4 Click vào góc cạnh của form để đổi kích thước F11 F11 F11 Nhớ phím này. F12 F12 F12 Nhớ phím này. Alt File Save All Alt File Exit 4

Học bài 2 Nút nhấn và thuộc tính. Do This Nhiệm vụ Explanation Viết chương trính theo chỉ dẫn dưới đây Mở F:\Delphi\lkn\Project1.Dpr Chọn một button bằng cách click chuột trái vào biểu tượng như hình bên Alt File Open Project Bấm chuột trái lên form1 và rê chuột để vẽ nút nhấn như hình bên Thay đầu đề (Caption) của nút bên phần Properties. Thay vì Button1, bạn hãy thay bằng &Red (dấu & đề chỉ thị phím tắt, ở đây là chữ R ). Sau đó bấm F11. Bấm đúp chuột trái vào buttion này. Khi đó bạn sẽ làm gì, Delphi sẽ viết vài dòng lệnh Pascal cho bạn Đây là đoạn mã lệnh Delphi tạo ra.bạn không được thay đổi mà chỉ đánh thêm lệnh thực thi vào đó procedure TForm1.Button1Click(Sender: TObject); Đánh dòng lệnh này. 5

Form1.Color := clred; cl nghĩa là màu. Nó là CLRED chứ không phải là C1RED. Chạy chương trình và nhấn chuột trái vào nút có nhãn Red. Form sẽ đổi thành màu đỏ Đóng chương trình mà bạn đang chạy procedure TForm1.Button1Click(Sender: TObject); Form1.Color := clred; F9 Alt+F4 6

Nhiệm vụ: Thêm nhiều nút lệnh theo dạng clyellow, clgreen như hình bên Xem các mã lệnh tạo bằng Delphi. NHỚ rằng bạn KHÔNG ĐƯỢC thay đổi or xóa mã lệnh tạo bằng Delphi. Bạn chỉ có thể xóa, thay đổi mã mà mình tạo. Sự khởi đầu cho việc tạo mã lệnh bằng Delphi. Lưu dự án (project) của bạn. Thoát khi bạn đã kết thúc Alt File Save Project Alt File Exit 7

Học Bài 3 Nhãn và đầu ra văn bản Trong bài học này, bạn sẽ viết một chương trình hiển thị văn bản (text) khi nhấn vào nút. Việc trình bày văn bản là kỹ năng cơ bản cần trong lập trình. Trong bài học 2, bạn đã viết đoạn mã để trả lời khi nhấn nút. Mã này được gọi là xử lý sự kiện. Những sự kiện ở đây là những biến cố khi nhấn nút, chuột di chuyển hoặc bấm chuột. Trong bài học này, bạn sẽ kích hoạt được các sự kiện xử lý nhiều hơn. Do This Nhiệm vụ Viết chương trình theo hướng dẫn dưới đây. Khi bạn nhấn nút, đoạn text Hello World sẽ xuất hiện. Tạo thư mục cho dự án này. Use MS DOS or Windows File Manager. Tạo dự án Delphi mới Lưu dự án này tới Explanation Tạo thư mục này: C:\Delphi\Hello Alt File New Application Alt File Save All C:\Delphi\Hello Tạo một Button và một Label trên form này. Click vào label. Click vào form. Click vào button. Click vào form. 8

Thay đổi Tiêu đề của Button1 là &Hello giống như bài học 2. Thay đổi Caption của Label1 là để trống. 9

Bấm đúp vào nút &Hello để phát sinh xử lý sự kiện Đây là mã lệnh Delphi tạo. Bạn Không Thể thay đổi nhưng có thể them vào mó Thêm vào bộ xử lý sự kiện Chạy chương trình. Click vào button. Đoạn text Hello World sẽ xuất hiện. Nhiệm vụ Thêm 2 button và label vào form. Làm đoạn text xuất hiện tương ứng khi nhấn nút. Thực hành nó cho đến khi bạn thấy tốt hoặc quá chán! Nhiệm vụ Hãy thử nghiệm các thuộc tính khác của đối tượng. Ghi chú Mã lệnh bên dưới gọi là Bộ xử lý sự kiện EVENT HANDLER procedure TForm1.Button1Click(Sender: TObject); procedure TForm1.Button1Click(Sender: TObject); Label1.Caption := 'Hello World!'; F9 Chẳn hạn thay đổi màu của form tới cllime. Bạn hãy click vào mũi tên để tìm các màu trong danh sách. Phải chăn là bạn có thể thay màu, font chữ. Tất cả các nhiệm vụ này thực hiện chỉ bằng cái click chuột. 10

Học Bài 4 Ra, vào Văn Bản. Trong bài học này, bạn sẽ viết chương trình nhận văn bản từ bàn phím và in ra màn hình khi bạn nhấn nút. Đây là kỹ năng cơ bản cần trong lập trình. Bạn cũng học làm sao để chuyển dịch những đối tượng từ form. Bạn sẽ có thể nhầm lẫn khi thực hiện nhiễm vụ này trừ khi bạn nhớ tên cáclabels, Buttons và Edit Controls của bạn Do This Nhiệm vụ Explanation Viết chương trình theo chỉ dẫn dưới đây Đánh text vào Edit Control (top). Khi bạn bấm nút Copy, text sẽ hiện ra trong label ở cửa sổ (hình bên) Mở dự án đã làm lúc trước. Xóa tất cả Button, Label ở trong form đó. Xóa các mã xử lý sự kiện cũ. Đây là một khó khăn, bạn hãy xóa các lệnh mà bạn đánh. Delphi sẽ tự động xóa các mã này nếu không dùng. Nếu việc xóa có sai lệch thì bạn có thể tạo dự án mới cho chắc! Alt File Open Project Bấm chuột vào các đối tượng và bấm Del. Nếu các Label có thể khó thấy, bạn có thể bấm Tab để chuyển qua Label đó. Bấm F12 để hiện cửa sổ mã lệnh và xóa chúng. procedure TForm1.Button1Click(Sender: TObject); Label1.Caption := 'Hello World'; Xóa dòng xử lý sự kiện các chữ in đậm (Chữ in đậm Bold) Lặp lại bước này với tất cả các mã lệnh mã bạn đã tạo để xử lý sự kiện. Sử dụng Alt File Save Project để Delphi dọn dẹp các mã lệnh mà nó tạo ra. 11

Bây giờ chúng ta bắt đầu xây dựng chương trình. Tạo một Edit, 1 Label và 1 Button trên form chương trình. Bấm F11 để kiểm tra đối tượng (Object). Thuộc tính Text của Edit1 để trống Thuộc tính Caption của Label1 để trống. Thuộc tính Caption của Button1 là Copy. Bấp đúp vào nút Copy để tạo xự kiện tương ứng. Bạn phải nhập hàng một. Delphi sẽ tạo ra cái khác. Nhiệm vụ procedure TForm1.Button1Click(Sender: TObject); Label1.Caption := Edit1.Text; Khi bạn bấm vào nút nhấn, thì Label1.Caption sẽ thể hiện nội dung của Edit1.Text. Viết một chương trình với nhiều điều khiển hơn. Chương trình này phải copy Name và Address khi bạn bấm nút Copy. Xem thử nó có giống như ví dụ trên không? 12

Sử dụng Object Inspector để đổi tên Labels, Buttons và Edit controls như ở đây. Bạn phải kết luận với ButtonCopy EditAddress EditSurname EditTitle LabelAddress LabelAddressOutput LabelSurname LabelSurnameOutput LabelTitle LabelTitleOutput Tạo sự kiện điều khiển procedure TForm1.ButtonCopyClick(Sender: TObject); LabelTitleOutput.Caption := EditTitle.Text; LabelSurnameOutput.Caption := EditSurname.Text; LabelAddressOutput.Caption := EditAddress.Text; 13

Học bài 5 - Quyết định sử dụng lệnh IF Một kỹ năng cơ bản mà người lập trình phải làm. Đây là nhiệm vụ của bài 2 nhưng chúng ta phải thay đổi màu từ form, nó chọn 1 màu mới thay thế màu cũ. Xây dựng lại chương trình trong bài học 2 làm cho form màu đỏ. Cho chương trình làm việc. Thấy rằng bạn có thể làm nó mà không cần sử dụng hướng dẫn này. rồi thay đổi các sự kiện như sau.việc này tiêu biểu để sử dụng If Statement (lệnh IF). procedure TForm1.Button1Click(Sender: TObject); messagebeep(0); { Tiếng bíp báo hiệu khi bạn nhấn nút} if form1.color = clbtnface then { Nếu form có màu của nút} {khi đó form thành } form1.color := clred {màu đỏ} end else if form1.color = clred then {nếu form không phải màu đỏ} form1.color := clyellow; {chuyển thành màu vàng} end else form1.color := clbtnface; end Nhiệm vụ Thêm nhiều màu hơn vào sự chọn lựa đã thực hiện ở trên. Thêm vào button thứ hai vào form để khi qua bước khác qua những màu nối tiếp với nhau. Thay đổi lệnh messagebeep(0) để chương trình kêu tiếng bíp lên khi form trở lại màu đỏ. 14

Học bài 6 Thêm phép tính Nhiệm vụ Viết chương trình chứa đựng những thành phần sau và có tên như hình bên. Tạo sự kiện xử lý của nút nhấn như sau. procedure TForm1.ButtonAddClick(Sender: TObject); editanswer.text := inttostr( strtoint(editfirstnumber.text) + strtoint(editsecondnumber.text)); Ví dụ này là một khó khăn chung với người lập trình. Hầu hết các ngôn ngữ đều tốt về inputting và outputting văn bản. Việc làm này cũng thế nhưng đối với những số thì không phải dễ như vậy đâu. Chương trình Pascal cũ phải chăng đã bỏ quên văn bản được nhập khi một số được chờ đợi. Duy nhất Delphi là chấp nhận văn bản này. Có nghĩa là văn bản phải được chuyển đổi tới số tương ứng của nó. Sử dụng hàm sau đây để thực hiện việc này. strtoint( Text Goes Here ) Hàm này có tên là String To Integer nhưng được rút ngắn. String là kiểu dữ liệu Pascal để cất giữ văn bản. Bạn có thể tìm hiểu Pascal để biết thêm chi tiết. Integer là kiểu dữ liệu Pascal để cất giữ những số nguyên, không bao gồm các số sau dấu phẩy của số thập phân. Sự chuyển đổi đảo ngượic được sử dụng inttostr(number goes Here). Hàm này có tên là Integer To String nhưng tên được rút gọn. Nhiệm vụ Thêm ba nút lên form của bạn có nhãn là Subtract, Multiply and Divide. Những ký hiệu toán học cho Delphi như sau: Thao tác Ký hiệu use cho số nguyên Ký hiệu sử dụng cho số thực Cộng + + Trừ - - Nhân * * 15

Chia lấy thương DIV / 16

Học Bài 7 - Thêm Items tới một List Box Nhiệm vụ Thêm 1 ListBox, 1 Edit và 2 Buttons vào form. Gắn nhãn đúng cho nút. Tạo xử lý sự kiện như bên dưới. Học cách sử dụng ItemIndex. Những xử lý sự kiện procedure TForm1.Button1Click(Sender: TObject); listbox1.items.add(edit1.text); procedure TForm1.Button2Click(Sender: TObject); listbox1.items.delete(listbox1.itemindex); Nhiệm vụ: Sử dụng Delphi Help System để biết thông tin trên topic như ItemIndex. Chèn con trỏ vào đó và bấm F1. Hệ thống giúp đỡ này thì khó với những người mới nhưng ta phải sử dụng thường xuyên. nếu bạn xem những chủ đề trong hướng dẫn, Bạn sẽ biết được làm cách nào để biết cách sử dụng các thành phần mà bạn chưa từng biết. Nếu bạn đã biết quá rõ những vấn đề chính thì bạn có thể lờ đi. Nhiệm vụ Viết chương trình tương tự như phần trên nhưng sử dụng 1 ComboBox thay cho 1 ListBox. Use Delphi Help đề làm bài này. Nếu bạn bấm OK, Quick phải được thêm vào danh sách. Sau đó ComboBox phân loại danh sách. (Chỉ nhấp đúp chuột 1 lần là đủ để làm nó) 17

Học bài 8 - Tạo Menus - Một Text Editor - Files Một ứng dụng đầy đủ Bài học này tiên tiến hơn và sử dụng nhiều đặc tính mới trong Delphi. Bài này cũng sử dụng rất nhiều điều khiển. Bạn sẽ cần để tìm chúng. Nhìn vào ảnh ở dưới. Nếu giả sử chuột lướt qua nút nhận, một tip màu vàng hiện ra cho bạn biết chức năng của nút này. Nếu bạn sử dụng TABS, bạn sẽ chuyển qua điều khiển khác. 1 Tạo thư mục cho công việc của bạn chẵn hạn F:\Delphi\Editor 2 Khởi động Delphi 3 Tạo 1 dự án mới : File New Project 4 Lưu dự án tới F:\Delphi\Editor 5 Thêm các thành phần sau vào form của bạn và đặt các thuộc tính tương ứng. Đổi tên các thành phần để khớp với chức năng khi đánh mã. Ghi chú : Chạy chương trình sau mỗi bước thực hiện để phát hiện lỗi nhanh và dễ dàng sử chữa. Thành phần T. tính Giá trị Giải thích Memo1 Align alclient Lines Blank Chọn TStrings [...] và xóa Memo1 MainMenu1 WantTabs True (Nhấp đúp chuột để làm điều này.) Không thuộc tính nào cần thay đổi. 18

OpenDialog 1 DefaultEx t FileName Filter TXT *.TXT Text File *.TXT *.TXT Click vào [...] để làm. Bạn sẽ điền vào cái hộp này và nhấn OK. SaveDialog1 InitialDir. Title Open A File DefaultEx TXT t FileName *.TXT Filter Text File *.TXT *.TXT Click vào [...] để làm. Bạn điền vào hộp (box) và click OK. InitialDir Title Save File With A New Name Form1 Caption Untitled 6 Click vào icon MainMenu1 để tạo menu chứa các submenu. Đánh Captions và ShortCuts (phím tắt) như hình dưới đây. 19

Sử dụng '&' để xác định kí tự phím nóng khi bấm Alt và kí tự sau dấu &. Ví dụ: &File E&xit Điền các thuộc tính của menu như hình bên. 7 Tạo sự kiện cho File Exit bằng cách nhấn đúp chuột vào icon MainMenu1 và nhấn đúp vào tùy chọn menu File Exit. Delphi sẽ tạo các mã xử lý sự kiện sau:. procedure TForm1.Exit1Click(Sender: TObject); Bạn đánh vào đó Close; Nó sẽ như thế này: (thực hiện đóng chương trình) procedure TForm1.Exit1Click(Sender: TObject); Close; 8 Tạo sự kiện xử lý File Open tương tự như trên và nhấn đúp vào tùy chọn menu File Open. Delphi sẽ tạo mã lệnh xử lý sự kiện sau: 20

procedure TForm1.Open1Click(Sender: TObject); 21

9 Sử dụng Delphi Help System để hoàn tất bước thứ 8 Đọc và theo hướng dẫn trong đó nha bạn. Click vào đối tượng OpenDialog1. Bấm F1 để giúp đỡ. Click Methods để thấy phương pháp làm. Click vào Execute là phương pháp sẵn có duy nhất. Click vào Example để xem ví dụ làm sao sử dụng phương pháp này. Sử dụng Edit Copy để sao chép những hàng ở giữa Begin và End. Bạn cần nó giúp đỡ. Bôi đen những dòng bạn cần và hãy bấm Copy button. Chép những dòng sau: if OpenDialog1.Execute then Memo1.Lines.LoadfromFile(OpenDialog1.FileName); SaveDialog1.Filename := OpenDialog1.FileName; Caption := OpenDialog1.FileName; Paste nó vào giữa Begin và End trong sự kiện bạn tạo ở bài 8. Bạn nên kết thúc lên trên với hàng này. Như vầy nè: procedure TForm1.Open1Click(Sender: TObject); if OpenDialog1.Execute then Memo1.Lines.LoadfromFile(OpenDialog1.FileName); SaveDialog1.Filename := OpenDialog1.FileName; Caption := OpenDialog1.FileName; 10 Tạo sự kiện xử lý cho File Save tương tự như các phần trên để xử lý tùy chọn menu File Save. Bạn nên kết thúc các sự kiện như thế này. Bạn phải đánh vào giữa Begin and End. Delphi sẽ tạo phần còn lại. 22

procedure TForm1.Save1Click(Sender: TObject); if SaveDialog1.FileName <> '*.TXT' Then Memo1.Lines.SavetoFile(SaveDialog1.FileName); { Lưu file } end else messagedlg( 'File has no name.' + chr(13) + { Hiện thông báo} end 'File not saved.' + chr(13) + 'Use File Save As to save the file.', mtwarning, [mbok], 0); 11 Tạo sự kiện xử lý cho File Save As. Rất tương tự với việc xử lý sự kiện File Open. Hãy đánh đoạn mã cho sự kiện như đây. procedure TForm1.SaveAs1Click(Sender: TObject); if SaveDialog1.Execute then Memo1.Lines.SavetoFile(SaveDialog1.FileName); OpenDialog1.Filename := SaveDialog1.FileName; Caption := OpenDialog1.FileName; 23

Học bài 9 - Đồ họa Sự lặp lại sử dụng FOR và các Biến Các Biến Variables có tên như pigeon holes <ai dịch hộ với>. Đây là chương trình sử dụng biến số nguyên nơi số được cất giữ. Số này sử dụng từ 1 tới 10. Để tạo một biến bạn có thể đánh như bên dưới. Tên biến ở đây là i nhưng bạn có thể đặt tên nào mà bạn thích và dễ nhớ cũng được. Vòng lặp FOR Var i : Integer; Cái này được sử dụng khi bạn muốn chương trình lặp lại một nhiệm vụ với số lượng và thời gian định trước. Ví dụ bên dưới là vòng lặp cần lặp lại 10 lần For i := 1 To 10 Do Begin These Steps Are Repeated Ten Times End; { Lặp lại 10 lần} Nh.Vụ Tạo 1 Image và 3 Buttons lên form. Cho mỗi nút mỗi sự kiện thích hợp để xử lý,bạn hãy chép các dòng lệnh ở dưới. Sau đó hãy nâng cao lên, tạo các xử lý và các sự kiện cho riêng bạn. Sử dụng Delphi help để tìm những thủ tục đồ họa khác hơn. 24

Các xử lý sự kiện procedure TForm1.Button1Click(Sender: TObject); Var i : Integer; Image1.Canvas.Pen.Color := clred; { Set Pen Colour } Image1.Canvas.Brush.Color := clred; { Set Brush Colour } { Colour image Red } Image1.Canvas.Rectangle(0, 0, Image1.Width, Image1.Height); Image1.Canvas.Pen.Color := clyellow; { Set Pen Colour } Image1.Canvas.Brush.Color := clyellow; { Set Brush Colour } { Do horizontal lines } For i := 1 To 10 Do { Repeat 10 times } Begin Image1.Canvas.moveTo(0, 10 * I); { Start of line } Image1.Canvas.lineTo(Image1.width, 10 * I); { End of line } End; Image1.Canvas.Pen.Color := cllime; Image1.Canvas.Brush.Color := cllime; { Do vertical lines } For i := 1 To 10 Do Begin Image1.Canvas.moveTo(10 * i, 0); Image1.Canvas.lineTo(10 * i, Image1.height); End; 25

procedure TForm1.Button2Click(Sender: TObject); Image1.Canvas.Pen.Color := clblue; { Set Pen Colour } Image1.Canvas.Brush.Color := clblue; { Set Brush Colour } { Colour image Red } Image1.Canvas.Rectangle(0, 0, Image1.Width, Image1.Height); Image1.Canvas.Pen.Color := clyellow; { Set Pen Colour } Image1.Canvas.Brush.Color := clyellow; { Set Brush Colour } Image1.Canvas.Ellipse(20, 20, 80, 80); Image1.Canvas.Pen.Color := clred; { Set Pen Colour } Image1.Canvas.Brush.Color := clred; { Set Brush Colour } Image1.Canvas.Ellipse(30, 30, 70, 70); procedure TForm1.Button3Click(Sender: TObject); Image1.Canvas.Pen.Color := clyellow; { Set Pen Colour } Image1.Canvas.Brush.Color := clyellow; { Set Brush Colour } { Colour image Red } Image1.Canvas.Rectangle(0, 0, Image1.Width, Image1.Height); Image1.Canvas.Pen.Color := clred; { Set Pen Colour } Image1.Canvas.TextOut(10, 40, 'Hello World'); 26

Ngôn ngữ Pascal Khu vực này giới thiệu những kiến thức cơ bản của Pascal để lập trình Delphi (vì Delphi cũng do Borland sản xuất nên các lệnh cũng tương tự như Pascal) Các kiễu dữ liệu. Những chương trình được sử dụng để xử lý dữ liệu. Sau đây là những kiểu dữ liệu để xây dựng thường dùng trong Pascal. Có một số thường rất ít sử dụng. Khi cất dữ những dữ liệu quan trọng để lựa chọn đúng những dữ liệu đó. Integer (số nguyên) Là những số như12 or -22-32768 tới 32767 là phạm vi sử dụng. Real (số thực) Những số thập phân như 22.7 or -0.0032 Char (kí tự) String[20] (chuỗi) Boolean (logic) Những đặc tính của các kí tự. Cất giữ những số hay văn bản. Trong ví dụ này lên tới 20 kí tự có thể cất giữ. Giá trị True or False (Đúng or Sai). Các Biến. Variables are like named pigeon holes where data can be stored. Biến có những kiểu đặc biệt như trên. Bạn phải cất giữ đúng kiểu trong mỗi biết. Sử dụng tên bất kì để đại diện. Điều này giúp cho chương trình dễ dàng hơn. Good examples VAT_Rate, dayofweek, TAX_Band Bad Examples X, L, Lemming. 27

Các lệnh gán giá trị Đây là làm sao những giá trị được đặt vào trong những biến(pigeon holes). Trong ví dụ dưới, ở đây có các biến là X, sname và ok. Kí tự := là đọc, trong tiếng anh, là becomes (trở thành). X := 3; X trở thành (là ) 3. Cất giữ 3 vào trong biến X. sname := Bloggs ; ok := True sname là Bloggs. Cất giữ Bloggs vào trong biến sname. ok là True. Cất True vào ok. Những đối tượng. Delphi là xây dựng đối tượng chương trình. Đối tượng này có thể sở hữu or chứa đựng đối tượng khác. Đối tượng có thuộc tính của nó. Trong ví dụ dưới đây Form1.Label1.Caption := Hello World! ; Form1 là 1 đối tượng. Form1 chứa đối tượng khác gọi là Label1. Label1 có 1 thuộc tính gọi là Caption. Đoạn text Hello World! được cất vào thuộc tính Caption của Label1. Caption là một biến để cất giữ chuỗi text. Bạn không thể cất giữ các sô nguyên vào trong 1 Caption trừ khi nó được chuyển đổi vào một chuỗi trước đó. Những thủ tục. Những thủ tục như những chương trình nhỏ bên trong một chương trình. Những thủ tục được sử dụng để phá vở chương trình lớn và cho nó vào chương trình nó trong các bit. những thủ tục cho phép bạn thiết kế những chương trình bên trong được Modular. Điều này dễ dàng kiểm tra lỗi, kiểm tra chương trình, thiết kế, ghi chương trình nào đó. Đây là các trình bày các thủ tục Procedure Lemming; Begin Several lines go in here. End; 28

Những sự kiện. Sự kiện là những hành động như bấm nút, click chuột... Delphi được thiết kế để trả lời những sự kiện này. Để làm điều này bạn phải viết những bộ xử lý sự kiện. Bô xử lý sự kiện. Đây là những thủ tục để đáp lại những sự kiện tương ứng. Chẵn hạn, thủ tục bên dưới trả lời tới Form1 khi Button1 được click. Trong ví dụ này, khi sự kiện xuất hiện, dạng khác gọi là tlightform được hiện ra. procedure Form1.Button1Click(Sender: TObject); tlightform.show Bình luận. Pascal programs are usually heavily annotated with text based comments that act as reminders to the programmer of what is going on within the program. This is done so the programmer can still understand the program after not looking at it for a year or two. It is also done so a new programmer can take over from the original one when he or she moves to a new job. BAD COMMENTS GOOD COMMENTS simply repeat the code. explain what is going on and why. X := 3; { X Becomes 3 (This is a bad comment) } dayofweek := 3; { Store the third day (Wed) into dayofweek } { This is a good comment } 29

Sự nối tiếp. Đây là cách thực hiện biến đổi chương trình nối tiếp nhau theo một trình tự định sẵn và không lặp lại. Một ví dụ để làm rõ. Form1.Color := clgreen; { Nền của form màu xanh } Total := 0; { Tổng cộng được cất ở đây } Average := 0; { Trung bình cất ở đây. } Bên dưới là sơ đồ cấu trúc Jackson thể hiện sự nối tiếp đó Sự chọn lọc. Đây là sự quyết định bên trong chương trình. Trong Pascal, những quyết định sử dụng lệnh If. Chẵn hạn mã bên dưới đọc như sau trong tiếng Anh. Nếu màu của Form1 là màu đỏ thì làm cho màu của Form1 đổi thành màu xanh lá cây. If Form1.Color = clred then Begin Form1.Color := clgreen; End; If có thể sử dụng phức tạp hơn ví dụ If Form1.Color = clred then Begin Form1.Color := clgreen; End Else Begin Form1.Color := clred; End; 30

Nếu Form1 là màu đỏ thì đổi thành xanh lá cây. Nếu nó là màu khác tức không phải màu đỏ thì cho nó thành đỏ. Lệnh If có thể kết hợp một cách phức tạp hơn. If Form1.Color = clred then Begin Form1.Color := clgreen; End Else If Form1.color = clgreen Then Begin Form1.color := clblue; End Else Begin Form1.Color := clred; End; Lệnh If này có thể lồng vào trong lệnh If khác. Trong ví dụ bên dưới, bạn ngăn ngừa chia cắt bằng zero. If Op = Divide then Begin If N2 = 0 then Begin messagedlg( You can not divide by zero., mtwarning, [mbok], 0); End Else Begin Answer := N1 div N2; End End; Sơ đồ cấu trúc Jackson thể hiện sự chọn lọc này. 31

32

Vòng lặp. Có ba cách làm cho chương trình lặp lại. WHILE REPEAT FOR Repeat Zero of More times. Repeat One or More times. Lặp lại 1 số lượng thời gian biết trước. Ví dụ: FOR For I := 1 To 100 Do { Repeat 100 times. } Begin Label1.Caption := IntToStr(I); Label1.Update End; WHILE While NOT allsorted Do { Keep going until it is finished } Begin SortTheStuff; End; DO Do { Keep going until Finished } allthisstuff; { Unusual because Begin } andallthis; { and End are not needed } Until Finished; FOR For Ch := A To Z Do Begin Label1.Caption := CharToStr(I); Label1.Update End; 33

FOR Backwards For I := 100 DownTo 1 Do Begin Label1.Caption := IntToStr(I); Label1.Update End; Sơ đồ cấu trúc Jackson cho vòng lặp For Ch := 'Z' DownTo 'A' Do Begin Label1.Caption := CharToStr(Ch); Label1.Update End; Chuỗi văn bản Từ Hello là chuỗi text. Cần sáu byte để hiển thị. Chiều dài của văn bản được cất giữ từ vị trí số 0. những thuộc tính được cất giữ trong những byte kế tiếp từ 1-5. 0 1 2 3 4 5 6 7 8 9 Length 5 H e l l o Wasted Space Để cất giữ Fred Bloggs cần 12 Bytes. 11 F r e d B l o g g s 34

Hàm: Thường dùng để tính toán hoặc sản sinh ra dữ liệu chứa trong một kết quả riêng biệt. Ở đây là ví dụ về các hàm. Sum := Add(N1, N2); { Một cách để thêm 2 số # nhau} Text := Join(FirstBit, SecondBit); Bigger := Max(N1, N2); { Trở lại nếu có bất cứ giá trị nào lớn hơn N1 or N2} Đây là ví dụ về hàm dùng để chuyển đổi một đặc tính đơn vào trong chuỗi văn bản. Nó được viết và bình luận trong thái độ phê chuẩn. { } Definition Input Process Output String := CharToStr(Char) Hàm này dùng kí tự đơn cho đầu vào (Ch). Đặc tính nhập vào xử lý bằng cách cất giữ tại một vị trí trong chuỗi (S). Tại vị trí Zero chuỗi (S) có chiều dài (1) được cất giữ Đầu ra chuỗi kí tự đơn chứa Ch. Function TForm1.CharToStr(Ch : Char) : String; Var S : String; Begin S[0] := Chr(1); { Cất giữ độ dài xâu tại posn 0 } S[1] := Ch; { Cất giữ Ch tại posn 1 } CharToStr := S { Trả lại kết quả} End; 35

Logic AND, OR, NOT, XOR (VÀ, HOẶC, KHÔNG, XOR) Những cái này dùng để sử dụng với If, While và Do. Rõ ràng trong tiếng Anh chúng có nghĩa cho nhau phải không bạn? Chúng sẽ dễ học nếu thể hiện theo kiểu bảng. IF A AND B Then Nếu cả A và B đúng, khi đó. IF A OR B Then Một trong A hoặc B phải đúng. While NOT Done Do Nếu nó đúng thì làm cho nó sai và nếu sai thì làm cho nó đúng (^_^). If A XOR B Then Nó đúng hoặc cái khác đúng nhưng không phải cả 2 và không phải là không đúng. (???Bạn hiểu không???) Câu tiếng Anh của nó là vầy, có ai dịch giúp với: One or other must be true but not both and not neither 36

Bảng giá trị 0 là Sai (False). 1 là đúng (True). AND A B Output 0 0 0 0 1 0 1 0 0 1 1 1 OR A B Output 0 0 0 0 1 1 1 0 1 1 1 1 XOR A B Output 0 0 0 0 1 1 1 0 1 1 1 0 NOT A Output 0 1 1 0 37

Ví dụ: If (Button = mbleft) AND (X = 20) Then Begin dothis; End; If (day = Mon ) OR (day = Tue) Then Begin doshopping End; While NOT Finished Do Begin dothis; End; MỜI CÁC BẠN CHUYỂN QUA QUYỂN 2 ĐỂ HỌC BIÊN DỊCH: Lê Khắc Như Cảm ơn các bạn đã sử dụng Nếu bạn thấy có chỗ nào không đúng thì nhớ báo cho mình sửa lại nha Email: laptrinh04@yahoo.ca Website: http://www.lkn.b4.to 38

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 Những ví dụ trong lập trình Delphi Quyển 2 Le Khac Nhu --- Website : http://www.lkn.b4.to Page 1 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 Delphi Programming Bạn cần phải đọc quyển I trước khi đọc những ví dụ trong quyển này. Quyển sách này giành cho bạn, hãy bấm và bấm, bạn sẽ thông thạo Delphi. Hướng dẫn này sẽ giúp bạn điều khiển Delphi. Có vài chương trình ví dụ cùng với những nhiệm vụ tương tự. Bạn hãy thử làm các nhiệm vụ đó dựa vào các ví dụ. Tất cả các bài làm của các ví dụ, bạn nên bỏ vào thư mục của mình. D:\Examples\ME\ Nếu bạn muốn phẻ thì trên Website của tui có các chương trình ví dụ này (bao gồm tất cả các file cần thiết) Phụ Lục Ví dụ Trang Nội dung ví dụ 1) Output 3 Hiển thị text trong 1 label. 2) Input 4 Gộp các chuỗi text. 3) Add 5 Add, Subtract, Multiply, Divide 4) RTotal 6 Running Total 5) Picture 8 Đồ họa trong Delphi 6)Lệnh If 10 Quyết định thực hiện 7) Animation 12 Animation đơn giản 8) Lệnh For 14 Sự lặp lại sử dụng For 9) Lệnh While 15 Sự lặp lại sử dụng While 10) Sổ số 17 Sổ số kiến thiết!!! 11) Delay 19 Hoãn thời gian - Giờ hệ thống 12) Calculator 21 Một chiếc Calculator (máy tính) 13) Fractal 24 Đồ họa Fractal Advanced\Spiral 26 Đồ họa tiên tiến hơn Le Khac Nhu --- Website : http://www.lkn.b4.to Page 2 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 1) Ví dụ về OutPut (Xuất) dữ liệu Biểu đồ IPO Đầu vào Quá trình Dữ liệu nhập thử Chờ đợi đầu ra Đầu ra thực tế Bằng chứng BEFORE CLICK Button1 Click Click vào button. Hello World! chép vào label1. Không. Hello World! hiện trên label. Hello World! AFTER CLICK Hành động cần thiết Không. { Ví dụ Chương trình này minh họa việc hiện text trên label khi ta bấm chuột. Nhiệm vụ Thêm button và label khác vào chương trình này. Thiết đặt sao cho phù hợp với tình huống. } unit Unit1; interface { Delphi tạo dòng này } uses { Delphi tạo dòng này } SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type { Delphi tạo dòng này } TForm1 = class(tform) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } var { Delphi tạo dòng này } Form1: TForm1; implementation { Delphi tạo dòng này} {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); { Delphi tạo dòng này} label1.caption := 'Hello World!'; { BẠN ĐÁNH Ở DÒNG NÀY } { Delphi tạo dòng này} end. { Delphi tạo dòng này} Le Khac Nhu --- Website : http://www.lkn.b4.to Page 3 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 2) Ví dụ về việc Input (Nhập) dữ liệu IPO Chart Button1 Click Đầu vào Click vào button. Quá trình Nối các chuỗi văn bản được nhập. Hiển thị kết quả Nhập dữ liệu thử Foo Wee Đợi đầu ra FooWee Đầu ra thực tế FooWee Bằng chứng BEFORE CLICK AFTER CLICK Hoạt động cần thiết Không. { Ví dụ Chương trình nối 2 chuỗi văn bản lại. N.Vụ Thay đổi chương trình sao cho bất cứ cái gì bạn nhập được nối lại và lặp lại 2 lần.} unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); { Nhập 2 mảnh của text lại. Dấu + nghĩa là nhập. } label1.caption := edit1.text + edit2.text; end. Le Khac Nhu --- Website : http://www.lkn.b4.to Page 4 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 3)Thực hiện phép tính cộng (Add) IPO Chart ButtonAdd Click Nhập Click the button. Quá trình Cộng những số được nhập vào. Hiện kết quả trong labelanswer Nhập dữ liệu thử 2 và 7 Chờ đầu ra 9 Đầu ra thực tế 9 Bằng chứng BEFORE CLICK AFTER CLICK Hành động cần Không. { Ví dụ Cộng 2 số với nhau N.Vụ Sử dụng - * div để trừ, nhần và chia lấy dư. Điều gì sẽ xảy ra khi bạn div bằng 0? } unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Edit1: TEdit; Edit2: TEdit; ButtonAdd: TButton; LabelAnswer: TLabel; procedure ButtonAddClick(Sender: TObject); private { Private declarations } public { Public declarations } var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ButtonAddClick(Sender: TObject); { inttostr để chuyển số nguyên thành chuỗi text } { strtoint để chuyển chuỗi text thành số nguyên } labelanswer.caption := inttostr(strtoint(edit1.text) + strtoint(edit2.text)); end. Le Khac Nhu --- Website : http://www.lkn.b4.to Page 5 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 4) Ví dụ về Running Total IPO Chart Nhập Quá trình thực hiện Dữ liệu nhập thử 1.1 Chờ đầu ra 1.1 Đầu ra thực tế 1.10000000000036 Bằng chứng ButtonAdd Click Click vào button. Thêm số được nhập vào giá trị của runningtotal (giá trị đầu là 0). BEFORE CLICK AFTER CLICK Hành động cần làm Làm tròn một số lỗi nhỏ. Không cần làm gì trong ví dụ này. { Ví dụ Thêm các số được nhập vào và hiển thị running total. Ghi chú làm tròn các lỗi! N.Vụ 1 Đếm các số khi chúng được nhập vào. Hiện thị kết quả đếm. N.Vụ 2 Tiến triển trung bình của những số được nhập vào. Hiển thị kết quả trung bình. } unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TFormMain = class(tform) EditInput: TEdit; ButtonAdd: TButton; LabelRunningTotal: TLabel; LabelAnswer: TLabel; procedure FormCreate(Sender: TObject); procedure ButtonAddClick(Sender: TObject); private { Private declarations } public { Public declarations } var runningtotal : Real; { Số thực là số dạng 123.456 } Le Khac Nhu --- Website : http://www.lkn.b4.to Page 6 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 FormMain: TFormMain; implementation {$R *.DFM} { Thủ tục này hoạt động khi chương trình được khởi động. Nó khởi tạo biến runningtotal tới 0. } procedure TFormMain.FormCreate(Sender: TObject); runningtotal := 0; { Thủ tục xử lý khi nhấn nút. } procedure TFormMain.ButtonAddClick(Sender: TObject); { strtofloat conterts một chuổi text tới dấu phẩy động của số thực } { floattostr conterts một dấu phẩy động của số thực tới 1 chuỗi text } runningtotal := runningtotal + strtofloat(editinput.text); labelanswer.caption := floattostr(runningtotal); editinput.setfocus; { Làm editinput sẵn sàng cho số tiếp theo. } editinput.selectall; { Tất cả dữ liệu editinput đã được bôi đen.} end. Le Khac Nhu --- Website : http://www.lkn.b4.to Page 7 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 5) Ví dụ về Picture (Hình ảnh) IPO Input Input Test Data Process Expected Outpot Actual Output Evidence ButtonPaint Click Click vào ButtonPaint Không Sử dụng Canvas.Pen.Color, Canvas.MoveTo và Canvas.LineTo để vẽ tam giác màu đen. Hình tam giác màu đen cần được vẽ. Hình tam giác được vẽ. Action Needed Không IPO Input Input Test Data Process Expected Outpot Actual Output Evidence ButtonRed Click Click vào ButtonRed không Sử dụng Canvas.Pen.Color, Canvas.MoveTo và Canvas.LineTo để vẽ tam giác màu đỏ. Red triangle should be drawn. Red triangle is drawn. Action Needed { EXAMPLE TASK } unit Unit1; Không Vẽ đồ họa đơn giản. Vẽ hình vuông màu vàng và xanh lục. Sử dụng Delphi help Kiếm đối tượng TCanvas. Xem phương pháp làm. Và có lẽ bạn sẽ vẽ được hình tròn, textout, cung và nhiều nữa. interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; Le Khac Nhu --- Website : http://www.lkn.b4.to Page 8 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 type TForm1 = class(tform) PaintBox1: TPaintBox; ButtonPaint: TButton; ButtonRed: TButton; procedure ButtonPaintClick(Sender: TObject); procedure ButtonRedClick(Sender: TObject); private { Private declarations } public { Public declarations } var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ButtonPaintClick(Sender: TObject); paintbox1.canvas.pen.color := clblack; paintbox1.canvas.moveto(50, 10); paintbox1.canvas.lineto(100, 100); paintbox1.canvas.lineto(5, 100); paintbox1.canvas.lineto(50, 10); procedure TForm1.ButtonRedClick(Sender: TObject); paintbox1.canvas.pen.color := clred; paintbox1.canvas.moveto(50, 10); paintbox1.canvas.lineto(100, 100); paintbox1.canvas.lineto(5, 100); paintbox1.canvas.lineto(50, 10); end. Le Khac Nhu --- Website : http://www.lkn.b4.to Page 9 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 6) Ví dụ về cách sử dụng lệnh IF { Ví dụ Quyết định sử dụng lệnh IF. Nút nhấn sẽ làm form thành màu đỏ. Không quyết định gì nữa. Nút thứ hai làm form thành màu xanh lục nếu màu của form lúc đó là màu đỏ. Nút thứ ba. Nếu form màu đỏ, làm nó thành màu xanh lục. Nếu form màu xanh lục, làm nó thành màu vàng. Nếu form màu vàng, làm nó thành màu đỏ. Không trả lời tới mọi màu khác. N.Vụ } unit Unit1; Thêm nút thứ tư. Làm nó thay đổi các màu trên bất cứ lúc nào bạn thích. Bạn nên tìm xem có những màu nào có sãn bằng các làm theo cách sau đây: Help Topic Search Đánh màu vào TColor Bấm Enter 2 lần. Click vào TColor Click vào Color Property interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } var Form1: TForm1; implementation {$R *.DFM} { Làm form thành màu đỏ. Quyết định N làm cái này. } Le Khac Nhu --- Website : http://www.lkn.b4.to Page 10 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 procedure TForm1.Button1Click(Sender: TObject); Form1.color := clred; { Nếu form màu đỏ, làm nó thành xanh lục. Không làm khác nữa. } procedure TForm1.Button2Click(Sender: TObject); if Form1.color = clred then Form1.color := clgreen end { Nếu form màu đỏ, làm nó thành màu xanh lục. Nếu form màu xanh lục, làm nó thành màu vàng. Nếu form màu vang, làm nó thành màu đỏ. Ko làm nữa nếu form đã đổi đủ màu. } procedure TForm1.Button3Click(Sender: TObject); if Form1.color = clred then Form1.color := clgreen end else if Form1.color = clgreen then Form1.color := clyellow end else if Form1.color = clyellow then Form1.color := clred end end. Le Khac Nhu --- Website : http://www.lkn.b4.to Page 11 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 7) Ví dụ sử dụng Animation (Ảnh động) { Ví dụ Chương trình này sử dụng 2 control và timers. Sử dụng windows paintbrush để vẽ 2 hình. Một hoàn đảo hoang và 1 tấm lợp. Thiết bị hẹn giờ sẽ chỉ định thời gian để tấm lợp di chuyển là 3 giây. mặt người đàn ông biến đổi trong từng giây. N.Vụ Thiết lập hoạt cảnh cho mình. Nên tìm hiểu cách dùng Timer để hiển thị ảnh. } unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(tform) Timer1: TTimer; Image2: TImage; Image1: Timage; Timer2: TTimer; Button1: TButton; procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } var Form1: TForm1; implementation {$R *.DFM} { image2 được di chuyển theo chỉ định của timer1. } procedure TForm1.Timer1Timer(Sender: TObject); image2.left := image2.left + 2; if image2.left > 169 then { Đóng chương trình trình khi ảnh } { tới phía phải màn hình. } Le Khac Nhu --- Website : http://www.lkn.b4.to Page 12 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 close end { Làm cho man nhấy mắt trong mỗi biến đổi của timer2. } procedure TForm1.Timer2Timer(Sender: TObject); { Thay đổi màu mắt của man. } if image1.canvas.brush.color = clgray then image1.canvas.brush.color := clwhite end else image1.canvas.brush.color := clgray { Vẽ một elip nhỏ. Đó là con mắt. } image1.canvas.ellipse(85, 74, 89, 78) { Đóng chương trình nếu nút nhấn được bấm. } procedure TForm1.Button1Click(Sender: TObject); close end. Le Khac Nhu --- Website : http://www.lkn.b4.to Page 13 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 8) Ví dụ sử dụng For Loop (Vòng lặp FOR) { EXAMPLE Sự lặp lại, sử dụng 1 For Loop, được trình diễn ở đây. Vẽ văn bản lên một canvas cũng được biểu diễn. TASK ONE (Beginners) TASK TWO (Advanced) Một biến gọi là Counter được sử dụng. Đó là một biến Integer (số nguyên). Làm sự lặp lại đó trong bất cứ Chương trình nào mà bạn muốn làm. } unit Unit1; Hiển thị 'Hello' thành một hình tròn Trong form. Sử dụng hàm SIN và COS. interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); Var Counter : Integer; For Counter := 1 To 10 Do Begin Form1.Canvas.TextOut(Counter * 10, Counter * 10, 'Hello'); End end. Le Khac Nhu --- Website : http://www.lkn.b4.to Page 14 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 9) Ví dụ sử dụng WHILE LOOP (Vòng lặp WHILE) { EXAMPLE Một vòng lặp WHILE là sự liên tục. Sự lặp lại tiếp tục miễn là giá trị của X1 không phải là zero. TASK unit Unit1; Viết chương trình chứa đựng một while loop. Vòng lặp while lặp lại zero or nhiều lần. Nó được sử dụng khi số lượng việc lặp lại Chưa được biết trước. } interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(tform) Image1: TImage; ButtonPaint: TButton; procedure ButtonPaintClick(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ButtonPaintClick(Sender: TObject); Var X1, Y1, X2, Y2 : Integer; Colour : TColor; X1 := 1; { Chắc chắn rằngx1 không là zero hoặc thủ tục sẽ } { không bao giờ chạy. Dọn các hình vẽ trước đây. } image1.canvas.rectangle(0, 0, image1.width, image1.height); { Vẽ những đường ngẫu nhiên với màu ngẫu nhiên cho đến khi X1 = 1 } while X1 <> 0 do { Cho một vài giá trị ngẫu nhiên. } X1 := random(image1.width); Y1 := random(image1.height); X2 := random(image1.width); Y2 := random(image1.height); { Cho một màu ngẫu nhiên. } Colour := random($100) + $100 * Le Khac Nhu --- Website : http://www.lkn.b4.to Page 15 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 random($100) + $10000 * random($100); { Đặt màu cho bút và vẽ các đường thẳng. } image1.canvas.pen.color := Colour; image1.canvas.moveto(x1, Y1); image1.canvas.lineto(x2, Y2); { Thủ tục này chạy một lần khi chương trình được khởi động. } procedure TForm1.FormCreate(Sender: TObject); { Tạo một số thứ ngẫu nhiên. } randomize end. Le Khac Nhu --- Website : http://www.lkn.b4.to Page 16 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 10) Ví dụ tạo chương trình LOTO (Sổ số) { EXAMPLE Một chương trình chọn số ngẫu nhiên. TASK Sử dụng chương trình này như ví dụ, viết chương trình để chọn số ngẫu nhiên. Chương trình này cho phép số trùng nhau. Nhìn thấy nếu bạn có thể làm nó. } unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(tform) Image1: TImage; Button1: TButton; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } Procedure MyShow(aNumber : Integer); var Form1: TForm1; implementation {$R *.DFM} { ---------------------------------------------------------------- } { This procedure selects and displays one lotery number. Its position is determined by anumber. } procedure TForm1.MyShow(aNumber : Integer); Image1.Canvas.Pen.Color := clyellow; { Gives yellow outline } Image1.Canvas.Brush.Color := clred; { Gives red circle } Image1.Canvas.Font.Color := clyellow; { Gives yellow text } Image1.Canvas.Font.Size := 24; { Gives bigger text } { Draw the ellipse } Image1.Canvas.Ellipse(aNumber * 40-20, anumber * 40-20, anumber * 40 + 50, anumber * 40 + 50); { Display the text } Le Khac Nhu --- Website : http://www.lkn.b4.to Page 17 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 Image1.Canvas.TextOut(aNumber * 40, anumber * 40, inttostr(random(49) + 1)) { ---------------------------------------------------------------- } procedure TForm1.Button1Click(Sender: TObject); Var Counter : Integer; For Counter := 1 to 7 Do { For all seven lottery numbers DO } Begin MyShow(Counter) { Display the ball } End { ---------------------------------------------------------------- } procedure TForm1.Timer1Timer(Sender: TObject); { This procedure runs once every ten seconds. It displays the word Lottery. It also changes the colour of the text. } Image1.Canvas.Pen.Color := cllime; Image1.Canvas.Brush.Color := cllime; if Image1.Canvas.Font.Color = clred then Image1.Canvas.Font.Color := clyellow end else Image1.Canvas.Font.Color := clred Image1.Canvas.Font.Size := 24; Image1.Canvas.TextOut(Image1.Width div 2, 100, ' Lottery ') { ---------------------------------------------------------------- } procedure TForm1.FormCreate(Sender: TObject); { This procedure runs when the program first starts up. Randomize causes the random number sequence to start on a different random number on each run. } randomize { ---------------------------------------------------------------- } end. { ---------------------------------------------------------------- } Le Khac Nhu --- Website : http://www.lkn.b4.to Page 18 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 11) Ví dụ về Time Delay (Trì hoãn thời gian) { EXAMPLE This program shows how to do a time delay using a Delphi System timer. When you press the button, after five seconds, the word Hello appears. TASK Write a program that counts from one to ten at half second time intervals and displays the count. When it reaches ten, make something happen such as a messagebeep(0) or a picture being drawn. } unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(tform) Button1: TButton; Timer1: TTimer; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } count : Integer; procedure dosomething; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.doSomething; label1.caption := 'Hello' procedure TForm1.Button1Click(Sender: TObject); count := 5; Le Khac Nhu --- Website : http://www.lkn.b4.to Page 19 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 label1.caption := '' procedure TForm1.FormCreate(Sender: TObject); count := 0; procedure TForm1.Timer1Timer(Sender: TObject); if count <> 0 then count := count - 1; if count = 0 then dosomething end label2.caption := inttostr(count); if label3.caption = 'Tick' then label3.caption := 'Tock' else label3.caption := 'Tick' end. Le Khac Nhu --- Website : http://www.lkn.b4.to Page 20 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 12) Tạo chiếc máy tính đơn giản { EXAMPLE Đây là ví dụ về chiếc máy tính đơn giản. Nó tính được Cộng và tính Trừ. TASK Học chương trình để hiểu nó và sau đó Thêm vào máy tính thành phần Times, Divide, Square root và nếu muốn bạn làm từ X tới Y Và các hàm khó hơn nữa. } { ================================================================ } unit Mainform; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; { ================================================================ } type modetype = (none, plus, minus); { Add more modes here. } TForm1 = class(tform) EditDisplay: TEdit; ButtonPlus: TButton; ButtonMinus: TButton; ButtonEquals: TButton; ButtonClear: TButton; procedure FormCreate(Sender: TObject); procedure ButtonClearClick(Sender: TObject); procedure ButtonPlusClick(Sender: TObject); procedure ButtonEqualsClick(Sender: TObject); procedure ButtonMinusClick(Sender: TObject); private { Private declarations } public { Public declarations } { You type these in. } mode : modetype; resultsofar : Real; procedure calculate; { ================================================================ } var Form1: TForm1; implementation {$R *.DFM} { ================================================================ } Le Khac Nhu --- Website : http://www.lkn.b4.to Page 21 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 { ================================================================ } procedure TForm1.Calculate; { Do a calcualtion based on the mode. } if mode = none then resultsofar := strtofloat(editdisplay.text); end else if mode = plus then resultsofar := resultsofar + strtofloat(editdisplay.text); end else if mode = minus then resultsofar := resultsofar - strtofloat(editdisplay.text); { Refresh the answer / input display. } editdisplay.text := floattostr(resultsofar); editdisplay.setfocus; editdisplay.selectall; { ================================================================ } { Ensure that the initial values are OK. } { This happens when the form is created. } procedure TForm1.FormCreate(Sender: TObject); resultsofar := 0.0; mode := none; { ================================================================ } { CLEAR BUTTON } { Clear the displays. } { Set the result so far to zero. } procedure TForm1.ButtonClearClick(Sender: TObject); mode := none; resultsofar := 0.0; editdisplay.setfocus; editdisplay.clear; { ================================================================ } { PLUS BUTTON } { Perform the calculation so far and set the mode to PLUS. } procedure TForm1.ButtonPlusClick(Sender: TObject); calculate; mode := plus; { ================================================================ } Le Khac Nhu --- Website : http://www.lkn.b4.to Page 22 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 { =================================================================} { EQUALS BUTTON } { Perform the calculation so far and set the mode to NONE. } procedure TForm1.ButtonEqualsClick(Sender: TObject); calculate; mode := none; { ================================================================ } { MINUS BUTTON } { Perform the calculation so far and set the mode to MINUS. } procedure TForm1.ButtonMinusClick(Sender: TObject); calculate; mode := minus; { ================================================================ } { ADD BUTTONS AND PROCEDURES FOR Times, Divide, Square root, Etc. } end. { ================================================================ } Le Khac Nhu --- Website : http://www.lkn.b4.to Page 23 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 13) Ví dụ về đồ họa Fractals Fractals là một kiểu đồ họa phức tạp không giống với bất kì kiểu đồ họa nào. That means you can zoom in on the picture and the small scale looks the same as the large scale picture. This program produces a simple fractal. Nice fern or tree shapes can be produced by modifying the program below. By introducing a small degree of randomness, the shapes can look surprisingly like real trees or ferns. { EXAMPLE A much more complex fractal graphic. TASK } Tinker with the maths to get different shaped fractals. unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(tform) PaintBox1: TPaintBox; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure fractal(x, Y, Size : Integer); var Form1: TForm1; Le Khac Nhu --- Website : http://www.lkn.b4.to Page 24 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 implementation {$R *.DFM} { Thủ tục này là ĐỆ QUY. Nó có nghĩa là sử dụng lại chính nó đề làm công việc đó. Những thủ tục Đệ Quy có thể chạy ra khỏi điều khiển nếu thiết kế sai. Trước những thủ tục của chính nó, nó phải kiểm tra xem có đúng không rồi mới tiếp tục. Trong ví dụ này, những hình dạng nhỏ và nhỏ hơn cho đến khi kích thước nó là hai điểm. Đó là các điểm nhỏ bởi vì khi trình bày ra màn hình, nó không hiển thị các bức ảnh được. } procedure TForm1.fractal(X, Y, Size : Integer); paintbox1.canvas.moveto(x, Y); paintbox1.canvas.lineto(x, Y - Size); paintbox1.canvas.moveto(x - Size div 2, Y - Size div 2); paintbox1.canvas.lineto(x + Size div 2, Y - Size div 2); if Size > 2 then fractal(x - Size div 2, Y - Size div 2, Size div 2); fractal(x + Size div 2, Y - Size div 2, Size div 2) end procedure TForm1.Button1Click(Sender: TObject); fractal(200, 200, 150) end. Le Khac Nhu --- Website : http://www.lkn.b4.to Page 25 2/21/2004

Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website: http://www/lkn.b4.to 2/21/04 Ví dụ vẽ Cricle, Spiral (Vòng tròn và Xoắn óc) { EXAMPLE Đồ họa thú vị nào đó được trình bày ở đây. Những vòng tròn và các đường xoắn óc được vẽ bằng các điểm được hiển thị trên màn hình. TASK Vẽ những hình học khác như sóng sin và đồ thị bình phương, lập phương và các hàm khác. } unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(tform) PaintBox1: TPaintBox; Panel1: TPanel; ButtonCircle: TButton; ButtonSpiral: TButton; procedure ButtonCircleClick(Sender: TObject); procedure ButtonSpiralClick(Sender: TObject); private { Private declarations } public { Public declarations } var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ButtonCircleClick(Sender: TObject); var X, Y, theta : Integer; for theta := 0 to 359 do { Bước độ một } X := 110 + round(100 * sin(2 * PI * theta / 360)); Y := 110 + round(100 * cos(2 * PI * theta / 360)); paintbox1.canvas.pixels[x, Y] := clred; end Le Khac Nhu --- Website : http://www.lkn.b4.to Page 26 2/21/2004