sorgulamayı sonlandırmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

animasyon olarak açtığın formu kaldırıp animasyonu bir panel üzerine koyup form açılışına panelin visiblesini false yap
işleme başladığında paneli göster işi bittiğinde kapat derim. animasyon için açılan unit anmasyon için değeri unit1 deki değişkenden alıyordur. farklı unit değilde panel ile daha kolay olur ve problem ortadan kalkabilir düşüncesindeyim. tek unitte iş çözülebilir...
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

arkadaşlar mantığı değiştirdim soyle yaptim

panel koydum bir tane bunu ileri geri oynatacak sekilde ayarladım, yani artık bir form açılmıyor, baska bir gorsel effect oldu ama halen sorgu bitene kadar mudahale edemiyorum

bir thread fonksiyonun icine aslinda openi gomebilirim ama bu sekilde thread sonlanirmi ki

yeni arama butonuna tiklandiginda bu threadi durdurmaya calisayim bakalim ne oluyor

yardimci olanlara ve olacaklara teşekkürler
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Haklısın sonlanmaz.Thread içinde Terminated gerçekleşene kadar, şeklinde bir döngü kurman gerekecek, bu döngü de Open'ın asenkron olmasını gerektirir ki, değil. Yapabileceğin şey Thread'i Free etmek. Bunun da bazı sakıncaları olabilir tabii.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Hangi VT'de çalışıyorsun. Bazı VT'lerin SQL sorgusunu iptal etmek için API'leri mevcut. Bunlardan faydalanabilir, SQL'i direkt VT motorundan iptal edersin. Bu sayede Open, geri dönecektir.

Bir ihtimal de VT bağlantısını kopartman.
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

bence bu olmaz sanırım, openin arasina giremiyoruz ki?

thread de yapsan icinde open i calistircaksin, not terminated olana kadar calis desen o anda thread openin isi bitmeden sonlandirmaz gibime geliyor, cunku veritabanindan yanit bekliyor.

bazi delphi ile yapilmis uygulamalarda gordum gerci bu olayi ama bakalim nasil halledecegiz
mavore
Üye
Mesajlar: 13
Kayıt: 05 May 2005 08:12

Application.ProcessMessages çözmesi lazım...

Mesaj gönderen mavore »

Bildiğim kadarıyla
Application.ProcessMessages
Yazdığın satırda önemli...
Yani sorgulamadan öncemi yoksa sonramı?
Buna göre bir değişiklik yapmayı dene!
Ayrıca onshow olayında bir döngü veya open durumu varsa bence
onshow olayında değilde bit timer koyup timer da bunu yazmalısın
( Burrada da dikkat edilmesi gereken
1- Timerın ilk olarak interval süresi kısa olsun(direkt çalışsın diye)
2-Timer başladığında anda interval'ini çok uzun bir süreye aktar..(işlem bitmeden başlamasını önlemeke için)
3-Timer da ki olay sonuna da timerın kendisini enable'ını false at
4-form close olayında da enable'ını False yap
)
Bi de bu kodu döngülerde sürekli şekilde kullanmasını sağlamak işelm zamanını biraz daha uzatıyor..Eğer for döngüsü türünde bir şeyle kullacaksan mesela
if i mod(20)=0 then Application.ProcessMessages;
şeklinde bir kullanım yapmak bence daha mantıklı...
Bi yerde gördüğüm bi kullanımda tam hatırlamaıyrum ama aşağıdakine benzer bi kod da vardı....
repeat
Application.ProcessMessages;
until (baglantı.sonlandımı) ;

Sorunu doğru anladıysam sanırım böyle bir şey olacak
İnş. işine yarar bişeyler yazmışımdır...

Kolay gelsin..
Kullanıcı avatarı
kadirkurtoglu
Üye
Mesajlar: 748
Kayıt: 22 May 2005 01:20
Konum: Uzakta Görünen Tepeden...

Mesaj gönderen kadirkurtoglu »

hocam mege demiş ki
progressmessage işe yaramaz.
yukarıdaki kod yanlış yazılmış
doğrusu

Kod: Tümünü seç

application.processmessages
olacaktı mege hocam. yanlışlıkla oldu diye düşünüyorum.
onları bende söyledim. en son söylediğim panel işi sanırım biraz işine yaramış.
Bir mum, yanındaki mumları tutuşturmakla,
ışığında hiç bir şey kaybetmez.

Mevlana

OS win.10, IDE Delphi 10.3, RDBMS Firebird and MSSQL, BROWSER Chrome
Kullanıcı avatarı
VooDoo
Üye
Mesajlar: 126
Kayıt: 22 Haz 2005 10:25
Konum: Bursa & ANKARA
İletişim:

Mesaj gönderen VooDoo »

işe yarar gibi oldu ama tam olmadı yine sonlandırmayı yapamadım
Cevapla