Dialog
Dùng để hiển thị các hộp thoại (dialog) trong chương trình
Dùng để hiển thị các hộp thoại (dialog) trong chương trình
Khi sử dụng máy tính, đôi khi các bạn sẽ thấy những hộp thoại (Dialog) kiểu như thế này, dùng để yêu cầu người dùng lựa chọn những file, thư mục để mở (open), lưu (save) một cái gì đó.
Delphi hỗ trợ những hộp thoại như thế dưới dạng một control trong VCL (và cả FMX) là TDialog (TOpenDialog, TSaveDialog,...). Sau đây chúng ta sẽ làm quen với control này.
Có hai cách sử dụng dialog: một là kéo thả một thành phần T?Dialog (TOpenDialog, TSaveDialog, TFontDialog,...) vào form chính và gọi khi cần, cách hai là tự tạo và giải phóng đối tượng T?Dialog thủ công.
Cách 1 có ưu điểm là có thể sử dụng lại nhiều lần, ở nhiều vị trí khác nhau.
type
TForm1 = class(TForm)
...
OpenDialog1: TOpenDialog; // Control TOpenDialog được kéo thả vào form
...
end;
...
procedure TForm1.Button1Click(Sender: TObject); // Một nút nào đó được click thì mở dialog
begin
if OpenDialog1.Execute = true then
begin
ShowMessage(OpenDialog1.FileName);
... // Làm gì đó thêm nữa với OpenDialog1.FileName
end;
end;
Như trên, cách sử dụng dialog cơ bản nhất là kiểm tra phương thức Execute của dialog, nếu trả về True thì thao tác được chấp nhận (đã chọn 1 file), hoặc False nếu người dùng hủy bỏ (nhấn Cancel trên dialog, hoặc nhấn nút X để đóng hộp thoại). Chúng ta chỉ quan tâm trường hợp người dùng đã chọn 1 file, nên phải đặt vào cấu trúc if để xử lý.
Đường dẫn tệp đã chọn của người dùng được lưu lại trong thuộc tính FileName, chúng ta có thể truy xuất được đường dẫn này và thực hiện các thao tác khác (mở tệp để đọc chẳng hạn).
Cách 2: Có thể không cần kéo thả control dialog vào form, chúng ta sẽ tạo tự động một đối tượng T?Dialog và giải phóng nó khi xong.
procedure TForm1.Button1Click(Sender: TObject);
var
Dlg: TOpenDialog;
begin
Dlg := TOpenDialog.Create(nil);
try
Dlg.DefaultExt := '.doc';
Dlg.Options.ofFileMustExist := true;
if Dlg.Execute = true then
ShowMessage('Ban da chon tep ' + Dlg.FileName)
else
ShowMessage('Ban chua chon gi ca');
finally
Dlg.Free;
end;
end;
Như trên, chúng ta thấy được cách tạo thủ công 1 đối tượng dialog và giải phóng nó, gồm các bước chính:
Khi gọi method Execute, một hộp thoại hiện ra và chờ đợi người dùng thực hiện thao tác. Chương trình chính tạm dừng. Sau khi người dùng chọn hoặc hủy bỏ, chương trình sẽ tiếp tục chạy đến đoạn tiếp theo.
Phần này mình chỉ trình bày các thuộc tính cơ bản của 2 dialog là TOpenDialog và TSaveDialog, các loại khác các bạn có thể tự tìm hiểu thêm.