Splash Screen + Timer

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
PAnick
Üye
Mesajlar: 10
Kayıt: 08 Tem 2005 12:21
Konum: İstanbul
İletişim:

Splash Screen + Timer

Mesaj gönderen PAnick »

Bütün Splash Screen yapımı ile ilgili yazıları inceledim.Splash screen i yaptım şu an programımda çalışıyor.Fakat ben bu splash screen e birde label ekleyip bu labeli her saniye Visible:=true , Visible:= False yapmak istiyorum.Fakat bir türlü bu işlemi gerçekleştiremedim.

Bunu yapmak için Splash Formumun üzerine bir adet timer ve birde label koydum.Public olarak Sayi : integer Tanımlamasını yaptım.Aşağıdaki kodu splash formuma yazdım.Ama istediğim sonucu alamadım.Label gözüküyor fakat her saniye kaybolup gözükme olayı gerçekleşmiyor.Yardımlarınıza teşekkür ederim.

procedure TForm3.Timer1Timer(Sender: TObject);
begin
Sayi := Sayi + 1;
If Sayi Mod 2 = 0 Then
Begin
Label1.Visible := False;
Label1.Refresh;
Application.ProcessMessages;
End
Else
Begin
Label1.Visible := True;
Label1.Refresh;
Application.ProcessMessages;
End;

end;
Kullanıcı avatarı
TRSoft
Kıdemli Üye
Mesajlar: 636
Kayıt: 13 Şub 2004 11:39
Konum: Konya
İletişim:

Mesaj gönderen TRSoft »

Splash formunuzun ekranda gözükme süresi nedir. Splash form gözükürken başka herhangi bir işlem yapıyormusunuz.Bunlar birde timerın süresini kontrol ediniz. Ayrıca kodları aşağıdaki gibi basitleştirebilirsiniz..

Kod: Tümünü seç

procedure TForm3.Timer1Timer(Sender: TObject);
begin 
       Label1.Visible:=Not Label1.Visible;
       Label1.Refresh;
End;
İlimle geçen bir gece,
ibadetle geçen bin geceden hayırlıdır.
HZ. MUHAMMED (S.A.)
PAnick
Üye
Mesajlar: 10
Kayıt: 08 Tem 2005 12:21
Konum: İstanbul
İletişim:

Mesaj gönderen PAnick »

splash formumun ekranda gözükme süresi sanırım 4-5 sn. civarında.Splash form gözükürken splashform üzerinde herhangi bir işlem yapmıyorum.Fakat arkada 2 tane form create oluyor ve internetteki database e bağlanıp 3 tane query çalıştırıp bunların sonuçlarını aldıktan sonra programım çalışıyor.

Verdiğiniz kodu deneyeceğim.Sonucu tekrar yazarım.

İlginize teşekkür ederim.
PAnick
Üye
Mesajlar: 10
Kayıt: 08 Tem 2005 12:21
Konum: İstanbul
İletişim:

Mesaj gönderen PAnick »

Dediğiniz kodu splash screen e uyguladım ama yine Label da bir değişiklik yok.

Programın project kodu şu şekilde;

var
SplashForm : TForm;
begin

SplashForm := Tform3.Create(Application);
SplashForm.Show;
SplashForm.Update;

Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);

SplashForm.Hide;
SplashForm.Free;

Application.Run;
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

biraz türl işi olacak ama;

Kod: Tümünü seç

if Length(Label1.Caption) > 0 then
  Label1.Caption := ''
else
  Label1.Caption := 'Label1';
şeklinde çalışır..
DeveloperToolKit

..::|YeşilMavi|::..
PAnick
Üye
Mesajlar: 10
Kayıt: 08 Tem 2005 12:21
Konum: İstanbul
İletişim:

Mesaj gönderen PAnick »

maalesef arkadaşım senin dediğin gibide olmadı. Sanırım bu Timer procedure sine hiç girmiyor.Burada MessageDlg çıkartmak istiyorum ama bu kodu bile yorumlamıyor.

procedure TForm3.Timer1Timer(Sender: TObject);
begin
//Label1.Visible:=Not Label1.Visible;
//Label1.Refresh;
if Length(Label1.Caption) > 0 then
Label1.Caption := ''
else
Label1.Caption := 'Label1';
end;
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

girmiyorsa başka.
Formun Create inde Timer1.Enabled := True; yaptınız mı?
DeveloperToolKit

..::|YeşilMavi|::..
PAnick
Üye
Mesajlar: 10
Kayıt: 08 Tem 2005 12:21
Konum: İstanbul
İletişim:

Mesaj gönderen PAnick »

Evet Timer1.Enabled := True; yapıyorum.Ayrıca Splash Screen ekranda 6-7 saniye kalıyor.Ben timer1 in intervalini 1000 yaptım. 500 ve 100 olarakta denedim ama hala tık yok.Heralde olmayacak gibi.Başka fikirler var mı yoksa bu sevdadan vaz mı geçeyim!
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a

Kod: Tümünü seç

label1.visible:=not label1.visible;
application.processmessages;
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
PAnick
Üye
Mesajlar: 10
Kayıt: 08 Tem 2005 12:21
Konum: İstanbul
İletişim:

Mesaj gönderen PAnick »

Yaa kafayı yiycem neredeyse dünden beri bununla uğraşıyorum ve hala tık yok.

Arkadaşlar hepinize teşekkür ederim yardımlarınızdan dolayı ama sorun devam etmekte.Aslında çok büyükte bir sorun değil ama olsa iyi olurdu.
ertug
Üye
Mesajlar: 82
Kayıt: 10 Ara 2004 05:41

Mesaj gönderen ertug »

Delphi "Application.Run" komutundan önce mesajları işlemez. Yani bu satırdan önce "OnTimer" olayı çalışmayacaktır. Splashda animasyon yapmanın yolu var elbette ancak bunun için ayrı bir "thread" açıp "thread-safe" bir yüzeye çizim yapmak gerekiyor. Bence bunun yerine aşağıdaki gibi birşeyler yapmak daha mantıklı:

Kod: Tümünü seç

Application.Initialize; 
SplashForm.Label1.Caption := '<Form1> yükleniyor.';
SplashForm.Update;
Application.CreateForm(TForm1, Form1); 
SplashForm.Label1.Caption := '<Form2> yükleniyor.';
SplashForm.Update;
Application.CreateForm(TForm2, Form2);
Ayrıca yanıp sönen bir "yükleniyor..." yazısı bir çok kişiye antipatik gelebilir.

Kolay gelsin.
PAnick
Üye
Mesajlar: 10
Kayıt: 08 Tem 2005 12:21
Konum: İstanbul
İletişim:

Mesaj gönderen PAnick »

Çok teşekkür ederim bu daha güzel oldu.
Cevapla