Bir işlemi yarısında iptal etme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Bir işlemi yarısında iptal etme

Mesaj gönderen naile »

AdoQuery ile sorguladığım listeyi gridde gösteriyorum ve mail gönder butonunu tıklayınca tek tek listedekilere mail gönderiyor. Bunu bir while döngüsü kurarak yaptırdım. Ama bir buton daha koyup bu işlemi yarısında durdurmak veya iptal ettirmek istiyorum. Bunun için de bir buton koydum ve butonun onClick eventına

Kod: Tümünü seç

AdoQuery1.active := false;
yazdım (while döngüsünde bu queryi kullandığım için ). Ama tabi işlem sırasında o iptal butonuna tıklamama izin vermiyor :(

Böyle bir şey daha önce yapmış olanınız var mı?
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

S.A.
Global bir değişken tanımla

Kod: Tümünü seç

var
iptal:Boolean;
döngüye girmeden önce bu eğişkeni false yap.
Dongünün için

Kod: Tümünü seç

application.procesmessges
ekle. koydugun iptal düğmesine

Kod: Tümünü seç

iptal:=true;
yaz.
döngünün koşul satırına

Kod: Tümünü seç

and (not iptal)
ekle. yada döngünün içinde

Kod: Tümünü seç

if iptal then break
ekle
işlemin hallolacaktır.
Kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

@naile hanım While döngüsünün içine Application.ProcessMessages yazmayı denediniz mi acaba..
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

teşekkürler
cetoonak
Üye
Mesajlar: 50
Kayıt: 12 Haz 2003 09:53
Konum: www.mussimsek.com

Mesaj gönderen cetoonak »

Application.ProcessMessages satırını kullandıktan sonra formun minimize, maximize ve close butonları çalışmıyor.
Alt+F4 de devre dışı.
Bu komut döngüyü çok güzel durduruyor fakat yan etkileri var galiba.
Bu yan etkileri nasıl giderebiliriz ?
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Aslında bu iş için thread kullanılsa nasıl olur?

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
NetZero
Üye
Mesajlar: 136
Kayıt: 14 Ağu 2004 11:12
Konum: Bursa
İletişim:

Mesaj gönderen NetZero »

S.A.

bence de husonet hakli..

multi thread bir mantik gudulmeli..
c#

:alsana: :boks:
cetoonak
Üye
Mesajlar: 50
Kayıt: 12 Haz 2003 09:53
Konum: www.mussimsek.com

Mesaj gönderen cetoonak »

Thread nasıl kullanılıyor.
Küçük bir örnek verebilir misiniz yoksa uzun bir konu mudur ?
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

:ara Thread
birkaç makale ve doluyla örnek var. :evil:

Edit:
33 sonuc içinde güzel anlatımlar var ama Resim biraz okyun dimi

Kod: Tümünü seç

Makale ve İpucu  	Basit bir thread uygulaması (CreateThread apisi)
Makale ve İpucu  	Thread ile ClientSocket/ServerSocket uygulaması
Makale ve İpucu  	Thread ile tablo ve sorgu açma
Programlama  	        Thread lar hakkında bilgi
En son mege tarafından 21 Eki 2004 11:47 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
.-.-.-.-.-.-.-. ^_^
cetoonak
Üye
Mesajlar: 50
Kayıt: 12 Haz 2003 09:53
Konum: www.mussimsek.com

Mesaj gönderen cetoonak »

mege yazdı::ara Thread
birkaç makale ve doluyla örnek var. :evil:
Valla böyle diyeceğiniz biliyordum.
O yüzden önceden arama yapmıştım zaten 33 tane sonuç çıkıyor.
Ben mi göremedim orada bilmiyorum ama threadın ne olduğunu ve nasıl kullanıldığını hala çözemedim.
33 tane mesaja da tek tek bakamadım doğrusu.
Konu başlıklarından da pek anlaşılmıyor.
Kafanızı ağrıttıysam kusura bakmayın.
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

hehe bundan sonra arama yapın ve sonuçları okuyun demek gerekli galiba. Arama yaptığnızda sonuçları incelemezseniz bir faydası olmaz size.

thread'leri işlem parçaları (process) olarak düşünebilirsin. Normalde program tek bir thread olarak çalışır. Ama uzun süren işlemlerin varsa bu programın diğer kısımlarını kullanmanı engelleyebilir. Mesela uzun çalışan bir Query componenti varsa, onun işi bitene kadar programda hiçbir şeyi kullanamazsın.

Bu hoş bir durum olmadığından Windows'un multithreading (birden fazla işlemi aynı anda çalıştırma olayı) özelliğinden faydalanarak, program içinden başka thread'ler oluşturabilirsin. Dolayısıyla Query 2. thread'te paşa paşa çalışırken, sen ilk thread'te programın diğer kısımlarını çalıştırabilirsin.

Kolay gelsin.
Cevapla