Showmodal form temizleme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Showmodal form temizleme
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ı ?
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ı ?
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...
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...
Re: Showmodal form temizleme
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 yapRC1 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ı ?
formun adı deneme olsun
Kod: Tümünü seç
frmdeneme:=tfrmdeneme.create(self)
try
frmdeneme.showmodal;
finally
frmdeneme:=nil;
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
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
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;
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...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
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
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Formunu her çağırma sırasında create edip daha sonra free etmeni öneririm:
Tabii bu durumda formunu auto-create forms un içinden çıkarmalısın.
Kod: Tümünü seç
try
Form1 := Form1.Create(Application)
Form1.showmodal;
finally
Form1.Free;
end;
- auto createnaile yazdı:Formunu her çağırma sırasında create edip daha sonra free etmeni öneririm:
Tabii bu durumda formunu auto-create forms un içinden çıkarmalısın.Kod: Tümünü seç
try Form1 := Form1.Create(Application) Form1.showmodal; finally Form1.Free; end;
- manuel create
arkadaşlar bu iki terimi yeni duydum. 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...
Ö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.
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.
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ş.
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
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Re: Showmodal form temizleme
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?
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?
Re: Showmodal form temizleme
Şöyle deney.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?
Kod: Tümünü seç
try
Form1 := Form1.Create(Application)
Form1.showmodal;
finally
Form1.Free;
end;
Formu Manuel oluştururken
Kod: Tümünü seç
Form1 := Form1.Create(Application)
Form1.show;
formunu free edeceksin hepsi bu..