Arsip: Apakah ini error dari TPageControl ?

 
user image
more 12 years ago

Akuna-Matata

Halo teman-teman... Saya sedang buat suatu aplikasi dimana saya bisa menjalankan sebuah thread (ancestor classnya: TThread) tertentu dari aplikasi tsb. Di form utama saya buatkan pagecontrol dgn 4 buah tabsheet (tabsheet1,2 and so on). Di dalam Tabsheet trakhir (tabsheet4) saya simpan sebuah Tmemo biasa. Secara default Tabsheet1 aktif secara otomatis, dan tabsheet4 belum aktif. Ok, kemudian aplikasi saya run seperti biasa. Saya sama sekali belum memindahkan/mengclick bagian pagecontrol yg membuat tabsheet 4 yg berisi Tmemo tsb, sehingga otomatis memo-nya belum pernah terlihat sebelumnya. Masalahnya muncul kemudian bila saya saat pertamakali menjalankan aplikasi langsung menekan sebuah button yg mengeksekusi/menjalankan thread (thread ini berusaha menulis beberapa lines kedalam memo). Kemudian muncul error "System Error. Code: 1400. Invalid Window Handle." Anehnya, jika SEBELUM thread di execute saya pindahkan dulu tabsheet4 sebagai tab yg aktif error ini tidak pernah muncul. Sampai sekarang saya yakin, error bukan berasal dari thread yg saya jalankan. Didalam thread saya pasang try except dan memang tidak ada error yg bisa di catch. Problem ini sebenarnya selesai, jika saya menset property tabindex utk tabsheet4 = 0 sehingga memo1 otomatis terlihat saat aplikasi pertamakali running, tanpa harus saya klik apapun sebelumnya. Apakah error ini memang datang dari Pagecontrol ? saya penasaran nih, mohon bantuannya.
user image
more 12 years ago

DelphiExpert

error terjadi karena memo belum inisialisasi dengan benar, pagelist memang 'menyembunyikan' controls didalamnya dng caranya sendiri sehingga ada kalanya komponen tertentu yg membutuhkan handle parent (akses ke parent-nya) menemui error seperti yg dikau temui. ukt itu make-sure set parent memo tsb sebelum menjalankan code thread tsb. manually...
user image
more 12 years ago

Akuna-Matata

wow... thx bro, ntar dicoba dulu. Pusing dah gara-gara error yg aneh ini :D
user image
more 12 years ago

Akuna-Matata

Masih error neh..:(
make-sure set parent memo tsb sebelum menjalankan code thread tsb. manually...
misalkan memo1 itu ada di atas panel1 yg saya simpan di tabsheet4:
Memo1.parent := panel1;
panel1.parent := tabsheet4;
// thread di create dan execute
dan saat design time saya tambahkan 1 baris kata-kata tidak penting ke memo1.lines-nya. hasilnya ? saat thread dijalankan (dan belum selesai) saya coba ganti active tabsheet, memonya ngilang/lenyap. Saat application di tutup error masih sekitar invalid windows handle. Atau saya masih salah tangkep solusi dari mas DE ?
user image
more 12 years ago

DelphiExpert

memo lenyap kemungkinan karena dikau salah set parent-nya, kalau ngga' salah ingat parent-nya adalah PageList[x] dalam thread, pada waktu melakukan update isi memo harus menggunakan synchronisasi contoh:

type
  TThreadX = class (TThread)
   protected
     procedure Execute; override;
     procedure UpdateVCL;
   end;
{ TThreadX }
procedure TThreadX.Execute;
begin
  Synchronize(UpdateVCL);
end;
procedure TThreadX.UpdateVCL;
begin
  Memo1.Lines[X]:= 'blablabla';
end;
more ...
  • Pages:
  • 1
Share to

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com