Dataların Acılısını Progress Barla izleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hedefbusiness

Dataların Acılısını Progress Barla izleme

Mesaj gönderen hedefbusiness »

Giris Kontrolünden sonra Datamodule icindeki 100 tablonun acılıs süresini ayrı bir formdaki progress bar la göstermek istiyorum

Giris kontrolünden sonra datamodulün create olayında progress formunu olusturup showmodal ile gösteriyorum ve sonra her tablo aktif olduktan sonra position degerini bir artırıyorum

Sorun şu Progress formunu showmodalla gösterdigimde progressbar step yapmıyor ve form kapanmıyor

Progress formunu show ile gösterdigimde işlem oluyor ancak bu seferde progress form üzerindeki yazılar ve resimler gözükmüyor

Sizce ne yapmalıyım?
heskin35
Üye
Mesajlar: 132
Kayıt: 30 Haz 2004 09:48

Mesaj gönderen heskin35 »

Final projemde kullandığım bir olay vardı bir bak istersen belki bir fikir oluşturur hocam. Bir mesaj penceresi oluşturuyordum ve içinde progress de işlemleri gösteriyordum.Gerçi ben bağlantılar için kullanmıştım ama mantık işine yarayabilir.

Kod: Tümünü seç

begin
  Application.Initialize;
  Application.CreateForm(TModul, Modul);
  Application.CreateForm(TFr_Main, Fr_Main);
  Fr_Main.WindowState:=wsmaximized;
  Fr_Main.Show;
with TFr_Mesaj.Create(nil) do
  try
    Label1.Caption:='Veri dosyaları kullanıma açılıyor...';
    progressbar1.Max := 100;
    Show;   // show a splash screen contain ProgressBar control
    Update; // force display of Form5
    modul.Database.Connected:=true;
    progressbar1.StepBy(10);
    modul.Transaction.Active:=true;
    ProgressBar1.StepBy(10);
    modul.Tb_Ders.Active:=true;
    ProgressBar1.StepBy(10);
    modul.Tb_Donem.Active:=true;
    ProgressBar1.StepBy(10);
    modul.Tb_OgrGorevli.Active:=true;
    progressbar1.StepBy(10);
    modul.Tb_Ogrenci.Active:=true;
    progressbar1.StepBy(10);
    modul.Tb_OgrenciDers.Active:=true;
    progressbar1.StepBy(10);
    modul.Tb_Sinif.Active:=true;
    progressbar1.StepBy(10);
    modul.Tb_Sube.Active:=true;
    ProgressBar1.StepBy(20);
    modul.Tb_OgretimYili.Active:=true;
    progressbar1.StepBy(10);
  finally
    Free;
    Fr_Mesaj:=nil;
  end;
  Application.CreateForm(TFr_Menu, Fr_Menu);
  Application.Run;
end.

Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

Aralarda

Kod: Tümünü seç

Application.Processmessages ;
yapmalısınız.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
doganzorlu
Kıdemli Üye
Mesajlar: 395
Kayıt: 22 Tem 2004 09:15
Konum: İzmir
İletişim:

Mesaj gönderen doganzorlu »

Selam,

Delphi ile çok uzun zamandır uğraşmıyorum ama ben olsaydım DB leri açan bölümü bir thread olarak set eder herbir db değiştikçe genel bir değişkeni set ederdim. Bir başka thread le de bu değişkene bakar progress i ilerletirdim. Bu şekilde makinanın kasılmasını engellemiş olurdum. ProcessMessages ile mesaj kuyruğundaki mesajları işlemeye çalışmazdım.
Doğan Zorlu, İzmir

------------------------
"Bu Kitap'ı sana yalnız şunun için indirdik: Hakkında ayrılığa düştükleri şeyi onlara iyice açıklayasın ve Kitap, iman eden bir topluluk için kılavuz ve rahmet olsun." (NAHL 64)
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Progress Formu show ettikten sonra değiştirdiğin Label, Image vs.yi hemen update etmen gerekiyor. Örneğin:

...
var
I: Integer;
begin
ProgressForm.Show;
for I := 1 to 1000 do
begin
ProgressForm.Label1.Caption := IntToStr(I);
ProgressForm.Label1.Update;
Sleep(3);
end;
end;


İyi çalışmalar.
Cevapla