Thread ile Form Çağırma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
talhagul
Üye
Mesajlar: 1
Kayıt: 15 Eyl 2020 11:02

Thread ile Form Çağırma

Mesaj gönderen talhagul »

Merhabalar erp uygulaması geliştiriyorum. Örneğin Bir Form1 den Form2 ye geçiş yapılıyor. Form2 de işlem yapılırken Form1 kitleniyor tıklanmıyor. Bunu .Net tarafında thread aracılığı ile kolayca hallediyordum. Delphi de aynı mantıkla thread ile diğer formu açıyorum.

1. Denediğim olay Thread içerisinde yeniden form türetmeden formu threadin execute içerisinde çağırsam;

Kod: Tümünü seç

procedure TForm6.ArkaplanCalistirici2Work(Worker: TArkaplanCalistirici);
begin
 if Worker.CancellationPending then
    begin
      Worker.AcceptCancellation;
      Exit;
    end;
  Form1.ShowModal;
end;
şeklinde butona birinci kez basınca açılıyor. Timer editi arttırıyor. Kapatıp tekrar açtıktan sonra ilk formadaki edit kayboluyor hemen ardından hata mesajı çıkıyor. Edit nesnesi bulunamadı diyor.Form close eventında timer false ediyorum.

Resim

2. Denediğim yöntem ise formu thread içerisinde türetiyorum.

Kod: Tümünü seç

procedure TForm6.ArkaplanCalistirici2Work(Worker: TArkaplanCalistirici);
var
newForm:TForm1;
begin
 if Worker.CancellationPending then
    begin
      Worker.AcceptCancellation;
      Exit;
    end;
   newForm:=TForm1.Create(self);
  newForm.ShowModal;
end;
Bu sefer yukarıdaki gibi bir hata almıyorum.Sorunsuz şekilde çalışıyor ama ana formu kapattığım zaman şu uyarı ile karşılaşıyorum.

Resim


Yani asıl amacım Form2 de çalışırken Form1 den işlem yapabileceğim. MDI ve Child Form olamayacak. Bu sorunu nasıl çözebilirim. Veya farklı alternatif önerileriniz var mı? Şimdiden Teşekkürler
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

Re: Thread ile Form Çağırma

Mesaj gönderen ertank »

Merhaba,

En son yazdığınız yapmak istediğiniz anladığım doğru ise Form.Show() ile basitçe yapılabilecek ve thread kullanımına gerek olmayan birşey. Siz ShowModal() kullandığınız için sorun yaşıyor olma ihtimaliniz yüksek.

Eğer daha farklı bir amacınız var ise derlenebilir ek bileşen gerektirmeyen basit bir proje paylaşabilir iseniz amacınızı anlaması daha kolay olabilir.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Thread ile Form Çağırma

Mesaj gönderen freeman35 »

form u normal show ile aç, sadece Form.FormStyle := fsStayOnTop; kullan.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla