66

ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Embed Size (px)

Citation preview

Page 1: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,
Page 2: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

1

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

Page 3: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

2

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.

Page 4: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

3

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. Alt+F4 Thoát Alt | File | Exit Chạy chuong trình F9 Ghi nhận Form thiết kế F12 Ghi nhận thay đổi đối tượng F11 Chuyển tới điều khiển tiếp theo Tab Chuyển đổi thuộc tính tính và các Tab trong đối tượng

Ctrl+Tab

Tạo xử lý được lựa chọn trong đối tượng Ctrl+Enter Thuôc tính có sẵn trong đối tượng Ctrl+Enter Thả list của Control trong đối tượng Ctrl+Down-Arrow Thả list của đối tượng Alt+Down-Arrow

Page 5: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

4

Học Bài 1 - Chương trình Delphi đon giản nhất Do This Explanation Nhiệm vụ 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) Alt | File | New Application Bạn cần tạo thư mục này. Use MS DOS or File Manager. Lưu project của bạn tới đó. F:\Delphi\My Program

Alt | File | Save All Hai file sẽ được lưu. UNIT1.PAS PROJECT1.DPR

Chạy project. Bạn sẽ có một form trống, có thể đổi kích thước, di chuyển và đóng.

F9 Nhớ phím này.

Đó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”.

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

Bấm F11 nhiều lần và ghi nhớ nó.

F11 F11 F11 Nhớ phím này.

Bấm F12 nhiều lần và ghi nhớ nó

F12 F12 F12 Nhớ phím này.

Lưu công việc của bạn. Alt | File | Save All Sau đó thoát từ Delphi. Alt | File | Exit

Page 6: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

5

Học bài 2 – Nút nhấn và thuộc tính.

Do This Explanation Nhiệm vụ Viết chương trính theo chỉ dẫn dưới đây

Mở F:\Delphi\lkn\Project1.Dpr Alt | File | Open Project 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

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); begin end;

Đánh dòng lệnh này.

Page 7: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

6

Form1.Color := clRed; cl nghĩa là màu. Nó là CLRED chứ không phải là C1RED.

procedure TForm1.Button1Click(Sender: TObject); begin Form1.Color := clRed; end;

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 đỏ

F9

Đóng chương trình mà bạn đang chạy Alt+F4

Page 8: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

7

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. Alt | File | Save Project Thoát khi bạn đã kết thúc Alt | File | Exit

Page 9: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

8

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 Explanation 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 thư mục này: C:\Delphi\Hello

Tạo dự án Delphi mới Alt | File | New Application Lưu dự án này tới C:\Delphi\Hello

Alt | File | Save All

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.

Page 10: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

9

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.

Page 11: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

10

Bấm đúp vào nút ‘&Hello’ để phát sinh xử lý sự kiện

Ghi chú Mã lệnh bên dưới gọi là Bộ xử lý sự kiện EVENT HANDLER

Đây là mã lệnh Delphi tạo. Bạn Không Thể thay đổi nhưng có thể them vào mó

procedure TForm1.Button1Click(Sender: TObject); begin end;

Thêm vào bộ xử lý sự kiện procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := 'Hello World!'; end;

Chạy chương trình. Click vào button. Đoạn text Hello World sẽ xuất hiện.

F9

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. 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.

Page 12: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

11

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 Explanation Nhiệm vụ 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. Alt | File | Open Project Xóa tất cả Button, Label ở trong form đó.

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 đó.

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!

Bấm F12 để hiện cửa sổ mã lệnh và xóa chúng. procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := 'Hello World'; end; 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.

Page 13: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

12

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.

procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := Edit1.Text; end; 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.

Nhiệm vụ 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?

Page 14: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

13

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); begin LabelTitleOutput.Caption := EditTitle.Text; LabelSurnameOutput.Caption := EditSurname.Text; LabelAddressOutput.Caption := EditAddress.Text; end;

Page 15: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

14

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); begin 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} begin {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 đỏ} begin form1.color := clYellow; {chuyển thành màu vàng} end else begin form1.color := clBtnFace; end 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 đỏ.

Page 16: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

15

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); begin editAnswer.text := intToStr( strToInt(editFirstNumber.Text) + strToInt(editSecondNumber.Text)); end; 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 * *

Page 17: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

16

Chia lấy thương

DIV /

Page 18: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

17

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); begin listBox1.Items.Add(Edit1.text); end; procedure TForm1.Button2Click(Sender: TObject); begin listBox1.Items.Delete(ListBox1.ItemIndex); end; 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ó)

Page 19: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

18

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

WantTabs True (Nhấp đúp chuột để làm điều này.) MainMenu1 Không thuộc tính nào cần thay đổi.

Page 20: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

19

OpenDialog1

DefaultExt

TXT

FileName *.TXT Filter 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.

InitialDir . Title Open A File SaveDialog1 DefaultEx

t TXT

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.

Page 21: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

20

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); begin end; 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); begin Close; end; 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:

Page 22: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

21

procedure TForm1.Open1Click(Sender: TObject); begin end;

Page 23: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

22

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 begin Memo1.Lines.LoadfromFile(OpenDialog1.FileName); SaveDialog1.Filename := OpenDialog1.FileName; Caption := OpenDialog1.FileName; end; 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); begin if OpenDialog1.Execute then begin Memo1.Lines.LoadfromFile(OpenDialog1.FileName); SaveDialog1.Filename := OpenDialog1.FileName; Caption := OpenDialog1.FileName; end; end; 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.

Page 24: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

23

procedure TForm1.Save1Click(Sender: TObject); begin if SaveDialog1.FileName <> '*.TXT' Then begin Memo1.Lines.SavetoFile(SaveDialog1.FileName); { Lưu file } end else begin messageDlg( 'File has no name.' + chr(13) + { Hiện thông báo} 'File not saved.' + chr(13) + 'Use File | Save As to save the file.', mtWarning, [mbOK], 0); end end; 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); begin if SaveDialog1.Execute then begin Memo1.Lines.SavetoFile(SaveDialog1.FileName); OpenDialog1.Filename := SaveDialog1.FileName; Caption := OpenDialog1.FileName; end; end;

Page 25: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

24

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.

Var i : Integer; Vòng lặp FOR 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 { Lặp lại 10 lần} Begin These Steps Are Repeated Ten Times End; 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.

Page 26: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

25

Các xử lý sự kiện procedure TForm1.Button1Click(Sender: TObject); Var i : Integer; begin 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; end;

Page 27: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

26

procedure TForm1.Button2Click(Sender: TObject); begin 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); end; procedure TForm1.Button3Click(Sender: TObject); begin 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'); end;

Page 28: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

27

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ự) Những đặc tính của các kí tự. String[20] (chuỗi) 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ữ. Boolean (logic) 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.

Page 29: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

28

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’; sname là Bloggs. Cất giữ Bloggs vào trong biến sname. ok := True 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;

Page 30: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

29

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); begin tlightForm.Show end; 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 simply repeat the code. GOOD COMMENTS 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 }

Page 31: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

30

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;

Page 32: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

31

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.

Page 33: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

32

Page 34: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

33

Vòng lặp. Có ba cách làm cho chương trình lặp lại. WHILE Repeat Zero of More times. REPEAT Repeat One or More times. FOR 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;

Page 35: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

34

FOR Backwards For I := 100 DownTo 1 Do Begin Label1.Caption := IntToStr(I); Label1.Update End; For Ch := 'Z' DownTo 'A' Do Begin Label1.Caption := CharToStr(Ch); Label1.Update End; Sơ đồ cấu trúc Jackson cho vòng lặp

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

Page 36: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

35

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 String := CharToStr(Char) Input Hàm này dùng kí tự đơn cho đầu vào (Ch).

Process Đặ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ữ

Output Đầ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;

Page 37: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

36

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

Page 38: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

37

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

Page 39: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

38

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: [email protected] Website: http://www.lkn.b4.to

Page 40: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 1 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

Những ví dụ trong lập trình Delphi

Quyển 2

Page 41: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 2 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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

Page 42: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 3 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

1) Ví dụ về OutPut (Xuất) dữ liệu

Biểu đồ IPO Button1 Click Đầu vào Click vào button. Quá trình ‘Hello World!’ chép vào label1. Dữ liệu nhập thử Không. Chờ đợi đầu ra ‘Hello World!’ hiện trên label. Đầu ra thực tế ‘Hello World!’ Bằng chứng BEFORE CLICK

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 } end; 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); begin { Delphi tạo dòng này} label1.caption := 'Hello World!'; { BẠN ĐÁNH Ở DÒNG NÀY } end; { Delphi tạo dòng này} end. { Delphi tạo dòng này}

Page 43: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 4 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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 } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin { Nhập 2 mảnh của text lại. Dấu + nghĩa là nhập. } label1.caption := edit1.text + edit2.text; end; end.

Page 44: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 5 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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 } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ButtonAddClick(Sender: TObject); begin { 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; end.

Page 45: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 6 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

4) Ví dụ về Running Total IPO Chart ButtonAdd Click Nhập Click vào button. Quá trình thực hiện Thêm số được nhập vào giá trị của runningTotal (giá

trị đầu là 0). Dữ liệu nhập thử 1.1 Chờ đầu ra 1.1 Đầu ra thực tế 1.10000000000036 Bằng chứng 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 } runningTotal : Real; { Số thực là số dạng 123.456 } end; var

Page 46: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 7 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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); begin runningTotal := 0; end; { Thủ tục xử lý khi nhấn nút. } procedure TFormMain.ButtonAddClick(Sender: TObject); begin { 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; end.

Page 47: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 8 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

5) Ví dụ về Picture (Hình ảnh) IPO ButtonPaint Click Input Click vào ButtonPaint Input Test Data Không Process Sử dụng Canvas.Pen.Color, Canvas.MoveTo và Canvas.LineTo để

vẽ tam giác màu đen. Expected Outpot Hình tam giác màu đen cần được vẽ. Actual Output Hình tam giác được vẽ. Evidence

Action Needed Không IPO ButtonRed Click Input Click vào ButtonRed Input Test Data không Process Sử dụng Canvas.Pen.Color, Canvas.MoveTo và Canvas.LineTo để

vẽ tam giác màu đỏ. Expected Outpot Red triangle should be drawn. Actual Output Red triangle is drawn. Evidence

Action Needed Không { EXAMPLE Vẽ đồ họa đơn giản. TASK 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. } unit Unit1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

Page 48: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 9 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

type TForm1 = class(TForm) PaintBox1: TPaintBox; ButtonPaint: TButton; ButtonRed: TButton; procedure ButtonPaintClick(Sender: TObject); procedure ButtonRedClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ButtonPaintClick(Sender: TObject); begin 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); end; procedure TForm1.ButtonRedClick(Sender: TObject); begin 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; end.

Page 49: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 10 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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ụ 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 } unit Unit1; 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 } end; var Form1: TForm1; implementation {$R *.DFM} { Làm form thành màu đỏ. Quyết định N làm cái này. }

Page 50: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 11 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

procedure TForm1.Button1Click(Sender: TObject); begin Form1.color := clRed; end; { 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); begin if Form1.color = clRed then begin Form1.color := clGreen end 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); begin if Form1.color = clRed then begin Form1.color := clGreen end else if Form1.color = clGreen then begin Form1.color := clYellow end else if Form1.color = clYellow then begin Form1.color := clRed end end; end.

Page 51: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 12 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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 } end; var Form1: TForm1; implementation {$R *.DFM} { image2 được di chuyển theo chỉ định của timer1. } procedure TForm1.Timer1Timer(Sender: TObject); begin image2.Left := image2.Left + 2; if image2.Left > 169 then { Đóng chương trình trình khi ảnh } begin { tới phía phải màn hình. }

Page 52: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 13 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

close end end; { Làm cho man nhấy mắt trong mỗi biến đổi của timer2. } procedure TForm1.Timer2Timer(Sender: TObject); begin { Thay đổi màu mắt của man. } if image1.canvas.brush.color = clGray then begin image1.canvas.brush.color := clWhite end else begin image1.canvas.brush.color := clGray end; { Vẽ một elip nhỏ. Đó là con mắt. } image1.canvas.ellipse(85, 74, 89, 78) end; { Đóng chương trình nếu nút nhấn được bấm. } procedure TForm1.Button1Click(Sender: TObject); begin close end; end.

Page 53: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 14 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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. Một biến gọi là Counter được sử dụng. Đó là một biến Integer (số nguyên). TASK ONE (Beginners) Làm sự lặp lại đó trong bất cứ Chương trình nào mà bạn muốn làm. TASK TWO (Advanced) Hiển thị 'Hello' thành một hình tròn Trong form. Sử dụng hàm SIN và COS. } unit Unit1; 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 } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); Var Counter : Integer; begin For Counter := 1 To 10 Do Begin Form1.Canvas.TextOut(Counter * 10, Counter * 10, 'Hello'); End end; end.

Page 54: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 15 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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 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. } unit Unit1; 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 } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ButtonPaintClick(Sender: TObject); Var X1, Y1, X2, Y2 : Integer; Colour : TColor; begin 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 begin { 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 *

Page 55: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 16 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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); end; end; { 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); begin { Tạo một số thứ ngẫu nhiên. } randomize end; end.

Page 56: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 17 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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); end; 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); begin 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 }

Page 57: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 18 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

Image1.Canvas.TextOut(aNumber * 40, aNumber * 40, intToStr(random(49) + 1)) end; { ---------------------------------------------------------------- } procedure TForm1.Button1Click(Sender: TObject); Var Counter : Integer; begin For Counter := 1 to 7 Do { For all seven lottery numbers DO } Begin MyShow(Counter) { Display the ball } End 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. } begin Image1.Canvas.Pen.Color := clLime; Image1.Canvas.Brush.Color := clLime; if Image1.Canvas.Font.Color = clRed then begin Image1.Canvas.Font.Color := clYellow end else begin Image1.Canvas.Font.Color := clRed end; Image1.Canvas.Font.Size := 24; Image1.Canvas.TextOut(Image1.Width div 2, 100, ' Lottery ') end; { ---------------------------------------------------------------- } 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. } begin randomize end; { ---------------------------------------------------------------- } end. { ---------------------------------------------------------------- }

Page 58: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 19 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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; end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.doSomething; begin label1.caption := 'Hello' end; procedure TForm1.Button1Click(Sender: TObject); begin count := 5;

Page 59: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 20 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

label1.caption := '' end; procedure TForm1.FormCreate(Sender: TObject); begin count := 0; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if count <> 0 then begin count := count - 1; if count = 0 then begin doSomething end end; label2.caption := intToStr(count); if label3.caption = 'Tick' then label3.caption := 'Tock' else label3.caption := 'Tick' end; end.

Page 60: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 21 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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; end; { ================================================================ } var Form1: TForm1; implementation {$R *.DFM} { ================================================================ }

Page 61: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 22 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

{ ================================================================ } procedure TForm1.Calculate; begin { Do a calcualtion based on the mode. } if mode = none then begin resultSoFar := strToFloat(editDisplay.text); end else if mode = plus then begin resultSoFar := resultSoFar + strToFloat(editDisplay.text); end else if mode = minus then begin resultSoFar := resultSoFar - strToFloat(editDisplay.text); end; { Refresh the answer / input display. } editDisplay.text := floatTOStr(resultSoFar); editDisplay.setFocus; editDisplay.selectAll; end; { ================================================================ } { Ensure that the initial values are OK. } { This happens when the form is created. } procedure TForm1.FormCreate(Sender: TObject); begin resultSoFar := 0.0; mode := none; end; { ================================================================ } { CLEAR BUTTON } { Clear the displays. } { Set the result so far to zero. } procedure TForm1.ButtonClearClick(Sender: TObject); begin mode := none; resultSoFar := 0.0; editDisplay.setFocus; editDisplay.clear; end; { ================================================================ } { PLUS BUTTON } { Perform the calculation so far and set the mode to PLUS. } procedure TForm1.ButtonPlusClick(Sender: TObject); begin calculate; mode := plus; end; { ================================================================ }

Page 62: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 23 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

{ =================================================================} { EQUALS BUTTON } { Perform the calculation so far and set the mode to NONE. } procedure TForm1.ButtonEqualsClick(Sender: TObject); begin calculate; mode := none; end; { ================================================================ } { MINUS BUTTON } { Perform the calculation so far and set the mode to MINUS. } procedure TForm1.ButtonMinusClick(Sender: TObject); begin calculate; mode := minus; end; { ================================================================ } { ADD BUTTONS AND PROCEDURES FOR Times, Divide, Square root, Etc. } end. { ================================================================ }

Page 63: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 24 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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); end; var Form1: TForm1;

Page 64: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 25 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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); begin 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 begin 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 end; procedure TForm1.Button1Click(Sender: TObject); begin fractal(200, 200, 150) end; end.

Page 65: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 26 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

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 } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ButtonCircleClick(Sender: TObject); var X, Y, theta : Integer; begin for theta := 0 to 359 do { Bước độ một } begin 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 end;

Page 66: ƯỚ P TRÌNH DELPHI - search read.pudn.comread.pudn.com/downloads166/ebook/758401/Giao trinh Huong...Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – 1 Friday,

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

Le Khac Nhu --- Website : http://www.lkn.b4.to Page 27 2/21/2004 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net

procedure TForm1.ButtonSpiralClick(Sender: TObject); var X, Y, theta : Integer; begin for theta := 0 to 3600 do { Bước độ một } begin X := 110 + round((theta div 36) * sin(2 * PI * theta / 360)); Y := 110 + round((theta div 36) * cos(2 * PI * theta / 360)); paintBox1.Canvas.Pixels[X, Y] := clYellow; end end; end.

Tác giả : Lê Khắc Như ; Ngày 24 tháng 1 năm 2004 Email: [email protected]

Website: http://www.lkn.b4.to