PDA

Tam Sürümünü Görmek İçin : Delphi ile Zil Çalar


Düzgün
18/05/2003, 22:04
Delphi ile yazmak istediğim programda veritabanından haftalık programı alacak
ve tray icon halinde arka planda çalışarak işlemleri uygulayacak.

Buraya kadar tamam ama çözemediğim bazı kısımlar var.

Örneğin;
-------------------
"Pazartesi, Salı, Çarşamba, Perşembe, Cuma"
Hafta içi günlerde,

Saat 08:30 da "1.wav" dosyasını 20 saniye ye çalacak.
Saat 09:30 da "2.wav" dosyasını 1 dakika çalacak.
Saat 10:30 da "3.wav" dosyasını 4 dakika çalacak.
--------------------

Bu işlemleri yapacak satırlar nasıl olmalı.


ahmet ustun
19/05/2003, 13:02
bunun için en basitinden, timer ve mediaplayer bileşenlerini kullanmaktır. yapamazsan yardımcı olurum. başarılar.

Düzgün
19/05/2003, 21:53
Şu tipte bir code yazdım;
-------------------------------------
type
TProgram = record
time1 : string[20];
time2 : string[20];
desc : string[20];
dosya : string[50];
end;
TMainForm = class(TForm)
Timer1: TTimer;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
MediaPlayer1: TMediaPlayer;
var
MainForm: TMainForm;
DProgram : array[1..3] of TProgram;
F : file of TProgram;
Progress : char;
procedure TMainForm.FormCreate(Sender: TObject);

const Days: array[1..7] of string =
('Pazar', 'Pazartesi', 'Salı',
'Çarşamba', 'Perşembe',
'Cuma', 'Cumartesi');
begin
Label3.Caption := Days[DayOfWeek(Date)];
DProgram[1].time1 := '21:28:00';
DProgram[1].time2 := '00:00:30';
DProgram[1].dosya := 'C:\Downloads\THEbest\Die Another Day.mp3';
DProgram[1].desc := '1. Ders Zili';
DProgram[2].time1 := '16:56:00';
DProgram[2].time2 := '00:01:00';
DProgram[2].desc := '2. Ders Zili';
DProgram[3].time1 := '16:58:00';
DProgram[3].time2 := '00:04:00';
DProgram[3].desc := '3. Ders Zili';
end;


procedure TMainForm.Timer1Timer(Sender: TObject);
var
i: integer;
kontrol : char;
begin
Label1.caption := DateTimeToStr(Now);
kontrol := 'A';
for i:= 1 to 3 do begin
if ((time >= StrToTime(DProgram[i].time1)) AND (time <= StrToTime(DProgram[i].time1) + StrToTime (DProgram[i].time2) )) then kontrol :='B';
if ((Progress = '0') AND (kontrol = 'B')) then
begin
StatusBar1.SimpleText := DProgram[i].desc +' Çalıyor...';
MediaPlayer1.Filename := DProgram[i].dosya;
MediaPlayer1.Open;
Mediaplayer1.play;
Progress :='1';
end;
if (kontrol ='A') then
begin
Mediaplayer1.close;
StatusBar1.SimpleText := 'Algılayıcı Devrede';
Progress :='0';
end;
end;
end;
end.
--------------------------------

Form penceresinin sağ üst köşesinde bulunan
Minimize, Maximize, Close
butonlarına şu görevleri nasıl atıyabilirim.
Minimize, Close => herhangi birine tıklanınca benim yapılmasını istediğim prosedür işleyecek.
Maximize => oradan kaldırmak istiyorum. yani disable da olabilir

TeDDy
20/05/2003, 13:19
Maximize'ı formun BorderIcons özelliklerinden kaldırabilirsin, aktif yada pasif yapabilirsin.


Close da ise Formun ObClose olayına şu kodları yazarsan görev atayabilirsin.


if Application.MessageBox('Çıkacak mısın','asd',mb_YesNo) = mrno then
Action:=canone;



istersen soruyu sormamasını istersin. ama mutlaka Action:=caNone olmak zorunda...



Minimize'ı ise bende henüz tam olarak beceremedim diyebilirim. :) ama çalışmalarım devam etmekte çözünce haber verem söz :D.


kolay gelsin

Düzgün
21/05/2003, 01:09
ok teşekkürler tamam yaptım
max ve min butonlarını false yaptım sadex X kaldı onuda action:=canone; ile işlev ekledim ama bir problem çıktı
time prosedürü
DProgram[1]
kaydına baktığında zaman tutuyorsa
DProgram[1].dosya := 'C:\Downloads\THEbest\Die Another Day.mp3';
dosyasını çalıyor ve saniye aşımında duruyor hiç problem yok fakat
DProgram[2]
DProgram[3]
e geldiğinde başlayıp kapatıyor ve sistemi çok yavaşlatıp saniye geçene kadar ses gelmiyor. dıdd dıd dıd ses geliyor sadece :=)

alla halla.

tuanna
06/06/2006, 16:32
Benim yazdığım bir program
incelemek isteyenler için download linki
http://www.tuannasoft.com/prg/zil/TuannasoftZilVer0.0.0.2.rar