Delphi Dünyası Facebook'ta

Kodbank İndir

! CODEBANK 2012 !

İNDİRMEK&DETAYLI BİLGİ ALMAK İÇİN BURAYI TIKLAYINIZ.

Gönderen Konu: Basit bir timeout olayı  (Okunma sayısı 1543 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Kocaturk

  • Administrator
  • *****
  • İleti: 2.474
  • Rep: +56/-5
  • Cinsiyet: Bay
    • Delphi Dünyası
Basit bir timeout olayı
« : 28 Kasım 2006 00:40:22 »
Arkadaşlar birçoğumuz bir çok program yazdık,yazıyoruz,yazacağız ve bir çoğumuzun acemiden ustaya kendince kullandığı bir çok basit ama kullanışlı kodlama mantıkları vardır, anladığım kadarı ile bu site üyelerinin büyük bir çoğunluğu genç ve delphi konusunda yeni arkadaşlarlardan oluşuyor dolayısı ile uzun yıllar önce daha internet bizim için bir hayalken modem ile BBS lere bağlanıp bir şeyler öğrenmeye çalıştığımız günler aklıma gelince kaynağa ulaşmanın ne kadar hayati önem taşıdığının farkına varmıştık şimdi 2Mbit hızla internete ulaşırken bir Türk olarak kendi ülkem gençlerinin de büyük başarlara imza atması beni sevindiriyor ve heveslendiriyor (bkz. Fatih Küçükkelepçe) dolayısı ile lafı fazla uzatmadan kendi kullandığım bazı kodları burada paylaşmak istedim bazı arkadaşlar için çok sıradan ama eminim bir çok kişinin işine yarayacak şeyler olacak. şimdi ilki ile başlayalım;

mantık şu bir programımız var ve bu programda ki bazı formlara yetkisiz kişilerin girmesi sakıncalı bizde bu programı kodluyoruz, önce aklımıza gelecek şey programda mutlaka bir kullanıcı sistemi olmalı bunların kullanıcı adları ve şfreleri olmalı bu bilgileri doğru girince ilgili formlara yönlendirilmeli. buraya kadar tamam ama aklımıza şuda gelmeli kullanıcı PC başından kalktı ve logout olmayı unuttu işte o zaman bir timer devreye girmeli ve belirli bir süre bir işlem yapılmazsa ilgli formu veya programı kapatmalı ha işte o noktada
çok basit bir iki kod ile bu işi halledebiliriz.

ben bu işi basit olarak şöyle hallediyordum, kontrolu yaptığım forma bir TTimer nesnesi ekliyor ve onun OnTimer olay işleyicisi ile işimi hallediyordum örneğin

forma 1 TTimer nesnesi ekleyelim şimdilik o öyle kalsın

daha sonra formumuzun kodunda implementation bölümü altında bir sabit bir de değişken tanımlayalım
Kod: [Seç]
implementation

{$R *.dfm}

const
  MaxTimeOutValue = 300; //300 sn veya 5 dk
var
  TimeOut : Integer; // bu değişken TTimer nesnesinin OnTimer olay işleyicisinde kullanılacak
şimdi formumuzun OnCreate olay işleyicisinde aşağıdaki kodu tanımlayalım
Kod: [Seç]
procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled := True; // timer çalıştırılıyor
  TimeOut := 0; // TimeOut değişkenine ilk değer atanıyor
end;
bu işi yaptıktan sonra birde çok basit bir procedure tanımlayalım

Kod: [Seç]
procedure Tform1.ResetTimeOut;
begin
  TimeOut := 0; // global değişkeni sıfırlıyoruz
end;

bu procedure ü formda kullanıcı bir işlem yaptığında kullanacağız ki timer ı resetleyelim, peki kullanıcı form üzerinde ne iş yapabilir ya klavye den tuşlara basar yada mouse kullanır o zaman formumuzun bu olayları ile ilgili olay işleyici kodlarını da aşağıdaki gibi yazarsak kullanıcı formda herhangi bir işlem yaptığında timer resetlenir.
Kod: [Seç]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
ResetTimeOut; // timer resetleniyor
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
ResetTimeOut; // buradada timer resetleniyor
end;

bu arada formun KeyPreview özelliğini True yapın ki bileşenlerden önce form tuş vuruşlarını algılasın
evet şimdi geldik Timer ın OnTimer olay işleyicisine

Kod: [Seç]
  Inc(TimeOut);
  Label1.Caption := InttoStr(MaxTimeOutValue - TimeOut) + ' saniye sonra form kapatılacak';
  if TimeOut = MaxTimeOutValue then begin
    Timer1.Enabled := False;
    Close; // burada ilgili form kapatılıyor veya login formuna yönlendirilebilir vs.vs.
  end;

aslında bu kadar basit bir yapı eminim yeni olan bir çok arkadaşın işine yarayacaktır.
herkese bol delphili günler.
« Son Düzenleme: 28 Kasım 2006 16:14:04 by kocaturk »

Çevrimdışı garibinteki

  • Delphi 1 Level 4
  • ****
  • İleti: 38
  • Rep: +0/-0
Ynt: Basit bir timeout olayı
« Yanıtla #1 : 02 Aralık 2006 20:16:28 »
Çok teşekkürler..

Çevrimdışı xElnino

  • Delphi 1 Level 2
  • **
  • İleti: 12
  • Rep: +0/-0
  • Cinsiyet: Bay
Ynt: Basit bir timeout olayı
« Yanıtla #2 : 04 Aralık 2006 15:43:31 »
teşekkürler dostum