Lập trình Windows – Truyền tham số giữa 2 Dialog

1. Mô tả:

– Giả sử chúng ta cần thực hiện một chương trình: “Nhập dữ liệu vào Dialog thứ 1 và chuyển dữ liệu vừa nhập sang Dialog thứ 2”.

– Để giải quyết vấn đề trên, có rất nhiều cách như: sử dụng file text để ghi dữ liệu từ Dialog 1 và đọc dữ liệu khi vào Dialog 2, sử dụng một biến toàn cục để lưu trữ dữ liệu, …

– Nhưng cách đơn giản nhất vẫn là truyền trực tiếp dữ liệu vừa nhập từ Dialog 1 đến Dialog 2. Tại sao ý tưởng đơn giản như vậy nhưng tôi lại làm cả 1 demo để chia sẽ, lí do là vì cách này hầu như không có hướng dẫn trên mạng (cả tiếng việt lẫn tiếng anh) và nếu là lính mới khi học lập trình Windows, bạn cần có 1 tí kiến thức về việc tạo “Phương thức thiết lập” trong môn Lập trình hướng đối tượng. Chúng ta sẽ nói rõ hơn trong các phần sau.

2. Tạo các Dialog:

 – Bước 1: Tạo Dialog 1

Đơn giản gồm 1 Edit Control để nhập dữ liệu và 1 Button để phát lệnh chuyển Dialog khi nhập xong dữ liệu như Hình 1.

Untitled

Hình 1

 – Bước 2: Tạo Dialog 2

  + Thêm 1 Dialog trong tài nguyên như Hình 2

Untitled

Hình 2

 + Thiết kế Dialog 2 gồm 1 Static Control để hiển thị dữ liệu được truyền từ Dialog 1 như Hình 3

Untitled

Hình 3

 – Như vậy là ta đã tạo xong 2 Dialog đủ để thực hiện việc truyền tham số.

3. Cài đặt câu lệnh truyền tham số:

 – Bước 1: Tạo class Cho Dialog2

 + Dialog 2 vừa tạo chưa có Class nào đại diện, nên bước đầu tiên chúng ta phải tạo class đại diện cho Dialog 2, Hình 4

Untitled

Hình 4

 + Đặt tên cho class là Dialog2, Hình 5

Untitled

Hình 5

– Kết quả là ta được Class Dialog2, Hình 6

   Untitled

Hình 6

 – Bước 2: Hiển thị Dialog2 từ Dialog1

 + Để gọi được class Dialog2, ta cần #include vào class của Dialog1, Hình 7

Untitled

Hình 7

 + Tại phương thức Click của Button trong Dialog1, ta sẽ thêm các câu lệnh để có thể hiển thị Dialog 2, Hình 8

Untitled

Hình 8

 Bước 3: Truyền tham số cho Dialog2

 – Sửa lại code trong Hình 8, nhưng ta sẽ thêm tham số vào Dialog2, Hình 9

Untitled

Hình 9

 – Tiếp theo, Trong class Dialog2 chúng ta mở phương thức khởi tạo của Dialog2 lên để thêm 1 tham số là CString vào, Hình 10 trong file.h

Untitled

Hình 10

Hình 11, trong file.cpp

Untitled

Hình 11

 – Giải thích việc thêm đối số vào phương thức thiết lập như trên:

 + Về việc thiết lập giá trị mặc định của các tham số: Nếu phương thức thiết lập không có tham số thì mặc định giá trị của tham số đó khi truyền vào là Null, lí do là vì ta đã mặc định giá trị của các tham số là Null (Hình 10)

 + Về vị trí của các tham số: Nhưng khi tạo Dialog2 trong Dialog1, ta không cần quan tâm đến dữ liệu của tham số pParent, mà chỉ cần quan tâm đến dữ liệu của duLieu, vì vậy ta chỉ cần đặt tham số duLieu trước tham số có sẵn là pParent là OKE :), kĩ thuật này mình đã không hề nghĩ ra và mất nhiều thời gian lòng vòng trên mạng.

 – Sau đó ta chạy thử chương trình để xem có lỗi gì không, nếu không có lỗi thì ta đã truyền thành công tham số từ Dialog1 sang Dialog2, việc còn lại là hiển thị dữ liệu đó lên Dialog2.

Bước 4: Hiển thị dữ liệu được truyền trên Dialog2

 – Tạo thêm 1 nút Button trong Dialog2 để phát lệnh show dữ liệu, Hình 12

Untitled

Hình 12

– Thêm 1 biến vào Edit control, Hình 13

 Untitled

Hình 13

 – Đặt tên biến là label1, Hình 14

Untitled

Hình 14

 – Tạo 1 mảng kiểu char để lưu dữ liệu vừa được truyền từ Dialog 1:

 + Khai báo mảng saveDuLieu trong file.h, Hình 15

Untitled

Hình 15

 + Tiến hành lưu dữ liệu trong file.cpp, Hình 16

Untitled

Hình 16

 – Trong phương thức CLick của button “Hiển thị dữ liệu” của Dialog2, Hình 17

Untitled

Hình 17

4. Chạy thử chương trình:

 – Nhập dữ liệu vào Edit control, Hình 18

Untitled

Hình 18

– Hiển thị dữ liệu khi qua Dialog2 (sau khi click button), Hình 19

Untitled

Hình 19

Có rất nhiều cách chuyển đổi kiểu dữ liệu, các bạn có thể chọn cách riêng của mình, chúc các bạn thành công 🙂