Arsip: [ASK] Cara buat time countdown pada delphi dan thread

 
user image
more 17 years ago

maelov

hi, mau nanya nih... ada yg bisa beri masukan cara buat time countdown untuk program yg lagi berjalan proses nya seperti pada progress bar? trus gimana cara pakai thread untuk multitasking, jadi saat delphi nya lagi proses lama, bisa melakukan aktivitas lainnya pada program delphi tersebut? thx kalau ada yg bisa membantu ^^ udah cari2 di internet tapi gak dapat2... masih gak ahli di bidang syntaks delphi... >.<
user image
more 17 years ago

DelphiExpert

1. countdown, simplenya sbb. - buat variable global misal countdown: integer = 10; - buat timer, set interval 1 detik (1000msec), non aktifkan - taruh progressbar, set maxvalue:= <start counter> atau 10 dlm contoh ini; - buat button utk start counting, onClick: start variable countdown:= 10 <reset> aktifkan timer - set onTimer event: countdown:= countdown-1; progressbar1.position:= countdown; if countdown=0 then timer1.enabled:= false; - selesai 2. multithreading, anda harus tahu prinsip kerja wrapper thread di delphi, yaitu TThread - utk menggunakan komponen ini anda cukup buat turunan baru dan override protected property Execute; - jalankan task-berat anda dalam scope Execute ini. - nah, agar proses delphi anda yg lama bisa jalan di background, maka anda harus menjalankannya dalam method Execute ini - contoh simple:

type
  TSympleWorker = class(TThread)
    // masukkan semua parameter sebagai variable global/field utk thread ini disini, misal:
    kodeBarang: string;
    whereClause: string;
    procedure Execute; override;  // anda harus meng-override abstract method ini
    procedure DoHeavyTask; // contoh
  end;
procedure TSympleWorker.Execute;
begin
  DoHeavyTask; // panggil method yg melakukan pekerjaan berat, atau jalankan kode tsb disini.
  // do another tasks using kodeBarang: string; and whereClause: string; as parameters
end;
procedure TSympleWorker.DoHeavyTask;
begin
  // do your tasks using kodeBarang: string; and whereClause: string; as parameters
end;
cara pakenya:

var worker: TSympleWorker;
begin
  worker:= TSympleWorker.Create(True); // jika anda mau inisialisasi vars sbg parameter, buat thread ini dalam 
                                       // keadaan suspend state
  try
    worker.FreeOnTerminate:= true; // jika anda tidak ingin meng-control existensi instance ini, 
                                   // buat true maka setelah thread selesai menjalankan tugasnya (in terminated state) otomatis 
                                   // akan memanggil destructor, jika tidak anda harus "peduli" utk men-free instance ini
    // contoh passing parameters
    worker.kodeBarang:= '0001-WK';
    worker.whereClause:= 'IS_ACTIVE=1';
    worker.resume;  // jalankan / eksekusi thread ini, 
                    // NOTE: proses tidak berhenti disini utk menunggu thread ini selesai (non-blocking)
                    // itulah fungsi multithreading :)
  except
    // do something on exeception...
  end;
end;
and please note: anda harus melakukan synchronisasi bila melakukan contact dng komponen yg bersifat visual dari thread, misal set caption sebuah label, set position sebuah progress bar dsb. ok, semoga membantu...
user image
more 17 years ago

maelov

Thx kk delphi exoert. Sangat membantu ^^
user image
more 17 years ago

DelphiExpert

Thx kk delphi exoert. Sangat membantu ^^
walah... kok perot sih :mrgreen:
more ...
  • Pages:
  • 1
Share to
Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com