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

Liên hệ QC

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,649
Được thích
10,138
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
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...

Các bạn xem thêm các bài học Delphi cơ bản tại đây.
 
Lần chỉnh sửa cuố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...

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

  • 1542437886954.png
    1542437886954.png
    137.5 KB · Đọc: 18
Lần chỉnh sửa cuố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;
 
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.
 
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.
 
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,
 
Trong nhánh IF kiểm tra nếu trường hợp đăng nhập sai thì lệnh đóng là Close;
Nếu làm thế roiif mà vẫn sai logic thì vô lý?
 
Bạn chưa có lệnh đóng Form khi RecordCOunt= 0 kìa.
 
Web KT
Back
Top Bottom