Splash Screen + Timer
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Splash Screen + Timer
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;
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;
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.)
ibadetle geçen bin geceden hayırlıdır. HZ. MUHAMMED (S.A.)
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.
Verdiğiniz kodu deneyeceğim.Sonucu tekrar yazarım.
İlginize teşekkür ederim.
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;
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;
biraz türl işi olacak ama;
şeklinde çalışır..
Kod: Tümünü seç
if Length(Label1.Caption) > 0 then
Label1.Caption := ''
else
Label1.Caption := 'Label1';
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;
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;
s.a
kolay gelsin.
Kod: Tümünü seç
label1.visible:=not label1.visible;
application.processmessages;
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
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ı:
Ayrıca yanıp sönen bir "yükleniyor..." yazısı bir çok kişiye antipatik gelebilir.
Kolay gelsin.
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);
Kolay gelsin.