Mesaj göstermek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj göstermek

Mesaj gönderen ozcank »

Arkadaşlar ben kayıt butonuna basılınca bir pencerede Kayıt yapılıyor bekleyin mesajı nasıl verdirebilirim yardım edermisiniz?

Kod: Tümünü seç

procedure TForm34.Button20Click(Sender: TObject);
begin
Table1.Post;
end;
Ancestor
Üye
Mesajlar: 188
Kayıt: 27 Ara 2004 06:12
Konum: Manisa - Kırkağaç

Mesaj gönderen Ancestor »

En basitinden aklıma ilk gelen, yeni bir tane daha form açarsınız, oraya "Lütfen bekleyin kayıt yapılıyor" türünden mesajınızı yazarsınız. Daha sonra birkaç saniye beklettikten sonra formu kapattırırsınız. Bu yeni forma, progressbar gibi birşey de koyarak görsellik kazandırabilirsiniz.

Kolay gelsin.
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

tablonun beforepost eventına mesaj penceresini gösterecek kodu yazın yani form2.showmodal gibi form2 yide istediğiniz mesajı yazıp büyüklüğünü ayarlayın v.s. sonra afterpost eventinde form2 yi close yapın ancak bu kayıt işi çok kısa sürdüğünden mesajın pek bir anlamı kalmıyor.Bende öyle bir problemi timer ile ayarlamıştım kayıt süresinin en fazla 3 sn.olacağını düşünüp 5 sn.lik bir timer ile mesaj formunu show ve close yapmıştım.2 sn.kandırmaca yani.
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

serkan yazdı:Bende öyle bir problemi timer ile ayarlamıştım kayıt süresinin en fazla 3 sn.olacağını düşünüp 5 sn.lik bir timer ile mesaj formunu show ve close yapmıştım.2 sn.kandırmaca yani.
Hocam boş yere niye kullanıcıyı oyalıyorsunuz ki. bir status bar koyup onda kayıttan sonra kaydedildi şeklinde bir mesaj vermek en doğrusu.
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Merhaba;

Kod: Tümünü seç

procedure TForm34.Button20Click(Sender: TObject);
begin
label1.caption:='Kayıt işlemi Başladı..';
//istenilen işlem başlangıcı
Table1.Post;
label1.caption:='Kayıt işlemi Başarıyla Yapıldı.';
//istenilen işlem bitişi
end;
Şeklinde bişey en mantıklı olanı galiba.


Saygılarımla
Kolay gelsin
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

bu tür çalışmalara ben de girdim. mesela büyük bir veri aktarımı sırasında bi progressbar koyayım dedim. (excel tablosundan database e aktarım yaparken). ama olmadı. o tabloya yogun veri girişi sırasında makine kitleniyor gibi oluyordu. ne progressbar gözüküyodu ne de bişey. :)
sonradan başka bir program yazdım. ufak bi program. o program sadece excel tablosunun kayıt sayısına göre progressbarı ilerletiyordu. farklı bi exe olduğu için progressbar gayet güzel gözüküyodu.
bu olayı düzenli yapabilen varsa bizimle de paylaşırsa sevinirim.
saygılarımla
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

hocam döndülerle veri kaydı yaparken formda yenileme işlemi olmuyor döngü sırasında tableX.next den sonra
Application.ProcessMessages ;
koyarsan bu sorun düzeliyor ama bu pek tavsiye edilen bir yöntem değilmiş biyerde okumuştum.Kolay gelsin
Kullanıcı avatarı
nitro
Üye
Mesajlar: 1112
Kayıt: 23 Ağu 2004 01:18
Konum: Çanakkale
İletişim:

Mesaj gönderen nitro »

Tavsiye edilmemesinin nedenini yazarsanız çok memnun olurum, ya da yazıyı okuduğunuz adresi söyleyin.
saygılarımla
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Kod: Tümünü seç

...
  Label1.Caption:='Kayıt işlemi Başladı..';
  Application.ProcessMessages; 
...
yerine

Kod: Tümünü seç

...
  Label1.Caption:='Kayıt işlemi Başladı..';
  Label1.Update;
...
de kullanabilirsin.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Mesaj gönderen ozcank »

Bu şekilde yapmak stedim ama olmadı Label ı boşaltmak istedim. "Kayıt Yapıldı" dedikten sonra kaybolması gerekiyor.

Kod: Tümünü seç

procedure TForm34.Button20Click(Sender: TObject);
begin
Label13.Caption:='Kayıt işlemi Başladı..';
  Label13.Update;
Table1.Post;
DBGrid1.Enabled:=True;
Label13.Caption:='   ';
  Label13.Update;
end;
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

merhaba,

belirli bir süre gürünüp sonra kaybolmasını istiyorsan, timer kullanabilirsin
label in sadece kayıt işlemini bildirecekse visible:=false/true yordamı ile görünüp kaybolmasını sağlayabilirsin

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
Murat DİCLE
Kıdemli Üye
Mesajlar: 702
Kayıt: 19 Nis 2006 04:12
Konum: İstanbul
İletişim:

Mesaj gönderen Murat DİCLE »

Serkan arkadaşımızın da dediği gibi

Table1.BeforePost'ta mesaj formunu create edip gösteririrz.

Table1.AfterPost'ta ise bu formu free ederiz.

Ama BeforePost'a bi REfresh yapmak ve hatta Application.Progressmessage yapmak iyidir.


Bu arada arakaşımızınbiri Progressmessages, neden iyi bir yöntem değil demiş diye sormuş Haklı olarak. Aslında çokta iyi bir yöntemdir.

Şöyle düşünün 1.000 tane ve her birinde 10-15 field olan bir kayılar zincirini Tabloya kaydediyorsunuz. Bu işlem sırasında form kilitlenmiş gibi görünür. Hatta, kayıt işlemi yaparken, kalan kayıt miktarını yada progressbar gibi bişi koyduğunuzu düşünelim. Bunların hiç biri hareket etmeden öylece durur. Arada bir kafasına göre hareket ediyormuş gibi. olur.

Ama her kayıt işleminden sonra yada önce Application.ProgressMessages ya da Applicaiton.HandleProgress gibi bi komut sizi kurtarır.

Fakar şunuda kullanmak iyi olaiblir. ProgressBar için mesela, her kayıttan sonra PB.Position := PB.Position + 1 yapıyoruz ve ardından PB.Refresh; deriz. Buda iyidir.

Ama ilem esnasında kullanıcı programda başka şeylerde yapmak isterse, o zaman ProgressMessages en iyisidir.

SendMessage ile PostMessage arasındaki farkı bilmeden Windows Mesajlaşması yapan kişiler, şunu anlamışlardır ki, Application.ProgressMessages hiç iyi bişi değildir derler.

Son olarak,

Application.ProgressMesage, windows mesaj havuzudaki tüm mesajları işletmesini ister.

Application.HandleMessage ise, eldeki (sırdaki) mesajı işletir.


Saygılar...
Cevapla