Showmodal form temizleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
RC1
Üye
Mesajlar: 9
Kayıt: 30 Eyl 2007 10:31

Showmodal form temizleme

Mesaj gönderen RC1 »

Merhaba arkadaşlar;

Showmodal ile açtığımız fonksiyonları formadi.close şeklinde kapattığımızda
ve tekrar o formu showmodal ile açıldığında daha önce açılan formda edit,list,combo gibi vlc'lere girilen bilgiler gözüküyor bunu form kapatılırken otomatik olarak temizlemenin bir yolu varmı ?
Jire
Üye
Mesajlar: 167
Kayıt: 07 Eki 2007 01:20

Mesaj gönderen Jire »

Bütün herşeyi Destroyla yada visible ile yokedebilirsin. :D Aslında visible sadece görünümü değiştiriyor :?
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
birtane private procedure hazırla. bu procedure içinde editlere,combolara varsayılan değerlerini ver. formun onshow unda bu procedureyi çalıştır.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
RC1
Üye
Mesajlar: 9
Kayıt: 30 Eyl 2007 10:31

Mesaj gönderen RC1 »

tekrar merhabalar;

Tek tek elle bütün alanları temizlemek için bende varsayılan değerleri vermeyi düşündüm şimdilik bu işe yarayabililir (küçük formlarda) ama büyük formlarda (örneğin 100 elemanlı) böyle birşey kullanmak istediğimde varsayılan değerlere döndürmek için biraz amalelik yapmam gerekecek.

Bu nedenle bunun için daha pratik bir yol olacabileceğini düşünüp buraya danıştım.

Saygılar...
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

100 eleman olduğu zaman onları tek tek yazmak tabiki amelelik olacaktır.
bunun için kullanılacak yöntemler de var.
:ara findcomponent
:ara components componentcount
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Re: Showmodal form temizleme

Mesaj gönderen ikutluay »

RC1 yazdı:Merhaba arkadaşlar;

Showmodal ile açtığımız fonksiyonları formadi.close şeklinde kapattığımızda
ve tekrar o formu showmodal ile açıldığında daha önce açılan formda edit,list,combo gibi vlc'lere girilen bilgiler gözüküyor bunu form kapatılırken otomatik olarak temizlemenin bir yolu varmı ?
Senin ilacın formu dinamik oluşturma. öncelikle proje seçeneklerinden gereksiz tüm formları auto create forms listesinden kaldır. bunları show modal ile çağırmak yerine şöyle bir şey yap

formun adı deneme olsun

Kod: Tümünü seç

frmdeneme:=tfrmdeneme.create(self)
 try
   frmdeneme.showmodal;
 finally
   frmdeneme:=nil; 
 
tabiki bu kod bloku daha iyi yazılabilir. ben buna benzer bir şey kullanıyorum ama kodlarım şu an yanımda değil.

bu olay sana yukardakienden çok daha önemli bir avantaj sağlar. hafızayı ekonomik kullanmak. ha dersenki baba 1. gb ram var exe 50 mb olsa ne yazar. öyle düşünme progrmamını birisi 32 ramde kullanacaksa ne olur ?

bu yöntemi bir dersane programına önermiştim 2001 de . 75 formu filan vardı. açılması 32 ramde 5 dk (abartısız) süren yazılım bu işlemden sonra saniyelere düşmüştü.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

Bu kodu açtığın formun onshow olayına yazabilirsin.Tüm editleri temizler.Kodu kafana göre değiştirebilrisin memo veya başka alanlarıda böyle temizleyebilrsin...

Kod: Tümünü seç

for i:=0 to ComponentCount-1 do begin
if components[i] is Tedit then
begin
(components[i] as Tedit).Clear;
end;
RC1
Üye
Mesajlar: 9
Kayıt: 30 Eyl 2007 10:31

Mesaj gönderen RC1 »

Verdiğiniz cevaplar için teşekkürler arkadaşlar autocreate yerine büyük uygulamarda elle create etmek daha mantıklı geldi daha ufak uygulamalarda ise companent dizisini bulup silme işlenimini sanırım kullanabilirim

tekrar cevaplarınız için teşekkürler
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

RC1 yazdı:Verdiğiniz cevaplar için teşekkürler arkadaşlar autocreate yerine büyük uygulamarda elle create etmek daha mantıklı geldi daha ufak uygulamalarda ise companent dizisini bulup silme işlenimini sanırım kullanabilirim

tekrar cevaplarınız için teşekkürler
uygulama küçükte olsa manual create olayına alışman iyi olur. sonuçta çalışacak başka programlarda olacaktır. alt trafı 2 satır ekleniyor...

son olarak şunu unutma. vt duyarlı kontroller form hafızada oldupu sürece güncellenir.

disablecontrols olayını biliyorsan handilapıda çözersin. diyelimki dbgrid var. baştan sonra bir dongu kurdun. ekrandaki form başka olsada dbgridde güncellenmek zorundadır buda zaman kaybıdır
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Formunu her çağırma sırasında create edip daha sonra free etmeni öneririm:

Kod: Tümünü seç

 try
   Form1 := Form1.Create(Application)
   Form1.showmodal;
 finally
    Form1.Free;
 end;
Tabii bu durumda formunu auto-create forms un içinden çıkarmalısın.
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

naile yazdı:Formunu her çağırma sırasında create edip daha sonra free etmeni öneririm:

Kod: Tümünü seç

 try
   Form1 := Form1.Create(Application)
   Form1.showmodal;
 finally
    Form1.Free;
 end;
Tabii bu durumda formunu auto-create forms un içinden çıkarmalısın.
- auto create
- manuel create

arkadaşlar bu iki terimi yeni duydum. :oops: benim bir projemde 70 adet formum var. exe boyutu 6 mb civarı. 512 ram olan bir bilgisayarda prgramın ilk açılması yaklaşık 40 sn sürüyor. ben bu yavaş açılma olayından rahatsızdım.

auto create ve manuel create olaylarını nerde kullanacağız. nasıl kullnacağız. bu konu hakkında beni ayrdınlatabilirseniz çok memnun olacağım.
selamtele...
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Önce; AutoCreate - ManuelCreate ne yapar, etkisi nedir anlatayım.

Projenin seçeneklerinde AutoCreate formların listesi var. Bu listede olan formlar program çalıştırıldığında create edilir. Kullanacağınız zaman 'Show' ya da 'ShowModal' dersiniz biter.

ManuelCreate ise formu kullanmadan önce Create edip sonrasında free etme olayıdır ki nasıl yapıldığı yukarıda anlatılmış.

Ama gaza gelip "E o zaman herşeyi manuel create edelim program hızlı çalışsın, az RAM yesin" dememek lazım. Bazı formların AutoCreate olması daha iyi oluyor. Örneğin sık sık açılacak formlar. "Bunlar programın açılmasını başlangıçta 1 kez yavaşlatsın, sonraki açılışlar hızlı olsun" demek daha mantıklı olur.

Bir de sık açılmasına rağmen AutoCreate olmaması gereken formlar var. Örneğin mesaj formları. Mesaj formları aynı anda birden fazla çalışabileceği için manuel create etmekte fayda var.

Bir fark daha, Create ve Destroy yordamları AutoCreate'de birer kez çalıştırılırken manuel create ederseniz her kullanışınızda tetiklenecekler.

Tercihi değiştirecek başka durumlar da vardır, aklıma gelenleri yazdım...

Kolay gelsin.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

Ben ana form ve data module hariç hiç birşeyi auto create yapmıyorum. ancak şimdiye değin spresifik bir durum olmadığındandır.

bu olaya biraz alışırsan ilerde form inheritance vs de kullanrak hızlı yazılım geliştirebilir ve daha stabil kod üretebilrsin.

Öte yandan yukardaki arkadaşımızda doyurucu bir bilgi vermiş.
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Re: Showmodal form temizleme

Mesaj gönderen y.kulac »

formları manuel create edince mecburen showmodal olarak çıyoruz.
bu yüzden formu kapatmadan başka bir form açamıyoruz.
formları hem mauel create edelim (daha hızlı açılış için), hemde show olarak açalımki, kullanıcı istediği kadar formda birbirine geçiş yaparak çalışabilsin. bu mümkün müdür?
Kullanıcı avatarı
KoPilot
Üye
Mesajlar: 185
Kayıt: 05 Eki 2007 08:02

Re: Showmodal form temizleme

Mesaj gönderen KoPilot »

y.kulac yazdı:formları manuel create edince mecburen showmodal olarak çıyoruz.
bu yüzden formu kapatmadan başka bir form açamıyoruz.
formları hem mauel create edelim (daha hızlı açılış için), hemde show olarak açalımki, kullanıcı istediği kadar formda birbirine geçiş yaparak çalışabilsin. bu mümkün müdür?
Şöyle dene

Kod: Tümünü seç

try
   Form1 := Form1.Create(Application)
   Form1.showmodal;
finally
    Form1.Free;
end;
yerine

Formu Manuel oluştururken

Kod: Tümünü seç

   Form1 := Form1.Create(Application)
   Form1.show;
manuel oluşturduğun formun onClose olayında da
formunu free edeceksin hepsi bu..
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
Cevapla