Arkadaslar program yeni acilirken daha yuklenme suresinde kullaniciya splash bitmap gosterme olayindan haberi olan varmi?
Nasil programin ana processinin onune gecip bir tane resim cizdirilebilinir.
Bu resim herhangi formatta olabilir onemli degil onemli olan sadece programin RAM e yuklenme suresince gorunsun tipki WORD, Adobe Reader deki gibi mesela. Cunku ben bir program yaptim veri tabaniyla calisan, veri tabaninin boyutu asiri buyuk olunca BDE taaa o verilerin,tablolarin hepsini RAM+Sanal bellek e yukleyince aradan 5-10 dakika geciyor cok sikici oluyor. Yardimci olabilecek varmi???
Splash Bitmap oluşturmak
Splash ben karşılama ekranı diyorum
Nasıl yapılacağı kullanıcıya bırakılmıştır ancak bu pencerenin ana pencere ile birlikte aktif olmaması hemen ekrana gelmemesi biz istediğimizde Görünmeli işi bitincede yok olması gerekir.
Bunun için projenin ana dosyasında ikinci form (karşılama ekranı için olan form) Create (yaratma) yapılmaması gerekir şimdi ikitane formumuz olduğunu varsayalım ana dosyamızın kodlama şekili şöyledir görüldüğü gibi Form2 nesnemizde yaratılıyor
Ama biz Karşılama ekranımızı kendimiz yaratıp yok etmeliyiz bunun için
Karşılama ekranımız için "Project->Option.." menüsünden projemizin ayarını yapıyoruz "Forms" bölümünde "Auto-create forms:" başlığı altında her iki formumuzuda göreceğiz buradan Form2 formumuzu " > " ile "Available" kısmına aldığımızda bulder bizim için ana dosyamızda aşağıdaki kodu yazmayacaktır
Şimdi biz formumuzu kendimi yaratıp yok edeceğiz ancak ana dosyamız Form2 nesnemizin header dosyasını tanımaz daha doğrusu TForm2 sınıfımızı ve Form2 Pointerimizi tanımaz onu yukarıda dosya faaliyet alanında form2.h dosyamızı include etmeliyiz #include "form2.h"
şimdi Form2 nesnemizi yaratıp işi bitincede yok edelim.
Bunu dinamik olarak yaratacağız nesnemizi yarattık ama bir Sow etmedikçe görünmeyecektir
Form2 de ister bir resim ister başka nesneleri diğer formlarda çalıştığınız gibi tasarlıyabilirsiniz bu tamamen size kalmış.
Peki Form2 ne zaman kapanacak?
Çok kolay Form1 Formunuz ne zaman ekrana gelecekse hemen öncesinde veya belli süre beklendikten sonra aşağıdaki örnekte 3 sn.
Şimdi kodun tamamını yazalım
Başarılar........
Nasıl yapılacağı kullanıcıya bırakılmıştır ancak bu pencerenin ana pencere ile birlikte aktif olmaması hemen ekrana gelmemesi biz istediğimizde Görünmeli işi bitincede yok olması gerekir.
Bunun için projenin ana dosyasında ikinci form (karşılama ekranı için olan form) Create (yaratma) yapılmaması gerekir şimdi ikitane formumuz olduğunu varsayalım ana dosyamızın kodlama şekili şöyledir
Kod: Tümünü seç
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();
Application->CreateForm(__classid(TForm1), &Form1);
Application->CreateForm(__classid(TForm2), &Form2);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
Kod: Tümünü seç
Application->CreateForm(__classid(TForm2), &Form2);
Karşılama ekranımız için "Project->Option.." menüsünden projemizin ayarını yapıyoruz "Forms" bölümünde "Auto-create forms:" başlığı altında her iki formumuzuda göreceğiz buradan Form2 formumuzu " > " ile "Available" kısmına aldığımızda bulder bizim için ana dosyamızda aşağıdaki kodu yazmayacaktır
Kod: Tümünü seç
Application->CreateForm(__classid(TForm2), &Form2);
şimdi Form2 nesnemizi yaratıp işi bitincede yok edelim.
Bunu dinamik olarak yaratacağız
Kod: Tümünü seç
Form2 = new TForm2(Application);
Kod: Tümünü seç
Form2->Show();
Peki Form2 ne zaman kapanacak?
Çok kolay Form1 Formunuz ne zaman ekrana gelecekse hemen öncesinde veya belli süre beklendikten sonra aşağıdaki örnekte 3 sn.
Kod: Tümünü seç
Form2 = new TForm2(Application);
Application->CreateForm(__classid(TForm1), &Form1);
Sleep(3000);
Form2->Hide();
Application->Run();
if(Form2 != NULL)
delete Form2;
Kod: Tümünü seç
#include "form2.h"
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Form2 = new TForm2(Application); //Nesnemiz yaratılıyor
Application->CreateForm(__classid(TForm1), &Form1);
Sleep(3000); // 3 sn. bekleme yapılıyor
Form2->Hide(); // Önce gizleniyor
Application->Run(); // Ana formumuz çalıştırılıyor
if(Form2 != NULL) //Herhangi bir aksilik yoksa
delete Form2; //Nesnemizi burada yok ediyoruz
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
Başarılar........