Yorumları: 31
Konuları: 10
Kayıt Tarihi: 10-04-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 32 Başlangıç
20-05-2020, Saat: 00:29
(Son Düzenleme: 20-05-2020, Saat: 00:30, Düzenleyen: onurakman.)
Herkese merhaba,
procedure TFrmAna.DosyaYaz(veri: string);
var
i : integer;
begin
Memo1.Lines.Clear;
Memo1.Lines.LoadFromFile(ini_yol);
for i :=0 to memo1.Lines.Count-1 do begin
if Copy(memo1.Lines.Strings[i],1,12)='SAYAC=' then begin
memo1.Lines.Strings[i]:='SAYAC='+veri;
end;
end;
memo1.Lines.SaveToFile(ini_yol);
end;
Delphi 7 de yukarıdaki kodu günde iki kere çalıştırıcam yani saat 22:00 olduğunda bir kez ve sabah 09:00' dan sonra bir kez olarak.
22:00 ile 08:59 arasında sayaç değeri 1,
09:00 ile 21:59 arasında sayaç değeri 2 olacak
bu zamanlama döngüsünü nasıl yapabilirim?
Yorumları: 80
Konuları: 4
Kayıt Tarihi: 02-10-2018
Aktif Kullandığınız Delphi Sürümü:
- Delphi 11
- Delphi 10.4
- Delphi 10.3
- Delphi 10.2
- Delphi 10.1
- Delphi 7
Rep Puanı: 326 Acemi
Program sürekli açık kalacaksa program içerisinde timer kullanarak. Ama tavsiyem Tray de çalışan ufak bir program yazarak yine Timer içerisinden istediğinizi yaptırabilirsiniz. İyi çalışmalar.
Yorumları: 31
Konuları: 10
Kayıt Tarihi: 10-04-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 32 Başlangıç
(20-05-2020, Saat: 01:29)Ahmet İPEKÇİ Adlı Kullanıcıdan Alıntı: Program sürekli açık kalacaksa program içerisinde timer kullanarak. Ama tavsiyem Tray de çalışan ufak bir program yazarak yine Timer içerisinden istediğinizi yaptırabilirsiniz. İyi çalışmalar.
Cevabınız için teşekkürler hocam, saat aralığında çalışması için nasıl bir kod yazmam gerekiyor.
if(suanki_zaman>'09:00' AND suanki_zaman<'22:00'){
// Gündüz kodu calistir
} else {
// Gece kodu calistir
}
bu kodu delphi 7 de nasil yazabilirim?
Yorumları: 953
Konuları: 124
Kayıt Tarihi: 06-07-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 6.375 Üstad
Yapmak istediğiniz şey izin verdiğiniz saatler aralığında programda işlem yapılabilmesi ve geriye kalan zamanda kullanılamaması durumu ise mevcut zamanı doğrulatabilmeniz için referans bir cihaz gerekiyor. Yani sunucu saatine bakarak hareket etmeniz gerekiyor. Diğer türlü kullanıcı bu durumu keşfedip 23:00'te saati sabah 09:00 yaparak kullanmaya devam edebilir.
İhtiyacınızı daha belirgin bir şekilde ifade ederseniz daha uygun çözüm önerilerinde bulunabiliriz.
Yorumları: 31
Konuları: 10
Kayıt Tarihi: 10-04-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 32 Başlangıç
20-05-2020, Saat: 05:18
(Son Düzenleme: 20-05-2020, Saat: 05:19, Düzenleyen: onurakman.)
(20-05-2020, Saat: 03:19)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Yapmak istediğiniz şey izin verdiğiniz saatler aralığında programda işlem yapılabilmesi ve geriye kalan zamanda kullanılamaması durumu ise mevcut zamanı doğrulatabilmeniz için referans bir cihaz gerekiyor. Yani sunucu saatine bakarak hareket etmeniz gerekiyor. Diğer türlü kullanıcı bu durumu keşfedip 23:00'te saati sabah 09:00 yaparak kullanmaya devam edebilir.
İhtiyacınızı daha belirgin bir şekilde ifade ederseniz daha uygun çözüm önerilerinde bulunabiliriz.
Merhaba hocam ilginiz icin teşekkür ederim, başlangıç ve bitiş saatlerini ini dosyasından alacağım için manuple etmesi sıkıntı değil hocam sistem saatini referans alabilirim.
KURAL : 09:00 ile 21:59 arası GÜNDÜZ MODU, 22:00 ile 08:59 arası GECE modum.
Kısaca şöyle bahsedeyim bilgisayar açık olduğu sürece çalışan bir programım var. program çalışır durumdayken,
saat 09:00 olduğunda 'GÜNDÜZ MODUNDA ÇALIŞIYORSUN' , Saat 22:00 olduğunda 'GECE MODUNDA ÇALIŞIYORSUN' diye ekranda mesaj çıkartmak istiyorum. Eğer kullanıcı 09:50 de bilgisayarı açtıysa KURAL bölümünde belirlediğim saat aralığına göre mesajı göstermesi gerekiyor.
NOT : Göstereceğim mesaj kullanıcının işlem yapmasını engellemeli, yani başka bir programda çalışıyor olsada benim çıkarttığım mesajda OK butonuna basmadan bilgisayarda başka bir işlem yapamamalı.
Yapmak istediğim şeyin detayı bu şekilde umarım anlatabilmişimdir.
Yorumları: 567
Konuları: 15
Kayıt Tarihi: 24-03-2017
Rep Puanı: 3.380 Uzman
20-05-2020, Saat: 09:22
(Son Düzenleme: 20-05-2020, Saat: 09:41, Düzenleyen: frmman.
Sebep: imla
)
Gece gündüz modunun senaryonuza göre tespit edilmesi için aşağıdaki gibi bir yapı kullanabilirsiniz.
Yukarıda uyardıkları gibi sistem saati değiştirilirse işlerde değişir
var
tsabah,tgece,tsimdi: Ttime;
begin
tsabah := strtotime('09:00:00'); // ini dosyasından bu değer çekilebilir
tgece := strtotime('21:00:00'); // ini dosyasından bu değer çekilebilir
tsimdi := GetTime();
if (tsimdi > tsabah) and (tsimdi < tgece) then
begin
showmessage('Gündüz Modu');
end
else
begin
// senaryonuza göre gece modu için parçalı kontrol (gece--23:59:59 ve 00:00:00- sabah)
// yapmaya gerek yok gündüz şartı sağlanmıyorsa gecedir.
showmessage('Gece Modu');
end;
Benzer bir şablon kod örneği zaten yukarıda verilmiş, fark etmediğim için tekrar gibi oldu.
3. Edit: Oruç hali konu sahibinin C kodunu, pascal gibi algıladım. Aslında nasıl pascala çevrileceğini soruluyormuş. Bu mesajda cevap niteliğinde olmuş oldu.
Yorumları: 31
Konuları: 10
Kayıt Tarihi: 10-04-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 32 Başlangıç
(20-05-2020, Saat: 09:22)frmman Adlı Kullanıcıdan Alıntı: Gece gündüz modunun senaryonuza göre tespit edilmesi için aşağıdaki gibi bir yapı kullanabilirsiniz.
Yukarıda uyardıkları gibi sistem saati değiştirilirse işlerde değişir
var
tsabah,tgece,tsimdi: Ttime;
begin
tsabah := strtotime('09:00:00'); // ini dosyasından bu değer çekilebilir
tgece := strtotime('21:00:00'); // ini dosyasından bu değer çekilebilir
tsimdi := GetTime();
if (tsimdi > tsabah) and (tsimdi < tgece) then
begin
showmessage('Gündüz Modu');
end
else
begin
// senaryonuza göre gece modu için parçalı kontrol (gece--23:59:59 ve 00:00:00- sabah)
// yapmaya gerek yok gündüz şartı sağlanmıyorsa gecedir.
showmessage('Gece Modu');
end;
Benzer bir şablon kod örneği zaten yukarıda verilmiş, fark etmediğim için tekrar gibi oldu.
3. Edit: Oruç hali konu sahibinin C kodunu, pascal gibi algıladım. Aslında nasıl pascala çevrileceğini soruluyormuş. Bu mesajda cevap niteliğinde olmuş oldu.
Hocam cok tesekkur ederim, verdiginiz kod çok işime yaradı.
Şöyle bir sıkıntım var, bu programın çalışacağı bilgisayarda farklı programlarda kullanılıyor, benim programım sadece mesajı çıkartacak
kullanıcının bu mesajı mutlaka görmesini istiyorum yani farklı bir program da kullanıyor olsa benim mesajımı görüp ok dedikten sonra bilgisayarı kullanabilmesini istiyorum. Bunun bir yolu var mı?
Yorumları: 953
Konuları: 124
Kayıt Tarihi: 06-07-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 6.375 Üstad
20-05-2020, Saat: 13:56
(Son Düzenleme: 20-05-2020, Saat: 13:58, Düzenleyen: Abdullah ILGAZ.)
(20-05-2020, Saat: 05:18)onurakman Adlı Kullanıcıdan Alıntı: (20-05-2020, Saat: 03:19)Abdullah ILGAZ Adlı Kullanıcıdan Alıntı: Yapmak istediğiniz şey izin verdiğiniz saatler aralığında programda işlem yapılabilmesi ve geriye kalan zamanda kullanılamaması durumu ise mevcut zamanı doğrulatabilmeniz için referans bir cihaz gerekiyor. Yani sunucu saatine bakarak hareket etmeniz gerekiyor. Diğer türlü kullanıcı bu durumu keşfedip 23:00'te saati sabah 09:00 yaparak kullanmaya devam edebilir.
İhtiyacınızı daha belirgin bir şekilde ifade ederseniz daha uygun çözüm önerilerinde bulunabiliriz.
Merhaba hocam ilginiz icin teşekkür ederim, başlangıç ve bitiş saatlerini ini dosyasından alacağım için manuple etmesi sıkıntı değil hocam sistem saatini referans alabilirim.
KURAL : 09:00 ile 21:59 arası GÜNDÜZ MODU, 22:00 ile 08:59 arası GECE modum.
Kısaca şöyle bahsedeyim bilgisayar açık olduğu sürece çalışan bir programım var. program çalışır durumdayken,
saat 09:00 olduğunda 'GÜNDÜZ MODUNDA ÇALIŞIYORSUN' , Saat 22:00 olduğunda 'GECE MODUNDA ÇALIŞIYORSUN' diye ekranda mesaj çıkartmak istiyorum. Eğer kullanıcı 09:50 de bilgisayarı açtıysa KURAL bölümünde belirlediğim saat aralığına göre mesajı göstermesi gerekiyor.
NOT : Göstereceğim mesaj kullanıcının işlem yapmasını engellemeli, yani başka bir programda çalışıyor olsada benim çıkarttığım mesajda OK butonuna basmadan bilgisayarda başka bir işlem yapamamalı.
Yapmak istediğim şeyin detayı bu şekilde umarım anlatabilmişimdir.
Merhaba,
Bu tarz işlemler için SQL yedekleme yazılımlarının yaptığı temel yaklaşımı referans alabilirsiniz.
Biraz açıklamak gerekirse;
Sizin için her ne kadar iki saat arası gibi bir kavram olsa da TTimer ve diğer zamanlayıcılar için döngüden ibaret olacaktır. Eğer her saat başının tanımını bir yerde tutarsanız veya daha kısa döngüler halinde saatleri yakalayabilirseniz işiniz daha kolay olur.
Key-Value olarak 24 tane kayıt atın ini dosyanıza.
Örn.
(İlk iki karakter saati, son karakter Dark Mode aktif/pasif bilgisi)
001
011
021
031
041
..
..
090
100
110
120
..
180
191
201
Daha sonra programın içerisinden 60 dakikada bir aktif olacak Timer ekleyin. Timer tetiklendiği sıradaki majör saatin durumuna göre karar verin. (Örn. şuan saat 13:55, 13'e 55dk, 14'e 5 dk var. Saat 14'ün ayarını çekin ve uygulayın.) Bu şekilde en pratik yöntemi sağlamış olursunuz.
Gerekenler:
1 adet TTimer
1 adet IniFile
2 adet tema desteği
Yukarıda vermiş olduğum örnekle birlikte ekran parlaklık oranını ve karanlık seviyesini de optimize edebilirsiniz, açık kapalı değil, geçiş tonlarını da uygulayabilirsiniz.
Kaç saat gündüz kaç saat gece modu yapacağınızı belirledikten sonra Gece ve Gündüz dizileri oluşturup kaçındı index olduğuna göre koyuluk sağlayabilirsiniz.
Yorumları: 1.660
Konuları: 20
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 18.981 Üstad
20-05-2020, Saat: 17:34
(Son Düzenleme: 20-05-2020, Saat: 17:48, Düzenleyen: mrmarman.)
Bir kod çalışması hazırladım.
Çözümünüzü bulmuşsunuz sadece lazım olan başkaları için burada aranıp bulunabilir olsun diye konsept olarak paylaşıyorum.
* Kullanım örneğinde göreceğiniz gibi, başlangıç bitiş aralığı olan sınırsız sayıda kayıt girebilirsiniz. Bunları bir INI dosyası, web ortamı vb. kayıt altında tutabilir, tekrar dinamik olarak girişini sağlayabilirsiniz.
* RECORD tipindeki TTimeRec kısımını dilediğiniz gibi yapılandırarak, ilgili saat aralığında kullanmak istediğiniz veri başlık(lar)ını düzenleyebilirsiniz. Örneğin ekran parlaklığı, ses seviyesi, vs.vs.
* Sistem bir timer içerisinde sürekli çalışacağı değerlendirilerek bir mesaj ekrana yansıtıldığında aynı ilgili saat diliminde yeniden aynı mesajın çıkmasının önüne geçmek / engellemek üzerine kurulu. aHandled boolean değişkeni ilgili saat dilimindeki bir mesaj ekrana yansıtılınca TRUE oluyorken, daha önce TRUE olmuş diğer saat dilimleri de ResetHandled proc ile varsayılana, FALSE ile yeniden mesaj vermeye hazır hale getiriliyor.
* Mekanizma kurulduktan sonra dilediğinizi yapabilirsiniz. En aşağıdaki kullanım örneğinde herhangi bir TIMER koymadım, yerine test için bir button koydum. Ancak kullanırken tabiatıyla koyacaksınız ve buttona basınca olan kısmı TIMERonTIMER içerisine yerleştireceksiniz. Interval ne ise ona göre saniyede, dakikada, saatte dilediğiniz periyotta art arda çalıştırmaya uygundur. Yineleyeyim, mesaj ilgili saat aralığında sadece bir defa tetiklenecektir.
Helper Unit kısmı
unit MessageTimeHelperU;
interface
Uses Dialogs;
Type
TTimeRec = record
aTimeBegin,
aTimeEnd : TTime;
aMsg : String;
aHandled : boolean;
end;
TTimes = array of TTimeRec;
TTimeHelper = class( TObject )
protected
private
FDefaultMsg : String;
FTimeRec : TTimeRec;
FTimes : TTimes;
FShowDefMsg : boolean;
procedure ResetHandled(aTimes: TTimes; aException: Integer);
public
constructor Create;
destructor Destroy; override;
property ShowDefaultMessage : boolean read FShowDefMsg write FShowDefMsg;
property DefaultMessage : String read FDefaultMsg write FDefaultMsg;
procedure MessageTime( aTime : TTime );
procedure AddTimeRec( aTimeRec : TTimeRec );
end;
implementation
{ TTimeHelper }
procedure TTimeHelper.AddTimeRec(aTimeRec: TTimeRec);
begin
if High( FTimes ) = -1 then
SetLength( FTimes, 1 )
else
SetLength( FTimes, High(FTimes) + 2 );
FTimes[High(FTimes)].aTimeBegin := aTimeRec.aTimeBegin;
FTimes[High(FTimes)].aTimeEnd := aTimeRec.aTimeEnd;
FTimes[High(FTimes)].aMsg := aTimeRec.aMsg;
FTimes[High(FTimes)].aHandled := aTimeRec.aHandled;
end;
constructor TTimeHelper.Create;
begin
inherited;
FDefaultMsg := 'Default Message';
FShowDefMsg := False;
end;
destructor TTimeHelper.Destroy;
begin
inherited;
end;
procedure TTimeHelper.ResetHandled( aTimes: TTimes; aException: Integer );
var
i : Integer;
begin
for i := Low(aTimes) to High(aTimes) do
if i <> aException then
aTimes[i].aHandled := False;
end;
procedure TTimeHelper.MessageTime(aTime: TTime);
var
i : Integer;
bFound : boolean;
begin
i := Low(FTimes);
bFound := false;
while ( not bFound ) AND ( i <= High(FTimes) ) do
begin
if ( Frac(aTime) >= FTimes[i].aTimeBegin )
AND ( Frac(aTime) <= FTimes[i].aTimeEnd ) then
begin
if ( NOT FTimes[i].aHandled ) then
begin
FTimes[i].aHandled := True;
ResetHandled( FTimes, i );
ShowMessage( FTimes[i].aMsg );
end;
bFound := True;
end else inc(i);
end;
if NOT bFound then
begin
if FShowDefMsg then ShowMessage( FDefaultMsg );
end;
end;
end.
Bu unit'in nasıl kullanıldığına ilişkin örnek :
uses MessageTimeHelperU;
var
TimeHelper : TTimeHelper;
procedure TForm1.SetTimeRecords;
var
aTimeRec : TTimeRec;
begin
TimeHelper := TTimeHelper.Create;
TimeHelper.DefaultMessage := 'message : out of time list';
TimeHelper.ShowDefaultMessage := true;
// 1st Time Record
With aTimeRec do begin
aTimeBegin := EncodeTime( 09, 00, 00, 000 ); // Start-1
aTimeEnd := EncodeTime( 11, 00, 00, 000 ); // End -1
aMsg := 'Good morning...';
aHandled := False;
end;
TimeHelper.AddTimeRec( aTimeRec );
// 2nd Time Record
With aTimeRec do begin
aTimeBegin := EncodeTime( 14, 00, 00, 000 ); // Start-2
aTimeEnd := EncodeTime( 18, 00, 00, 000 ); // End -2
aMsg := 'Good afternoon...';
aHandled := False;
end;
TimeHelper.AddTimeRec( aTimeRec );
// 3rd Time Record
With aTimeRec do begin
aTimeBegin := EncodeTime( 18, 00, 00, 001 ); // Start-3
aTimeEnd := EncodeTime( 20, 00, 00, 000 ); // End -3
aMsg := 'Good evening...';
aHandled := False;
end;
TimeHelper.AddTimeRec( aTimeRec );
// 4th Time Record
With aTimeRec do begin
aTimeBegin := EncodeTime( 20, 00, 00, 001 ); // Start-4
aTimeEnd := EncodeTime( 23, 59, 59, 999 ); // End -4
aMsg := 'Good Night...';
aHandled := False;
end;
TimeHelper.AddTimeRec( aTimeRec );
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if Not Assigned( TimeHelper )
then SetTimeRecords();
TimeHelper.MessageTime( now );
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ReportMemoryLeaksOnShutdown := true;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if Assigned( TimeHelper ) then
FreeAndNil( TimeHelper );
end;
Saygılarımla
Muharrem ARMAN
Yorumları: 31
Konuları: 10
Kayıt Tarihi: 10-04-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 32 Başlangıç
(20-05-2020, Saat: 17:34)mrmarman Adlı Kullanıcıdan Alıntı: Bir kod çalışması hazırladım.
Çözümünüzü bulmuşsunuz sadece lazım olan başkaları için burada aranıp bulunabilir olsun diye konsept olarak paylaşıyorum.
* Kullanım örneğinde göreceğiniz gibi, başlangıç bitiş aralığı olan sınırsız sayıda kayıt girebilirsiniz. Bunları bir INI dosyası, web ortamı vb. kayıt altında tutabilir, tekrar dinamik olarak girişini sağlayabilirsiniz.
* RECORD tipindeki TTimeRec kısımını dilediğiniz gibi yapılandırarak, ilgili saat aralığında kullanmak istediğiniz veri başlık(lar)ını düzenleyebilirsiniz. Örneğin ekran parlaklığı, ses seviyesi, vs.vs.
* Sistem bir timer içerisinde sürekli çalışacağı değerlendirilerek bir mesaj ekrana yansıtıldığında aynı ilgili saat diliminde yeniden aynı mesajın çıkmasının önüne geçmek / engellemek üzerine kurulu. aHandled boolean değişkeni ilgili saat dilimindeki bir mesaj ekrana yansıtılınca TRUE oluyorken, daha önce TRUE olmuş diğer saat dilimleri de ResetHandled proc ile varsayılana, FALSE ile yeniden mesaj vermeye hazır hale getiriliyor.
* Mekanizma kurulduktan sonra dilediğinizi yapabilirsiniz. En aşağıdaki kullanım örneğinde herhangi bir TIMER koymadım, yerine test için bir button koydum. Ancak kullanırken tabiatıyla koyacaksınız ve buttona basınca olan kısmı TIMERonTIMER içerisine yerleştireceksiniz. Interval ne ise ona göre saniyede, dakikada, saatte dilediğiniz periyotta art arda çalıştırmaya uygundur. Yineleyeyim, mesaj ilgili saat aralığında sadece bir defa tetiklenecektir.
Helper Unit kısmı
unit MessageTimeHelperU;
interface
Uses Dialogs;
Type
TTimeRec = record
aTimeBegin,
aTimeEnd : TTime;
aMsg : String;
aHandled : boolean;
end;
TTimes = array of TTimeRec;
TTimeHelper = class( TObject )
protected
private
FDefaultMsg : String;
FTimeRec : TTimeRec;
FTimes : TTimes;
FShowDefMsg : boolean;
procedure ResetHandled(aTimes: TTimes; aException: Integer);
public
constructor Create;
destructor Destroy; override;
property ShowDefaultMessage : boolean read FShowDefMsg write FShowDefMsg;
property DefaultMessage : String read FDefaultMsg write FDefaultMsg;
procedure MessageTime( aTime : TTime );
procedure AddTimeRec( aTimeRec : TTimeRec );
end;
implementation
{ TTimeHelper }
procedure TTimeHelper.AddTimeRec(aTimeRec: TTimeRec);
begin
if High( FTimes ) = -1 then
SetLength( FTimes, 1 )
else
SetLength( FTimes, High(FTimes) + 2 );
FTimes[High(FTimes)].aTimeBegin := aTimeRec.aTimeBegin;
FTimes[High(FTimes)].aTimeEnd := aTimeRec.aTimeEnd;
FTimes[High(FTimes)].aMsg := aTimeRec.aMsg;
FTimes[High(FTimes)].aHandled := aTimeRec.aHandled;
end;
constructor TTimeHelper.Create;
begin
inherited;
FDefaultMsg := 'Default Message';
FShowDefMsg := False;
end;
destructor TTimeHelper.Destroy;
begin
inherited;
end;
procedure TTimeHelper.ResetHandled( aTimes: TTimes; aException: Integer );
var
i : Integer;
begin
for i := Low(aTimes) to High(aTimes) do
if i <> aException then
aTimes[i].aHandled := False;
end;
procedure TTimeHelper.MessageTime(aTime: TTime);
var
i : Integer;
bFound : boolean;
begin
i := Low(FTimes);
bFound := false;
while ( not bFound ) AND ( i <= High(FTimes) ) do
begin
if ( Frac(aTime) >= FTimes[i].aTimeBegin )
AND ( Frac(aTime) <= FTimes[i].aTimeEnd ) then
begin
if ( NOT FTimes[i].aHandled ) then
begin
FTimes[i].aHandled := True;
ResetHandled( FTimes, i );
ShowMessage( FTimes[i].aMsg );
end;
bFound := True;
end else inc(i);
end;
if NOT bFound then
begin
if FShowDefMsg then ShowMessage( FDefaultMsg );
end;
end;
end.
Bu unit'in nasıl kullanıldığına ilişkin örnek :
uses MessageTimeHelperU;
var
TimeHelper : TTimeHelper;
procedure TForm1.SetTimeRecords;
var
aTimeRec : TTimeRec;
begin
TimeHelper := TTimeHelper.Create;
TimeHelper.DefaultMessage := 'message : out of time list';
TimeHelper.ShowDefaultMessage := true;
// 1st Time Record
With aTimeRec do begin
aTimeBegin := EncodeTime( 09, 00, 00, 000 ); // Start-1
aTimeEnd := EncodeTime( 11, 00, 00, 000 ); // End -1
aMsg := 'Good morning...';
aHandled := False;
end;
TimeHelper.AddTimeRec( aTimeRec );
// 2nd Time Record
With aTimeRec do begin
aTimeBegin := EncodeTime( 14, 00, 00, 000 ); // Start-2
aTimeEnd := EncodeTime( 18, 00, 00, 000 ); // End -2
aMsg := 'Good afternoon...';
aHandled := False;
end;
TimeHelper.AddTimeRec( aTimeRec );
// 3rd Time Record
With aTimeRec do begin
aTimeBegin := EncodeTime( 18, 00, 00, 001 ); // Start-3
aTimeEnd := EncodeTime( 20, 00, 00, 000 ); // End -3
aMsg := 'Good evening...';
aHandled := False;
end;
TimeHelper.AddTimeRec( aTimeRec );
// 4th Time Record
With aTimeRec do begin
aTimeBegin := EncodeTime( 20, 00, 00, 001 ); // Start-4
aTimeEnd := EncodeTime( 23, 59, 59, 999 ); // End -4
aMsg := 'Good Night...';
aHandled := False;
end;
TimeHelper.AddTimeRec( aTimeRec );
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if Not Assigned( TimeHelper )
then SetTimeRecords();
TimeHelper.MessageTime( now );
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ReportMemoryLeaksOnShutdown := true;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if Assigned( TimeHelper ) then
FreeAndNil( TimeHelper );
end;
Hocam elinize sağlık, bana biraz ağır gelsede diğer arkadaşlar için yararlı bir örnek olmuş. Tekrar elinize meğinize sağlık.
Benim bu uygulamada yapmak istediğim şey aslında bu kullanıcı hangi uygulamayı kullanırsa kullansın(benim yazdığım uygulama harici uygulamalar) mesajıma OK demeden bilgisayarı kullanmasını engellemek.
MessageBox(Application.Handle,'Mesaj',PChar(Application.Title),MB_OK or MB_ICONINFORMATION or MB_SYSTEMMODAL);
MessageBox da gösterebiliyorum ama ekranın herhangi bir yerine tıkladığında benim mesajım arka tarafa geçip kullanıcı ekran kullanımına devam edebiliyor.
Bu anlattığım işlemi yapabilmemin bir yolu var mı?
|