Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Genel İşlemler
  Aktif Konular Aktif Konular RSS - Image Timer
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir.

Image Timer

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
sqlae Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 02 Ağustos 2023
Konum: Konya,Turkey
Durum: Aktif Değil
Puanlar: 16
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı sqlae Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Image Timer
    Gönderim Zamanı: 07 Ağustos 2023 Saat 17:27
Merhabalar, bir image'in içerisine koyduğum resmin timer ile sürekli olarak değişmesini istiyorum 2 adet resmim mevcut bu resime tıklandığında resim sürekli olarak 2 resim arasında değişsin bunu nasıl yapabilirim.
Yukarı Dön
Alforce Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 26 Temmuz 2023
Durum: Aktif Değil
Puanlar: 150
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Alforce Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 07 Ağustos 2023 Saat 17:39
Öncesinde değişkenleri oluştur:
Var
  ImageOrder: Boolean;
  Images: Variant;
...
Begin
  ImageOrder:= False;
  Images:= ['Image1.png','Image2.png'];
  ...

Sonra Timerın OnTimer olayına bunu yaz:
  if ImageOrder then
    MyForm.SetImage(Image1, Images[0])
  else
    MyForm.SetImage(Image1, Images[1]);
  
  ImageOrder:= not ImageOrder;

Bu 2 adet resim için iyi çalışmalıdır.
Ama 2 den fazla resim için farklı bir yaklaşım izlenir.
Yukarı Dön
sqlae Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 02 Ağustos 2023
Konum: Konya,Turkey
Durum: Aktif Değil
Puanlar: 16
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı sqlae Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 07 Ağustos 2023 Saat 17:43
2 den fazla olan resim yaklaşımını da öğrenebilir miyim ? 
Yukarı Dön
Alforce Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 26 Temmuz 2023
Durum: Aktif Değil
Puanlar: 150
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Alforce Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 07 Ağustos 2023 Saat 17:54
Önemli nokta, bunlar global değişken.
Var
  ImageOrder: Integer;
  Images: Variant;
...
Begin
  ImageOrder:= 0;
  Images:= ['Image1.png','Image2.png','Image3.png','Image4.png'];
  ...

Const
Max = 4;
Begin 
MyForm.SetImage(Image1, Images[ImageOrder]);
  
  ImageOrder:= ImageOrder +1;
if ImageOrder >= Max then
ImageOrder:= 0;
End;
Yukarı Dön
sqlae Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 02 Ağustos 2023
Konum: Konya,Turkey
Durum: Aktif Değil
Puanlar: 16
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı sqlae Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 08 Ağustos 2023 Saat 09:17
Merhaba kodu çalıştırdıktan sonrasında şu hatayı almaya başlıyorum sanırım resim sayısı fazla oldu :)


Kod satırı

var
MyForm:TclForm;
testButton : TclButton;
GetTimer: TClTimer;

ImageOrder: Integer;
Images: Variant;

procedure testButtonOnClick;
begin
   
end;

procedure resimDeg;
const
  Max = 29;
Begin    
  MyForm.SetImage(testButton,Images[ImageOrder]);
  ImageOrder:= ImageOrder +1;
  
  if ImageOrder >= Max then
    ImageOrder:= 0;
end;

begin
MyForm := TclForm.Create(Self)
MyForm.SetFormColor('#FFFFFF','#FFFFFF',clGVertical);

ImageOrder:= 0;
Images:= ['https://i.hizliresim.com/c2l0pxn.jpg','https://i.hizliresim.com/j3wzg90.jpg','https://i.hizliresim.com/af3ezy6.jpg','https://i.hizliresim.com/1c9jno9.jpg','https://i.hizliresim.com/luf2jfi.jpg','https://i.hizliresim.com/sbzwmu7.jpg','https://i.hizliresim.com/9s8m32j.jpg','https://i.hizliresim.com/bz1vor1.jpg','https://i.hizliresim.com/ijlpt8o.jpg','https://i.hizliresim.com/2nc2s9i.jpg','https://i.hizliresim.com/j60o3sw.jpg','https://i.hizliresim.com/2wobckb.jpg','https://i.hizliresim.com/ejzi1s9.jpg','https://i.hizliresim.com/8u1qann.jpg','https://i.hizliresim.com/toxksuf.jpg','https://i.hizliresim.com/a0vda4t.jpg','https://i.hizliresim.com/kus0uv2.jpg','https://i.hizliresim.com/ahyleea.jpg','https://i.hizliresim.com/pz1x4ek.jpg','https://i.hizliresim.com/mwqpqcz.jpg'];

  GetTimer:= MyForm.AddNewTimer(MyForm,'GetTimer',500);
  GetTimer.Interval := 100;
  GetTimer.Enabled := True;
  MyForm.AddNewEvent(GetTimer,tbeOnTimer,'resimDeg');

if GetTimer.Interval > 100 then
begin
  GetTimer.Enabled := False;
  Clomosy.RunUnit('Unit2');
end;
testButton := MyForm.AddNewProButton(MyForm,'testButton','');
clComponent.SetupComponent(testButton,'{"Align" : "alNone","MarginBottom":350,"MarginRight":250,"Width" :400,"Height":400}');

MyForm.Run;
end;
Yukarı Dön
Alforce Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 26 Temmuz 2023
Durum: Aktif Değil
Puanlar: 150
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Alforce Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 08 Ağustos 2023 Saat 10:22
Dilediğiniz kadar resim koyabilirsiniz, teknik olarak sınır 2^31. Bu integer'ın pozitif sınırı.

Sanırım burdaki sorun "Max = 29;", bu 19 olmalıdır.

Kısaca olmayan bir indexe erişmeye çalışıyor.

Eğer resimleri bu şekilde depolarsanız daha rahat çalışabilirsiniz:
Images:= [
  'https://i.hizliresim.com/c2l0pxn.jpg',
  'https://i.hizliresim.com/j3wzg90.jpg',
  'https://i.hizliresim.com/af3ezy6.jpg',
  'https://i.hizliresim.com/1c9jno9.jpg',
  'https://i.hizliresim.com/luf2jfi.jpg',
  'https://i.hizliresim.com/sbzwmu7.jpg',
  'https://i.hizliresim.com/9s8m32j.jpg',
  'https://i.hizliresim.com/bz1vor1.jpg',
  'https://i.hizliresim.com/ijlpt8o.jpg',
  'https://i.hizliresim.com/2nc2s9i.jpg',
  'https://i.hizliresim.com/j60o3sw.jpg',
  'https://i.hizliresim.com/2wobckb.jpg',
  'https://i.hizliresim.com/ejzi1s9.jpg',
  'https://i.hizliresim.com/8u1qann.jpg',
  'https://i.hizliresim.com/toxksuf.jpg',
  'https://i.hizliresim.com/a0vda4t.jpg',
  'https://i.hizliresim.com/kus0uv2.jpg',
  'https://i.hizliresim.com/ahyleea.jpg',
  'https://i.hizliresim.com/pz1x4ek.jpg',
  'https://i.hizliresim.com/mwqpqcz.jpg'
  ];
Yukarı Dön
sqlae Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 02 Ağustos 2023
Konum: Konya,Turkey
Durum: Aktif Değil
Puanlar: 16
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı sqlae Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 08 Ağustos 2023 Saat 11:03
Peki bu kod çalıştıktan sonra formu timer'a nasıl bağlayabilirim yani bu resim 3 defa çalıştı ardından diğer forma geçeceğim

if aTimer.Interval = 100 then
begin
aTimer.Enabled:= False;
Clomosy.RunUnit:=('Unit2');
end;

şeklinde deneme yaptım fakat bunu yaptığımda döngü sonsuza kadar çalışıyor bunu tbeontimer satırına attığımda ise form hiç çalışmıyor iki formda açılıyor öylece bekliyor.

Kodu manuel yazdım hatalarım olabilir.
Yukarı Dön
Alforce Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 26 Temmuz 2023
Durum: Aktif Değil
Puanlar: 150
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Alforce Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 08 Ağustos 2023 Saat 11:07
Tabii,
if ImageOrder >= Max then
Begin
  ImageOrder:= 0;
  
  ShowMessage('Resim dizisi bitti');
End;
Bunu önceki yerine modifiye edin.
Yukarı Dön
Alforce Açılır Kutu İzle
Yeni Üye
Yeni Üye


Kayıt Tarihi: 26 Temmuz 2023
Durum: Aktif Değil
Puanlar: 150
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Alforce Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 08 Ağustos 2023 Saat 11:13
Yada resim dizisini 3 kez oynatmak istiyorsan:

Global değişkenlere ekleyin:
Var
  RepeatNumber: Integer;
  ...
Begin
  RepeatNumber:= 0;
  ...

Sonrasında ise:
Const
MaxRepeat = 3;
...
Begin
if ImageOrder >= Max then
Begin
  ImageOrder:= 0;
   
  RepeatNumber:= RepeatNumber +1;
End;
if RepeatNumber >= MaxRepeat then
Begin
ShowMessage('Resim dizisi 3 kez oynatıldı');
// Sonrasında ise belki timerı kapatırsın.
End;
...
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 12.07
Copyright ©2001-2024 Web Wiz Ltd.

Bu Sayfa 0,039 Saniyede Yüklendi.