Merhaba...
- Öncelikler veritabanını devreye sokmadan zamanlama routinlerinin doğru çalışıp çalışmadığını test etmelisin...
- Sen test ederken alternatif olarak anlattıkların ışığında ve anladığım kadarıyla kendime göre bir kurgu yaptım... Denemesi bedava...
// Formda
// 1 adet ListBox
// 1 adet Button
// 1 adet ikinci bir form (Form2)
// 1 adet Timer
// nesneleri var...
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
Var
Sayac,
Sayi :Integer;
begin
Randomize; // Bunu demezsen programı kapatıp her açtığında
// aynı sırada rastgele sayı alırsın...
ListBox1.Items.Clear;
While ListBox1.Items.Count < 50 do
begin // Her sayıdan sadece 1 kere çıkması için (bu arada 0 dahildir...)
Sayi := Random(50);
If ListBox1.Items.IndexOf(Format('%.2d', [Sayi])) < 0
then ListBox1.Items.Add(Format('%.2d', [Sayi]));
end;
Timer1.Enabled := True;
end;
*
Bekleme ve
Gosteri sabitleri senin gösteri sürelerinin saniye cinsinden değerleridir. Kendine göre değiştir.
Kod: Tümünü seç
procedure TForm1.Timer1Timer(Sender: TObject);
Const
Bekleme = 30;
Gosteri = 5;
{$J+}
Goster : Boolean = False;
GosteriZamani : Integer = 0;
Zaman : Integer = 0;
SiradakiResimNo : Integer = -1;
{$J-}
begin
Inc(Zaman);
// Dilersen TTimer interval değerini 5000 yaparak
// 5 saniyede 1 devreye girmesini sağlarsın ama
// aynı TTimer nesnesi gösterimi de yapacağından
// Gösterim süresi olarak 5'in katları sürelere razı
// olmak zorunda kalırsın...
// Onun için Interval 1000 (yani 1 saniye) olarak kalsın
// ve 5 saniyeyi 5'in katları şeklinde MOD ile bul...
If (Zaman MOD Bekleme = 0) AND (NOT Goster)
then Goster := True;
If (GosteriZamani = Gosteri) AND (Goster)
then begin
Goster := False;
GosteriZamani := 0;
end
else If Goster then Inc(GosteriZamani);
Form1.Caption := Format('%d, %d', [Zaman, GosteriZamani]);
Case Goster of
True : begin
If NOT Form2.Showing then
begin // Resim penceresi kapatılırsa sıradaki resim içeren yeni pencere açılır... :)
Inc(SiradakiResimNo);
If SiradakiResimNo > ListBox1.Items.Count-1
then SiradakiResimNo := 0;
Form2.Show;
end;
Form2.Caption := Format('Süre:%.2d, ResimSıra:%.2d, ResimKayNo:%s', [GosteriZamani, SiradakiResimNo, ListBox1.Items[SiradakiResimNo]]);
end;
False : If Form2.Showing then
begin
Form2.Close;
Zaman := 0;
end;
end; // Case
end;
- Bu göreceğin gibi her iki formun da başlığında gereken sürelerde gereken resim numaralarının belirdiğini göreceksin. Veritabanı kodunu bu
satırından hemen önceye koyacaksın...
- Kolay gelsin...