Berikut ini adalah contoh sederhana bagaimana membuat aplikasi yang dapat membuka file yang sesuai dengan default aplikasinya. Hal ini diperlukan misalnya pada saat anda membuat aplikasi yang dapat menghasilkan report dalam bentuk pdf, dan pada saat file pdf tersebut berhasil dibuat, maka file tersebut secara otomatis akan terbuka dengan pdf viewernya.
Dengan Freepasca/Lazarus, hal ini dapat dilakukan dengan mudah dengan menggunakan kelas TProcess yang ada dalam unit process. Sedangkan command untuk membuka file agar sesuai dengan default aplikasinya adalah :
LINUX : xdg-open <nama_file>
WINDOWS : start <judul_window> <nama_file> atau explorer <nama_file>
Ok, langsung saja kita coba membuat aplikasi sederhananya. Silahkan anda buat project baru di Lazarus, kemudian tambahkan 1 Button dan 1 OpenDialog (ada di tab Dialogs). Seperti gambar di bawah ini.
Pada OpenDialog1, silahkan ubah property Filter agar pada saat dialog muncul, hanya file-file tertentu saja yang terlihat. Misalkan saya mengubah filter agar hanya file-file PDF, ODF, PNG, JPG dan BMP yang akan muncul.
Kemudian tambahkan event OnClicked untuk Button1 tersebut dengan kode di bawah ini.
JANGAN LUPA, tambahkan unit process pada bagian uses di bagian atas.
Sedangkan nama file yang akan dibuka dimasukkan sebagai parameter pertama dari command. Untuk menambahkan paramater ke dalam property Parameters, dapat dilakukan dengan menggunakan append(nama_paramater). Kemudian panggil procedure TProcess.Execute untuk mengeksekusi command. Terakhir, bersihkan object TProcess dari memory karena sudah tidak dipergunakan lagi.
Silahkan anda compile dan run aplikasi anda. Jika semuanya berjalan lancar, maka setelah anda menekan tombol lalu memilih file, maka file tersebut akan terbuka oleh defult aplikasinya.
Sampai di sini, aplikasi ini sudah selesai, hanya saja akan kita tambahkan sedikit perbaikan yang penting. Pada saat TProcess mengeksekusi command, ada kemungkinan sesuatu tidak berjalan sesuai dengan keinginan yang akan mengakibatkan Exception. Oleh karena itu, kita harus memodifikasi aplikasi ini agar dapat menangkap dan memberikan respon yang benar agar aplikasi tidak crash.
Untuk menangkap terjadinya exception ini, kita dapat menggunakan kalang try except. Tambahkan kalang ini di antara TProcess.Execute seperti contoh di bawah ini.
Kode di atas artinya, jika terjadi exception maka tampikan pesan errornya kepada user. Exception tersebut di simpan sebagai variable E yang pesan errornya dapat dipanggil dengan mengunakan property Messege.
Bagaimana, mudah sekali bukan. Selamat mencoba dan semoga yang sedikit ini bermanfaat.
Dengan Freepasca/Lazarus, hal ini dapat dilakukan dengan mudah dengan menggunakan kelas TProcess yang ada dalam unit process. Sedangkan command untuk membuka file agar sesuai dengan default aplikasinya adalah :
LINUX : xdg-open <nama_file>
WINDOWS : start <judul_window> <nama_file> atau explorer <nama_file>
Ok, langsung saja kita coba membuat aplikasi sederhananya. Silahkan anda buat project baru di Lazarus, kemudian tambahkan 1 Button dan 1 OpenDialog (ada di tab Dialogs). Seperti gambar di bawah ini.
Pada OpenDialog1, silahkan ubah property Filter agar pada saat dialog muncul, hanya file-file tertentu saja yang terlihat. Misalkan saya mengubah filter agar hanya file-file PDF, ODF, PNG, JPG dan BMP yang akan muncul.
Kemudian tambahkan event OnClicked untuk Button1 tersebut dengan kode di bawah ini.
procedure TForm1.Button1Click(Sender: TObject);
var
lProcess: TProcess;
begin
if OpenDialog1.Execute then
begin
// buat object process yang akan melakukan eksekusi command
lProcess :=TProcess.Create(Self);
lProcess.Options:=lProcess.Options+[poWaitOnExit];
{$IFDEF LINUX}
lProcess.Executable:='xdg-open';
{$ELSE}
{$IFDEF WINDOWS}
lProcess.Executable:='explorer';
{$ENDIF}
{$ENDIF}
// nama file yang akan dibuka dimasukkan sebagai parameter pertama
// untuk command tersebut
lProcess.Parameters.Append(OpenDialog1.FileName);
// execute command
lProcess.Execute;
lProcess.Free;
end;
end;
JANGAN LUPA, tambahkan unit process pada bagian uses di bagian atas.
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
process;
Inti dari kode di atas adalah. Pertama kita buat object dari kelas TProcess. Object inilah yang akan melakukan eksekusi terhadap command yang kita berikan. Kemudian tambahkan command yang sesuai ke dalam property Excecutable. Dalam hal ini, jika OS yang digunakan adalah LINUX, maka Executable atau cimmand-nya adalah xdg-open dan explorer jika di WINDOWS.Sedangkan nama file yang akan dibuka dimasukkan sebagai parameter pertama dari command. Untuk menambahkan paramater ke dalam property Parameters, dapat dilakukan dengan menggunakan append(nama_paramater). Kemudian panggil procedure TProcess.Execute untuk mengeksekusi command. Terakhir, bersihkan object TProcess dari memory karena sudah tidak dipergunakan lagi.
Silahkan anda compile dan run aplikasi anda. Jika semuanya berjalan lancar, maka setelah anda menekan tombol lalu memilih file, maka file tersebut akan terbuka oleh defult aplikasinya.
Sampai di sini, aplikasi ini sudah selesai, hanya saja akan kita tambahkan sedikit perbaikan yang penting. Pada saat TProcess mengeksekusi command, ada kemungkinan sesuatu tidak berjalan sesuai dengan keinginan yang akan mengakibatkan Exception. Oleh karena itu, kita harus memodifikasi aplikasi ini agar dapat menangkap dan memberikan respon yang benar agar aplikasi tidak crash.
Untuk menangkap terjadinya exception ini, kita dapat menggunakan kalang try except. Tambahkan kalang ini di antara TProcess.Execute seperti contoh di bawah ini.
procedure TForm1.Button1Click(Sender: TObject);
var
lProcess: TProcess;
begin
if OpenDialog1.Execute then
begin
// buat object process yang akan melakukan eksekusi command
lProcess :=TProcess.Create(Self);
lProcess.Options:=lProcess.Options+[poWaitOnExit];
{$IFDEF LINUX}
lProcess.Executable:='xdg-open';
{$ELSE}
{$IFDEF WINDOWS}
lProcess.Executable:='explorer';
{$ENDIF}
{$ENDIF}
// nama file yang akan dibuka dimasukkan sebagai parameter pertama
// untuk command tersebut
lProcess.Parameters.Append(OpenDialog1.FileName);
// execute command
try
lProcess.Execute;
except
// jika terjadi exception, tampilkan pesan error ke user
on E:Exception do
begin
ShowMessage('Gagal mengeksekusi command --> '+E.Message);
end;
end;
lProcess.Free;
end;
end;
Kode di atas artinya, jika terjadi exception maka tampikan pesan errornya kepada user. Exception tersebut di simpan sebagai variable E yang pesan errornya dapat dipanggil dengan mengunakan property Messege.
Bagaimana, mudah sekali bukan. Selamat mencoba dan semoga yang sedikit ini bermanfaat.