78 12.2. Hộp nhập dữ liệu (Input Box – InputBox) InputBox được sử dụng nhằm yêu cầu người dùng nhập một chuỗi (String) theo gợi ý của dòng nhắc ( Prompt) và tiêu đề (Title) trên đó. InputBox được gọi theo dạng hàm với giá trị trả về là chuỗi dữ liệu mà người dùng nhập. Cú pháp gọi InputBox thông thường như sau: InputBox(Prompt, [Title], [Default], [XPos], [YPos]) Tham số Mô tả Prompt Kiểu String. Nội dung dòng nhắc. Title Kiểu String. Nội dung tiêu đề. Default Kiểu Variant. Giá trị mặc định hiển thị trong InputBox. XPos, YPos Kiểu Double. Toạ độ góc trái trên của InputBox khi hiển thị ra màn hình. Đoạn mã sau sẽ minh hoạ cách thức gọi InputBox: Dim LngSodiemMax As Long LngSodiemMax = _ Val(InputBox("Nhập số lượng điểm tối đa (số nguyên dương)", _ "Số điểm tối đa", "100000")) Nếu người dùng bấm nút OK thì giá trị trả về của hàm InputBox là một chuỗi có giá trị “100000”, còn nếu bấm nút Cancel thì giá trị trả về là một chuỗi rỗng. 12.3. Hộp thoại dựa trên điều khiển Common Dialog. Điều khiển Common Dialog cho phép hiển thị các hộp thoại sau: Ø Ø Hộp thoại Open, Save: phục vụ thao tác mở và ghi tập tin một cách trực quan. Ø Ø Hộp thoại Color: phục vụ thao tác lựa chọn màu. Ø Ø Hộp thoại Font: phục vụ thao tác lựa chọn font chữ. Ø Ø Hộp thoại Print: phục vụ thao tác in ấn. Title Prompt Buttons C C H H Ư Ư Ơ Ơ N N G G I I I I I I : : C C Ơ Ơ B B Ả Ả N N V V Ề Ề N N G G Ô Ô N N N N G G Ữ Ữ L L Ậ Ậ P P T T R R Ì Ì N N H H V V I I S S U U A A L L B B A A S S I I C C 79 Để đưa điều khiển này vào trong hộp công cụ điều khiển (Control Toolbox) chọn menu Tools Ö Additional Controls, sau đó chọn Microsoft Common Dialog Control. Ø Ø Các thuộc tính của điều khiển Common Dialog. Thuộc tính Mô tả Ghi chú DialogTitle Tiêu đề của hộp thoại Kiểu String FileName Trả về đường dẫn và tên của file được chọn - Hộp thoại Open, Save. Kiểu String FileTitle Trả về tên của file được chọn (không chứa đường dẫn) - Hộp thoại Open, Save. Kiểu String Filter Mô tả các kiểu file sẽ được hiển thị trong hộp thoại - Hộp thoại Open, Save. Kiểu String FilterIndex Kiểu file mặc định sẽ được hiển thị trong hộp thoại - Hộp thoại Open, Save. Kiểu Integer DefaultExt Phần mở rộng mặc định được gắn trong hộp thoại (khi người dùng không chọn mà nhập text vào trong phần tên file) - hộp thoại Open, Save. Kiểu String InitDir Đường dẫn khởi tạo trong hộp thoại - Hộp thoại Open, Save Kiểu String CancelError Qui định có phát sinh lỗi hay không khi người dùng chọn nút Cancel trong hộp thoại. Kiểu Boolean Color Trả về màu được chọn trong hộp thoại – Hộp thoại Color Tham khảo Object Browser Ø Ø Các phương thức của điều khiển Common Dialog. Phương thức Mô tả Ghi chú ShowOpen Hiển thị hộp thoại mở file (Open) Tham khảo trong Object Browser hoặc Help ShowSave Hiển thị hộp thoại ghi file (Save) ShowColor Hiển thị hộp thoại chọn màu (Color) ShowFont Hiển thị hộp thoại chọn font chữ (Font) 80 ShowPrinter Hiển thị hộp thoại in ấn (Printer) Ví dụ: Xây dựng UserForm gồm các điều khiển như hình dưới: Yêu cầu: Ø Ø Người dùng bấm nút Open Path để lấy về đường dẫn của một file sau đó hiển thị nó trên điều khiển lbPath. Ø Ø Người dùng chọn nút Select Color để đổi màu của UserForm. Mã lệnh tham khảo như sau: Mã lệnh với thủ tục sự kiện Click của cmdOpen Private Sub cmdOpen_Click() Dim strPath As String ' Xau luu tru duong dan cua file duoc chon Dim strFilter As String ' Xau bieu dien cac kieu file hien thi strFilter = "App(*.exe)|*.exe|Text(*.txt)|*.txt|All files (*.*)|*.*" With cmDlg .DialogTitle = "Chon file" .InitDir = "C:\Program Files" ' duong dan mac dinh .Filter = strFilter .ShowOpen strPath = .Filename ' lay ve ten day du cua file duoc chon End With lbPath.Caption = strPath End Sub Mã lệnh với thủ tục sự kiện Click của cmdColor Private Sub cmdColor_Click() Dim lngColor As Long ‘ bien luu tru mau duoc chon With cmDlg .ShowColor lngColor = .color ‘ lay ve mau nguoi dung chon trong hop thoai End With Me.BackColor = lngColor End Sub Label Name: lbPath Common Dialog Name: cmDlg Command Button Name: cmdO p en Command Button Name: cmdColor C C H H Ư Ư Ơ Ơ N N G G I I I I I I : : C C Ơ Ơ B B Ả Ả N N V V Ề Ề N N G G Ô Ô N N N N G G Ữ Ữ L L Ậ Ậ P P T T R R Ì Ì N N H H V V I I S S U U A A L L B B A A S S I I C C 81 13. Lập trình xử lý tập tin Sử lý tập tin là một nhu cầu không thể thiếu khi xây dựng phần mềm ứng dụng, bởi hầu hết các loại thông tin trên máy tính đều được lưu trữ trong các tập tin khác nhau. Trong các phần mềm ứng dụng đang được sử dụng, dữ liệu đầu vào của chúng được cung cấp dưới hai hình thức: Ø Ø Nhập trực tiếp từ bàn phím bởi người sử dụng: cách này chỉ phù hợp đối v ới lượng số liệu không nhiều. Ø Ø Nhập từ tập tin dữ liệu, ví dụ như để dựng được bản đồ số (để thiết kế đường ôtô trên máy tính) thì số liệu về các điểm đo toàn đạc khá nhiều (có thể là vài nghìn điểm đo) và thường được cung cấp dưới dạng các tập tin văn bản. Việc nhập dữ liệu t ừ tập tin làm cho mức độ tự động hóa được nâng cao hơn, cho phép các phần mềm ứng dụng có thể kết nối được với nhau thông qua hình thức truyền dữ liệu. Ngoài ra, để lưu lại thông tin hay kết quả sau mỗi phiên làm việc với phần mềm ứng dụng, thì việc sử dụng tập tin làm nơi lưu trữ là phổ biến nhất. Các số liệu nhập vào cũng như các kết quả tính toán của phần mềm sẽ được lưu lại vào một hay nhiều tập tin và chúng sẽ được gọi lại trong phiên làm việc tiếp theo. Để có thể xây dựng chương trình có khả năng nhập/xuất dữ liệu từ tập tin, thì người lập trình cần phải nắm được các nội dung sau: Ø Ø Kiểu của tập tin: là cách thức tổ chức dữ liệu trong tập tin đó. Hiện nay có vô s ố các định dạng cho tập tin bởi người dùng có thể tự do định nghĩa. Kiểu định dạng phổ biến nhất dùng để trao đổi dữ liệu là tập tin văn bản (thường có phần mở rộng là TXT, CSV). Với định dạng này ta có thể xem nội dung của tập tin bằng các chương trình soạn thảo đơn giản như Notepad.exe của Windows. Ø Ø Thao tác lên tập tin: là những thao tác nhằm biến đổ i nội dung hoặc chính tập tin đó cho phù hợp với mục đích của người dùng. Những thao tác này được thực hiện theo một trình tự nhất định với các chương trình con chuyên trách cho từng nhiệm vụ. Các thao tác cơ bản bao gồm: Đọc dữ liệu (Input) từ tập tin vào trong chương trình. Ghi dữ liệu (Output) từ chương trình ra tập tin. Tìm kiếm dữ liệu trong tập tin: đọc dữ liệu có chọn lọc. Tạo mới tập tin: tạo ra tập tin trên đĩa để ghi dữ liệu lên nó. Xóa tập tin khi không còn dùng đến nó nữa. Di chuyển vị trí (Move) của tập tin từ nơi này đến nơi khác. Tạo bản sao (Copy) cho tập tin: tạo một tập tin thứ hai giống hệt tập tin gốc về nội dung nhưng tên hoặc vị trí lưu trữ của tập tin bản sao phải khác so với tập tin gốc. 13.1. Các hình thức truy cập tập tin Truy cập tập tin bao gồm các thao tác đọc và ghi dữ liệu. Cách thức truy cập bao gồm: Ø Ø Truy cập kiểu tuần tự (Sequential): Quá trình đọc và ghi dữ liệu với tập tin theo các khối dữ liệu liên tục từ đầu đến cuối tập tin. Các khối dữ liệu liên tục có thể là các ký tự, các số, mẩu tin, chuỗi, dòng văn bản,…Các khối này được phân cách nhau trong tập tin bằng kí tự dấu phẩy (,) hoặ c kí tự xuống dòng. Ví dụ, muốn đọc dòng dữ liệu thứ n trong một tập tin văn bản có m dòng (m>n), không thể ngay lập tức truy cập tới dòng thứ n mà phải lần lượt đọc từ dòng hiện tại (là dòng văn bản mà con trỏ đọc dữ liệu đang ở đó) tới dòng thứ n. Kiểu truy cập tuần tự thường áp dụng với các tập tin văn bản (text file). 82 Hình III-24: Truy cập kiểu tuần tự khi đọc tập tin văn bản. Ø Ø Truy cập kiểu ngẫu nhiên (Random): Quá trình đọc và ghi dữ liệu với tập tin được thực hiện dựa trên các mẩu tin có kích thước xác định (đơn vị để đo lường mẩu tin là Byte). Việc truy xuất đến một mẩu tin là tuỳ ý, không cần tuân theo trình tự mà theo thứ tự của mẩu tin đó trong tập tin. Quá trình truy cập ngẫu nhiên thường được áp dụng cho các tập tin trong đó dữ liệu được t ổ chức theo các khối có cấu trúc (các mẩu tin). Ø Ø Truy cập kiểu nhị phân (Binary): Quá trình đọc và ghi dữ liệu với tập tin được thực hiện theo các khối không giống nhau về kích thước. Quá trình truy cập nhị phân thường áp dụng cho các tập tin có cấu trúc không cố định và dữ liệu có thể được xác định thông qua các byte dữ liệu được đọc vào. Trong khuôn khổ giáo trình này, tập tin văn bản và các thao tác lên nó, được trình bày chi tiết bởi tính phổ biế n và hữu dụng của loại tập tin này khi làm việc với các phần mềm ứng dụng trong ngành xây dựng công trình giao thông. Để việc thao tác với các tập tin được thuận lợi, VB cung cấp sẵn hai phương pháp cơ bản: Ø Ø Sử dụng các hàm có sẵn để thao tác trực tiếp lên tập tin (dùng các hàm I/O). Ø Ø Sử dụng một số điều khiển để thao tác gián tiếp lên tập tin (dùng đối tượng FSO). 13.2. Xử lý dữ liệu trong tập tin với các hàm I/O: Các hàm I/O (Input/Output) dùng để truy xuất các tập tin, trình tự như sau: 1. Mở tập tin: là yêu cầu bắt buộc phải thực hiện trước khi đọc hay ghi dữ liệu vào tập tin. 2. Thực hiện các thao tác với tập tin: đọc hoặc ghi dữ liệu vào tập tin. 3. Đóng tập tin: bắt buộc phải thực hiện khi kết thúc các thao tác với tập tin. Trong khuôn khổ giáo trình này chỉ trình bày các thao tác theo kiểu tuần tự với tập tin, các kiểu truy c ập khác có thể tìm trong các tài liệu tham khảo ghi ở cuối giáo trình này hoặc trong Help Online của VBA IDE. 13.2.1. Mở tập tin: Cú pháp: . được thực hiện theo một trình tự nhất định với các chương trình con chuyên trách cho từng nhiệm vụ. Các thao tác cơ bản bao gồm: Đọc dữ liệu (Input) từ tập tin vào trong chương trình. . nhiên (Random): Quá trình đọc và ghi dữ liệu với tập tin được thực hiện dựa trên các mẩu tin có kích thước xác định (đơn vị để đo lường mẩu tin là Byte). Việc truy xuất đến một mẩu tin là tuỳ. bắt buộc phải thực hiện trước khi đọc hay ghi dữ liệu vào tập tin. 2. Thực hiện các thao tác với tập tin: đọc hoặc ghi dữ liệu vào tập tin. 3. Đóng tập tin: bắt buộc phải thực hiện khi kết thúc