Hướng dẫn lập trình Delphi cơ bản từ Bluesofts.net

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,246
Được thích
9,779
Điểm
860
Nơi ở
Hà Nội
Delphi hiện là một trong các ngôn ngữ lập trình mạnh trên thế giới, cho phép lập trình duy nhất một code và biên dịch cho các nền tảng hệ điều hành Windows (32, 64-bit), Mac OSX, iPhone, Android, Linux. Lập trình trên Delphi rất trực quan, các component phong phú, tương tác linh hoạt với hệ điều hành. Ngôn ngữ lập trình là Object Pascal, cho phép nhúng cả ngôn ngữ ASM , những người đã học Pascal học sẽ rất nhanh. Delphi biên dịch phần mềm ra mã máy (Native code) tốc độ rất là nhanh, không giống như .NET, Java, Ruby chỉ là thông dịch. Delphi cho phép xây dựng rất nhiều loại ứng dụng: Database, Server, Game, Music, Service, Application,... Delphi thực sự rất mạnh mẽ, làm chủ ngôn ngữ này bạn có cơ hội trở thành một cao thủ lập trình hệ thống, lập trình ứng dụng đa nền tảng....

Trong topic này tôi chia sẻ với các bạn các bài học lập trình Delphi cơ bản sẽ giúp các bạn bước đầu tiếp cận với ngôn ngữ lập trình mạnh mẽ này dễ dàng nhất.

BÀI 01: Lập trình Delphi cơ bản Bài 01 Tạo chương trình đầu tiên
Video này tôi hướng dẫn các bạn cách tạo một ứng dụng đầu tiên - Project và hiểu về cách Delphi chạy code và biên dịch ra các nền tảng 32, 64 bit.

BÀI 02: Lập trình Delphi với Form, thiết lập thông tin phần mềm của bạn
Video này tôi hướng dẫn cách lập trình Delphi với Form, thiết lập thông tin phần mềm, thuộc tính của Form. Lập trình Form mẹ gọi form con với cách truyền tham số nút bấm từ TButton.ModalResult...
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,246
Được thích
9,779
Điểm
860
Nơi ở
Hà Nội
BÀI 04: Lập trình Delphi cơ bản - Chuyển đổi kiểu dữ liệu, ứng dụng helper
Lập trình Delphi cơ bản Bài 04 cung cấp kiến thức về chuyển đổi kiểu dữ liệu, ứng dụng helper để thêm thành phần kiểu dữ liệu từ đây việc lập trình sẽ đơn giản và ngắn gọn hơn bởi việc chọn thành phần kiểu dữ liệu tạo ra thay vì dùng hàm chuyển đổi nhiều lần...

 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,246
Được thích
9,779
Điểm
860
Nơi ở
Hà Nội
Video demo phần mềm lập trình bởi Delphi chạy độc lập nhưng cho phép kết nối tới các phần mềm Excel, Word và từ VBA kết nối ngược về phần mềm đó,....
 

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,441
Được thích
14,389
Điểm
1,910
Nơi ở
Tp.HCM
Delphi hiện là một trong các ngôn ngữ lập trình mạnh trên thế giới, cho phép lập trình duy nhất một code và biên dịch cho các nền tảng hệ điều hành Windows (32, 64-bit), Mac OSX, iPhone, Android, Linux. Lập trình trên Delphi rất trực quan, các component phong phú, tương tác linh hoạt với hệ điều hành. Ngôn ngữ lập trình là Object Pascal, cho phép nhúng cả ngôn ngữ ASM , những người đã học Pascal học sẽ rất nhanh. Delphi biên dịch phần mềm ra mã máy (Native code) tốc độ rất là nhanh, không giống như .NET, Java, Ruby chỉ là thông dịch. Delphi cho phép xây dựng rất nhiều loại ứng dụng: Database, Server, Game, Music, Service, Application,... Delphi thực sự rất mạnh mẽ, làm chủ ngôn ngữ này bạn có cơ hội trở thành một cao thủ lập trình hệ thống, lập trình ứng dụng đa nền tảng....

Trong topic này tôi chia sẻ với các bạn các bài học lập trình Delphi cơ bản sẽ giúp các bạn bước đầu tiếp cận với ngôn ngữ lập trình mạnh mẽ này dễ dàng nhất.

BÀI 01: Lập trình Delphi cơ bản Bài 01 Tạo chương trình đầu tiên
Video này tôi hướng dẫn các bạn cách tạo một ứng dụng đầu tiên - Project và hiểu về cách Delphi chạy code và biên dịch ra các nền tảng 32, 64 bit.

BÀI 02: Lập trình Delphi với Form, thiết lập thông tin phần mềm của bạn
Video này tôi hướng dẫn cách lập trình Delphi với Form, thiết lập thông tin phần mềm, thuộc tính của Form. Lập trình Form mẹ gọi form con với cách truyền tham số nút bấm từ TButton.ModalResult...
Cho em hỏi là làm sao mình thoát hẳn cái form mẹ (Không ẩn) khi load thành công cái form con vậy anh?
Cám ơn anh
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,246
Được thích
9,779
Điểm
860
Nơi ở
Hà Nội

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,441
Được thích
14,389
Điểm
1,910
Nơi ở
Tp.HCM
Hai lúa nói kỹ hơn đc không vì mình chưa hiểu rõ ý.
Giống như mình làm cái form đăng nhập ấy anh. Khi click ok thì thoát (Không ẩn) rồi tiếp tục mở form main đó anh. Tương tự khi đăng nhập xong từ form main muốn đóng form main và đăng nhập lại.
Cám ơn anh,
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,246
Được thích
9,779
Điểm
860
Nơi ở
Hà Nội
Giống như mình làm cái form đăng nhập ấy anh. Khi click ok thì thoát (Không ẩn) rồi tiếp tục mở form main đó anh. Tương tự khi đăng nhập xong từ form main muốn đóng form main và đăng nhập lại.
Cám ơn anh,
Bạn vào phần Source của Project và sửa code như sau

Mã:
program TestExcel;

uses
  Vcl.Forms,
  Unit2 in 'Unit2.pas' {Form2 -> Main form của chương trình};
  Unit3 in 'Unit3.pas' {Form3 - > form login };

{$R *.res}

var frmLogin: TForm3;
    LogFine: Boolean;
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  frmLogin:= TForm3.Create(nil);
  try
    LogFine := (frmLogin.ShowModal = mrOk); //Mở form đăng nhập và user chọn nút Ok (có ModalResult là mrOk
  finally
    frmLogin.Free;
  end;

  if LogFine then
  begin
    Application.CreateForm(TForm2, Form2);
    Application.Run;
  end;
end.
 

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,441
Được thích
14,389
Điểm
1,910
Nơi ở
Tp.HCM
Bạn vào phần Source của Project và sửa code như sau

Mã:
program TestExcel;

uses
  Vcl.Forms,
  Unit2 in 'Unit2.pas' {Form2 -> Main form của chương trình};
  Unit3 in 'Unit3.pas' {Form3 - > form login };

{$R *.res}

var frmLogin: TForm3;
    LogFine: Boolean;
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;

  frmLogin:= TForm3.Create(nil);
  try
    LogFine := (frmLogin.ShowModal = mrOk); //Mở form đăng nhập và user chọn nút Ok (có ModalResult là mrOk
  finally
    frmLogin.Free;
  end;

  if LogFine then
  begin
    Application.CreateForm(TForm2, Form2);
    Application.Run;
  end;
end.
Anh cho em demo nhé anh, vì mới làm quen nên chưa thể chỉnh đúng được anh.
Cám ơn anh
 

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,441
Được thích
14,389
Điểm
1,910
Nơi ở
Tp.HCM

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,246
Được thích
9,779
Điểm
860
Nơi ở
Hà Nội
Trong Video 1, 2 mình có nói về cấu trúc code của Project. Hai lua nhấp chuột phải trên Project -> View Sourcecode. Bây giờ đã nhìn thấy cấu trúc code để khởi tạo chương trình, nó có cấu trúc Pascal

Program TenProject;
begin
end;

Và hãy sửa theo cấu trúc code mình đã nói là ok.
 

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,441
Được thích
14,389
Điểm
1,910
Nơi ở
Tp.HCM
Trong Video 1, 2 mình có nói về cấu trúc code của Project. Hai lua nhấp chuột phải trên Project -> View Sourcecode. Bây giờ đã nhìn thấy cấu trúc code để khởi tạo chương trình, nó có cấu trúc Pascal

Program TenProject;
begin
end;

Và hãy sửa theo cấu trúc code mình đã nói là ok.
Em đã làm theo nhưng không biết là nó lỗi chỗ nào báo là mrOK...
Em đã set ModalResult cái nút ok là mrOK
Anh xem giúp em nhé.
1542438589111.png
Cám ơn anh
 

File đính kèm

Lần chỉnh sửa cuối:

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,246
Được thích
9,779
Điểm
860
Nơi ở
Hà Nội
Em đã làm theo nhưng không biết là nó lỗi chỗ nào báo là mrOK...
Em đã set ModalResult cái nút ok là mrOK
Anh xem giúp em nhé.
View attachment 207859
Cám ơn anh
Bên Form login có nút bấm gán mrOk nó không báo lỗi có nghĩa là các unit có hằng số này đã được khai báo ở phần đầu. Hai lúa sang form đó copy danh sách unit dán sang bên Program là được.

Lưu ý thêm là bên form có nút gám ModalResult thì hãy lập trình đóng form trên nút này (OnClick) bằng dòng lệnh
CloseModal;
 

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,441
Được thích
14,389
Điểm
1,910
Nơi ở
Tp.HCM
Bên Form login có nút bấm gán mrOk nó không báo lỗi có nghĩa là các unit có hằng số này đã được khai báo ở phần đầu. Hai lúa sang form đó copy danh sách unit dán sang bên Program là được.

Lưu ý thêm là bên form có nút gám ModalResult thì hãy lập trình đóng form trên nút này (OnClick) bằng dòng lệnh
CloseModal;
Nó trả về kiểu Integer anh. Do đó em chỉnh lại từ mrOK sang 1 thì đã hết lỗi.

1542439464463.png

Cám ơn anh đã hướng dẫn.
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,246
Được thích
9,779
Điểm
860
Nơi ở
Hà Nội
Thực chất mrOk là tên hằng số (const) mang giá trị số 1 . Các hằng số liên quan đến Controls thì thường nó đc khai báo trong Unit “Vcl.Controls” . Giống như vba mình có thể dùng tên hằng số hoặc dùng giá trị của nó cũng đc.
 

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,441
Được thích
14,389
Điểm
1,910
Nơi ở
Tp.HCM
Còn vấn đề này nữa, mong anh hướng dẫn giúp

Trong Source Project của em

Rich (BB code):
program Test_1;

uses
  Vcl.Forms,
  Test in 'Test.pas' {frmTest-> Main form của chương trình},
  FormLogin in 'FormLogin.pas' {Form1- > form login},
  Vcl.Themes,
  Vcl.Styles,
  GlobalVar in 'GlobalVar.pas';

{$R *.res}
    var frmLogin: TForm1;

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  frmLogin:= TForm1.Create(nil);
  TStyleManager.TrySetStyle('Luna');

  try
    globalLogFine := (frmLogin.ShowModal = 1); //Mở form đăng nhập và user chọn nút Ok (có ModalResult là mrOk
  finally
    frmLogin.Free;
  end;

 if globalLogFine then
  begin
    Application.CreateForm(TfrmTest, frmTest);
  Application.Run;
  end;
end.
Code trong LoginForm không biết nó sai chỗ nào mà khi nhấn ok thì cho dù giá trị recordset =0 thì nó vẫn hiện formMain.

Mã:
unit FormLogin;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, Data.Win.ADODB,
  Vcl.OleServer, Vcl.CmAdmCtl;

type

  TForm1 = class(TForm)
    ADOConnection: TADOConnection;
    ADO_Login: TADODataSet;
    DataSource_Login: TDataSource;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    COMAdminCatalog1: TCOMAdminCatalog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
//uses Test;
procedure TForm1.Button1Click(Sender: TObject);

  var S:string;
  var s1:string;
 // var
 // frm:TfrmTest;

  begin
    if (Edit1.Text = '') or (Edit2.Text = '') then
      begin
        Application.MessageBox('Phải nhập đầy đủ tên đăng nhập và mật khẩu của bạn', 'Đăng nhập', MB_ICONINFORMATION);
        edit1.SetFocus ;

      end


    else
      begin

        screen.cursor:=crHourGlass; {show busy cursor}
        S:='select * FROM  tblEmployees  where strEmpName=' + QuotedStr(edit1.Text) + ' and strEmpPassword ='+QuotedStr(edit2.Text) ;
        // ShowMessage(S );
        ADO_login.Active:=false;
        ADO_login.CommandText:=S;
        ADO_login.Active:=true;
        if (ADO_login.RecordCount = 1)  then
          begin
           // frm:=TfrmTest.Create (nil)  ;
           // frm.ShowModal;
            //frm.Free ;
            CloseModal;
          end
        else
          begin
            Application.MessageBox('Thông tin đăng nhập không chính xác, vui lòng kiểm tra lại', 'Đăng nhập', MB_ICONstop);

          end;
      end;
      screen.cursor:=crDefault;  {show normal cursor}
  end;


procedure TForm1.Button2Click(Sender: TObject);
  begin
    CloseModal;

  end;

end.
Anh xem và chỉ em chỗ sai với,

Cám ơn anh,
 

Hai Lúa Miền Tây

❆❆❆❆❆❆❆❆
Thành viên BQT
Administrator
Tham gia ngày
18 Tháng ba 2008
Bài viết
7,441
Được thích
14,389
Điểm
1,910
Nơi ở
Tp.HCM
Top Bottom