Lập trình Delphi quyển I
Friday, January 23, 2004 Quyển HƯỚNG DẪN LẬP TRÌNH DELPHI Nhập môn Phụ lục Bài Bài Bài Bài Bài Bài Bài Bài Bài TỰA ĐỀ Giới thiệu thơng tin Tóm lượt mơi trường lập trình Delphi Chương trình Delphi đơn giản Sử dụng nút nhấn thuộc tính Xuất văn sử dụng nhãn Ra vào văn Sử dụng lệnh IF Adding Machine - Alter it to [ - * div ] as well Thêm Items vào List Box Tạo menu - Một Text Editor - Files Graphics, lặp lại sử dụng FOR biến Ngôn ngữ Pascal Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Trang 12 13 14 15 20 Lời giới thiệu Delphi cho phép bạn tạo chương trình cơng cụ mạnh Chẵn hạn với click chuột khơng cần xử lý mã lệnh bạn tạo chạy chương trình soạn thảo đơn giản Cơng việc mà phải vài tuẫn lễ để làm với ngơn ngữ cũ Mỗi chương trình Delphi có PROJECT (dự án), chứa đựng thứ cần thiết cho chương trình Đây ngơn ngữ dựa tảng ngôn ngữ hướng đối tượng Pascal (Object Pascal) Đặt dự án thư mục riêng biệt Tài liệu yêu cầu bạn phải biết công cụ Window để 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 ý tưởng tốt để các dự án Delphi bạn vào thư mục mà bạn định (thư mục mình) Bạn nhầm lẫn có q nhiều dự án đặt thư mục khác Việc bạn tạo thư mục để cất giữ chương trình 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 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Tóm lượt mơi trường lập trình Delphi Có nhiều cách để thực lệnh Windows Những ví dụ cho bên dưới: 1) Alt+F4 Nghĩa bạn phải nhấn giữ phím Alt, bấm F4 thả phím Alt 2) Alt | File | Save Bấm Alt F cuối S Chữ bị gạch biểu phím nóng Bạn đừng nên giữ Alt sau bấm F 3) Click chuột vào File sau click Save 4) Click vào biểu tượng ToolBar vầy nè: 5) 6) Học sử dụng phím tắt menu Để File Save-All Ctrl+V Các phím tắt cần thiết Đóng cửa sổ thời Thố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 Chuyển đổi thuộc tính tính Tab đối tượng Tạo xử lý lựa chọn đối tượng Thc tính có sẵn đối tượng Thả list Control đối tượng Thả list đối tượng Alt+F4 Alt | File | Exit F9 F12 F11 Tab Ctrl+Tab Ctrl+Enter Ctrl+Enter Ctrl+Down-Arrow Alt+Down-Arrow Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Học Bài - Chương trình Delphi đon giản Do This Nhiệm vụ Explanation Viết chương trình theo bước bên Khởi động Delphi Tạo dự án (project) Bạn cần tạo thư mục Use MS DOS or File Manager Alt | File | New Application Alt | File | Save All Hai file lưu Lưu project bạn tới F:\Delphi\My Program Chạy project Bạn có form trống, đổi kích thước, di chuyển đóng Đóng chương trình bạn chạy Nó quan trọng để nhớ làm Delphi xử lý khác bạn cịn chương trình chạy “bối rối” Bấm F11 nhiều lần ghi nhớ Bấm F12 nhiều lần ghi nhớ Lưu cơng việc bạn Sau từ Delphi UNIT1.PAS PROJECT1.DPR F9 Nhớ phím Ba phương pháp có sẵn Alt | SpaceBar | Close Alt+F4 Click vào góc cạnh form để đổi kích thước F11 F11 F11 Nhớ phím F12 F12 F12 Nhớ phím Alt | File | Save All Alt | File | Exit Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Học – Nút nhấn thuộc tính Do This Nhiệm vụ Explanation Viết chương trính theo dẫn Mở F:\Delphi\lkn\Project1.Dpr Alt | File | Open Project Chọn button cách click chuột trái vào biểu tượng hình bên Bấm chuột trái lên form1 rê chuột để vẽ nút nhấn hình bên Thay đầu đề (Caption) nút bên phần “Properties” Thay Button1, bạn thay “&Red” (dấu “&” đề thị phím tắt, chữ “R”) Sau bấm F11 Bấm đúp chuột trái vào buttion Khi bạn làm gì, Delphi viết vài dòng lệnh Pascal cho bạn Đây đoạn mã lệnh Delphi tạo ra.Bạn không thay đổi mà đánh thêm lệnh thực thi vào procedure TForm1.Button1Click(Sender: TObject); begin end; Đánh dòng lệnh Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Form1.Color := clRed; cl nghĩa màu Nó CLRED khơng phải C1RED procedure TForm1.Button1Click(Sender: TObject); begin Form1.Color := clRed; end; Chạy chương trình nhấn chuột trái vào nút có nhãn ‘Red’ Form đổi thành màu đỏ Đóng chương trình mà bạn chạy F9 Alt+F4 Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Nhiệm vụ: Thêm nhiều nút lệnh theo dạng clYellow, clGreen hình bên Xem mã lệnh tạo Delphi NHỚ bạn KHƠNG ĐƯỢC thay đổi or xóa mã lệnh tạo Delphi Bạn xóa, thay đổi mã mà tạo Sự khởi đầu cho việc tạo mã lệnh Delphi Lưu dự án (project) bạn Thoát bạn kết thúc Alt | File | Save Project Alt | File | Exit Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Học Bài – Nhãn đầu văn Trong học này, bạn viết chương trình hiển thị văn (text) nhấn vào nút Việc trình bày văn kỹ cần lập trình Trong học 2, bạn viết đoạn mã để trả lời nhấn nút Mã gọi xử lý kiện Những kiện biến cố nhấn nút, chuột di chuyển bấm chuột Trong học này, bạn kích hoạt kiện xử lý nhiều Do This Nhiệm vụ Viết chương trình theo hướng dẫn Khi bạn nhấn nút, đoạn text ‘Hello World’ xuất Tạo thư mục cho dự án Use MS DOS or Windows File Manager Tạo dự án Delphi Lưu dự án 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 Button Label form Click vào label Click vào form Click vào button Click vào form Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Thay đổi Tiêu đề Button1 ‘&Hello’ giống học Thay đổi Caption Label1 để trống Reviewed by NGUYEN, Ba Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Bấm đúp vào nút ‘&Hello’ để phát sinh xử lý kiện Đây mã lệnh Delphi tạo Bạn Không Thể thay đổi them vào mó Thêm vào xử lý kiện Chạy chương trình Click vào button Đoạn text Hello World xuất Nhiệm vụ Thêm button label vào form Làm đoạn text xuất tương ứng nhấn nút Thực hành bạn thấy tốt chán! Nhiệm vụ Hãy thử nghiệm thuộc tính khác đối tượng Ghi Mã lệnh bên gọi Bộ xử lý kiện EVENT HANDLER procedure TForm1.Button1Click(Sender: TObject); begin end; procedure TForm1.Button1Click(Sender: TObject); begin Label1.Caption := 'Hello World!'; end; F9 Chẳn hạn thay đổi màu form tới clLime Bạn click vào mũi tên để tìm màu danh sách Phải chăn bạn thay màu, font chữ Tất nhiệm vụ thực click chuột Reviewed by NGUYEN, Ba Thanh 10 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Học - Đồ họa Sự lặp lại sử dụng FOR Biến Các Biến Variables có tên “pigeon holes” Đây chương trình sử dụng biến số nguyên nơi số cất giữ Số sử dụng từ tới 10 Để tạo biến bạn đánh bên Tên biến ‘i’ bạn đặt tên mà bạn thích dễ nhớ Var i : Integer; Vòng lặp FOR Cái sử dụng bạn muốn chương trình lặp lại nhiệm vụ với số lượng thời gian định trước Ví dụ bên vòng lặp cần lặp lại 10 lần For i := To 10 Do Begin These Steps Are Repeated Ten Times End; { Lặp lại 10 lần} Nh.Vụ Tạo Image Buttons lên form Cho nút kiện thích hợp để xử lý,bạn chép dịng lệnh Sau nâng cao lên, tạo xử lý kiện cho riêng bạn Sử dụng Delphi help để tìm thủ tục đồ họa khác Reviewed by NGUYEN, Ba Thanh 24 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Các xử lý kiện procedure TForm1.Button1Click(Sender: TObject); Var i : Integer; begin Image1.Canvas.Pen.Color := clRed; Image1.Canvas.Brush.Color := clRed; { Set Pen Colour } { Set Brush Colour } { Colour image Red } Image1.Canvas.Rectangle(0, 0, Image1.Width, Image1.Height); Image1.Canvas.Pen.Color := clYellow; Image1.Canvas.Brush.Color := clYellow; { Set Pen Colour } { Set Brush Colour } { Do horizontal lines } For i := 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 := To 10 Do Begin Image1.Canvas.moveTo(10 * i, 0); Image1.Canvas.lineTo(10 * i, Image1.height); End; end; Reviewed by NGUYEN, Ba Thanh 25 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net 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; Image1.Canvas.Brush.Color := clYellow; { Set Pen Colour } { Set Brush Colour } Image1.Canvas.Ellipse(20, 20, 80, 80); Image1.Canvas.Pen.Color := clred; Image1.Canvas.Brush.Color := clRed; { Set Pen Colour } { 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; Reviewed by NGUYEN, Ba Thanh 26 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Ngôn ngữ Pascal Khu vực giới thiệu kiến thức Pascal để lập trình Delphi (vì Delphi Borland sản xuất nên lệnh tương tự Pascal) Các kiễu liệu Những chương trình sử dụng để xử lý liệu Sau kiểu liệu để xây dựng thường dùng Pascal Có số thường sử dụng Khi cất liệu quan trọng để lựa chọn liệu Integer (số nguyên) Là số như12 or -22 -32768 tới 32767 phạm vi sử dụng Real (số thực) Những số thập phân 22.7 or -0.0032 Char (kí tự) Những đặc tính kí tự String[20] (chuỗi) Cất giữ số hay văn Trong ví dụ lên tới 20 kí tự 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ó kiểu đặc biệt Bạn phải cất giữ kiểu biết Sử dụng tên để đại diện Điều giúp cho chương trình dễ dàng Good examples VAT_Rate, dayOfWeek, TAX_Band Bad Examples X, L, Lemming Reviewed by NGUYEN, Ba Thanh 27 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Các lệnh gán giá trị Đây giá trị đặt vào biến(pigeon holes) Trong ví dụ dưới, có biến X, sname ok Kí tự “:=” đọc, tiếng anh, becomes (trở thành) X := 3; X trở thành (là ) Cất giữ vào biến X sname := ‘Bloggs’; sname Bloggs Cất giữ Bloggs vào biến sname ok := True ok True Cất True vào ok Những đối tượng Delphi xây dựng đối tượng chương trình Đối tượng sở hữu or chứa đựng đối tượng khác Đối tượng có thuộc tính Trong ví dụ Form1.Label1.Caption := ‘Hello World!’; Form1 đối tượng Form1 chứa đối tượng khác gọi Label1 Label1 có thuộc tính gọi Caption Đoạn text ‘Hello World!’ cất vào thuộc tính Caption Label1 Caption biến để cất giữ chuỗi text Bạn cất giữ sơ ngun vào Caption trừ chuyển đổi vào chuỗi trước Những thủ tục Những thủ tục chương trình nhỏ bên chương trình Những thủ tục sử dụng để phá chương trình lớn cho vào chương trình bit thủ tục cho phép bạn thiết kế chương trình bên Modular Điều dễ dàng kiểm tra lỗi, kiểm tra chương trình, thiết kế, ghi chương trình Đây trình bày thủ tục Procedure Lemming; Begin Several lines go in here End; Reviewed by NGUYEN, Ba Thanh 28 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Những kiện Sự kiện hành động bấm nút, click chuột Delphi thiết kế để trả lời kiện Để làm điều bạn phải viết xử lý kiện Bô xử lý kiện Đây thủ tục để đáp lại kiện tương ứng Chẵn hạn, thủ tục bên trả lời tới Form1 Button1 click Trong ví dụ này, kiện xuất hiện, dạng khác gọi tlightForm 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 GOOD COMMENTS simply repeat the code explain what is going on and why X := 3; { X Becomes (This is a bad comment) } dayOfWeek := 3; { Store the third day (Wed) into dayOfWeek } { This is a good comment } Reviewed by NGUYEN, Ba Thanh 29 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Sự nối tiếp Đây cách thực biến đổi chương trình nối trình tự định sẵn khơng lặp lại Một ví dụ để làm rõ Form1.Color := clGreen; { Nền form màu xanh Total := 0; { Tổng cộng cất Average := 0; { Trung bình cất } } } Bên sơ đồ cấu trúc Jackson thể nối tiếp Sự chọn lọc Đây định bên chương trình Trong Pascal, định sử dụng lệnh If Chẵn hạn mã bên đọc sau tiếng Anh Nếu màu Form1 màu đỏ làm cho màu Form1 đổi thành màu xanh If Form1.Color = clRed then Begin Form1.Color := clGreen; End; If sử dụng phức tạp – ví dụ If Form1.Color = clRed then Begin Form1.Color := clGreen; End Else Begin Form1.Color := clRed; End; Reviewed by NGUYEN, Ba Thanh 30 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Nếu Form1 màu đỏ đổi thành xanh Nếu màu khác tức khơng phải màu đỏ cho thành đỏ Lệnh If kết hợp cách phức tạp 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 lồng vào lệnh If khác Trong ví dụ bên dưới, bạn ngăn ngừa chia cắt zero If Op = ‘Divide’ then Begin If N2 = 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ể chọn lọc Reviewed by NGUYEN, Ba Thanh 31 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Reviewed by NGUYEN, Ba Thanh 32 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net 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 số lượng thời gian biết trước Ví dụ: FOR For I := To 100 Do { Repeat 100 times } Begin Label1.Caption := IntToStr(I); Label1.Update End; WHILE While NOT allSorted Do Begin SortTheStuff; End; { Keep going until it is finished } DO Do allThisStuff; andAllThis; Until Finished; { Keep going until Finished } { Unusual because Begin } { and End are not needed } FOR For Ch := ‘A’ To Z Do Begin Label1.Caption := CharToStr(I); Label1.Update End; Reviewed by NGUYEN, Ba Thanh 33 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net FOR Backwards For I := 100 DownTo 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 Từ ‘Hello’ chuỗi text Cần sáu byte để hiển thị Chiều dài văn cất giữ từ vị trí số thuộc tính cất giữ byte từ 1- Length 5 H e l l o Wasted Space Để cất giữ ‘Fred Bloggs’ cần 12 Bytes 11 F r e d B Reviewed by NGUYEN, Ba Thanh 34 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net l o g g s Hàm: Thường dùng để tính tốn sản sinh liệu chứa kết riêng biệt Ở ví dụ hàm Sum := Add(N1, N2); { Một cách để thêm số # nhau} Text := Join(FirstBit, SecondBit); Bigger := Max(N1, N2); { Trở lại có giá trị lớn N1 or N2} Đây ví dụ hàm dùng để chuyển đổi đặc tính đơn vào chuỗi văn Nó viết bình luận thái độ phê chuẩn { Definition String := CharToStr(Char) Input Hàm dùng kí tự đơn cho đầu vào (Ch) Process Đặc tính nhập vào xử lý cách cất giữ vị trí chuỗi (S) Tại vị trí Zero chuỗi (S) có chiều dài (1) cất giữ Output Đầu 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 posn } S[1] := Ch; { Cất giữ Ch posn } CharToStr := S { Trả lại kết quả} End; Reviewed by NGUYEN, Ba Thanh 35 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Logic AND, OR, NOT, XOR (VÀ, HOẶC, KHÔNG, XOR) Những dùng để sử dụng với If, While Do Rõ ràng tiếng Anh chúng có nghĩa cho phải không bạn? Chúng dễ học thể theo kiểu bảng IF A AND B Then Nếu A B đúng, IF A OR B Then Một A B phải While NOT Done Do Nếu làm cho sai sai làm cho (^_^) If A XOR B Then Nó khác không (???Bạn hiểu không???) Câu tiếng Anh vầy, có dịch giúp với: One or other must be true but not both and not neither Reviewed by NGUYEN, Ba Thanh 36 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Bảng giá trị Sai (False) (True) A 0 1 AND B 1 Output 0 A 0 1 OR B 1 Output 1 A 0 1 XOR B 1 Output 1 A NOT Output Reviewed by NGUYEN, Ba Thanh 37 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net 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 ĐỂ HỌC BIÊN DỊCH: Lê Khắc Như Cảm ơn bạn sử dụng Nếu bạn thấy có chỗ khơng nhớ báo cho sửa lại nha Email: laptrinh04@yahoo.ca Website: http://www.lkn.b4.to Reviewed by NGUYEN, Ba Thanh 38 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net ... Thanh 18 Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net OpenDialog SaveDialog1 DefaultEx t FileName Filter InitialDir Title DefaultEx t FileName Filter InitialDir Title Caption Form1... Thanh Distributed by Diễn đàn Tin học – http://www.diendantinhoc.net Học B? ?i - Chương trình Delphi đon giản Do This Nhiệm vụ Explanation Viết chương trình theo bước bên Kh? ?i động Delphi Tạo dự... IntToStr (I) ; Label1.Update End; WHILE While NOT allSorted Do Begin SortTheStuff; End; { Keep going until it is finished } DO Do allThisStuff; andAllThis; Until Finished; { Keep going until Finished