Hướng dẫn lập trình Delphi - Quyển 2: Những ví dụ trong lập trình Delphi

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)

pdf27 trang | Chuyên mục: Delphi | Chia sẻ: dkS00TYs | Lượt xem: 2948 | Lượt tải: 1download
Tóm tắt nội dung Hướng dẫn lập trình Delphi - Quyển 2: Những ví dụ trong lập trình Delphi, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
uch 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; 
Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website:  
2/21/04 
Le Khac Nhu --- Website :  Page 20 2/21/2004 
Reviewed by NGUYEN, Ba Thanh 
Distributed by Diễn đàn Tin học –  
 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. 
Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website:  
2/21/04 
Le Khac Nhu --- Website :  Page 21 2/21/2004 
Reviewed by NGUYEN, Ba Thanh 
Distributed by Diễn đàn Tin học –  
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} 
{ ================================================================ } 
Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website:  
2/21/04 
Le Khac Nhu --- Website :  Page 22 2/21/2004 
Reviewed by NGUYEN, Ba Thanh 
Distributed by Diễn đàn Tin học –  
{ ================================================================ } 
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; 
{ ================================================================ } 
Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website:  
2/21/04 
Le Khac Nhu --- Website :  Page 23 2/21/2004 
Reviewed by NGUYEN, Ba Thanh 
Distributed by Diễn đàn Tin học –  
{ =================================================================} 
{ 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. 
{ ================================================================ } 
Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website:  
2/21/04 
Le Khac Nhu --- Website :  Page 24 2/21/2004 
Reviewed by NGUYEN, Ba Thanh 
Distributed by Diễn đàn Tin học –  
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; 
Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website:  
2/21/04 
Le Khac Nhu --- Website :  Page 25 2/21/2004 
Reviewed by NGUYEN, Ba Thanh 
Distributed by Diễn đàn Tin học –  
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. 
Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website:  
2/21/04 
Le Khac Nhu --- Website :  Page 26 2/21/2004 
Reviewed by NGUYEN, Ba Thanh 
Distributed by Diễn đàn Tin học –  
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; 
Những ví dụ về lập trình bằng Delphi; Biên dịch bởi Lê Khắc Như; website:  
2/21/04 
Le Khac Nhu --- Website :  Page 27 2/21/2004 
Reviewed by NGUYEN, Ba Thanh 
Distributed by Diễn đàn Tin học –  
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: laptrinh04@yahoo.ca 
Website:  

File đính kèm:

  • pdfHướng dẫn lập trình Delphi - Quyển 2_Những ví dụ trong lập trình Delphi.pdf
Tài liệu liên quan