DBGrid, Gün Hesaplaması ve Listbox

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Hancet
Üye
Mesajlar: 107
Kayıt: 08 May 2005 01:18
Konum: Burdan...
İletişim:

DBGrid, Gün Hesaplaması ve Listbox

Mesaj gönderen Hancet »

S.A.
merhaba arkadaşlar
ben doğum tarihi hatırlatan program yapmak istiyorum

Sizlere iki tane sorum olacak.

aşağıdaki kodları kullanarak içinde bulunduğumuz ayda doğan kayıtlı kullanıcıların doğum günlerine kaç gün kaldığını net olarak buluyor ama bu ay içinde değil ise net olarak kaç gün kaldığını bulamıyor. Çünkü ayların 30,31 çekme sorunu var. bunu nasıl yapabileceğime dair yardım ederseniz sevinirim.

Kod: Tümünü seç

var
  gun,ay,tarih:string;
begin
    tarih:=datetostr(date);
    gun:=copy(tarih,1,2);
    ay:=copy(tarih,4,2);
    table1.edit;
    if strtoint(Table1ay.asstring)-strtoint(ay)<0 then table1kalan.asstring:=inttostr((strtoint(table1ay.asstring)-strtoint(ay)+12)*30);
   if strtoint(table1ay.AsString)-strtoint(ay)>0 then table1kalan.asstring:=inttostr((strtoint(table1ay.asstring)-strtoint(ay))*30);
   if strtoint(table1ay.asstring)-strtoint(ay)=0 then
   begin
      if strtoint(table1gun.asstring)-strtoint(gun)<0 then table1kalan.asstring:=inttostr(strtoint(table1gun.asstring)-strtoint(gun)+365);
      if strtoint(table1gun.asstring)-strtoint(gun)>0 then table1kalan.asstring:=inttostr(strtoint(table1gun.asstring)-strtoint(gun));
      if strtoint(table1gun.asstring)-strtoint(gun)=0 then table1kalan.asstring:='0';
   end;
end;
2. sorum kalan gün'e göre indexleme yaptığım zaman doğum günü en yakın olan kişi en üstte oluyor(DBGrid için). ben doğum tarihine 3 gün kalanların kırmızı renkte 15 gün kalanların sarı renkte 30 gün kalanların ise yeşil renkte olmasını istiyorum bunu nasıl yaparım. Yani renkli bi dbgrid

Bide bunları grid kullanmadan direk indexli ve renkli bir şekilde listbox'a aktarabilirmiyim?
En son Hancet tarafından 22 Tem 2005 07:44 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Varmı Beni İçinizde Tanıyan?
Yaşanmadan Çözülmeyen Sır Benim
Kalmasada Şöhretimi Duymayan,
Kimliğimi Tarif etmek zor Benim.
Kimsesizim hısmım da çok, hasmım da,
Görünmezim cismim de yok, resmim de,
Dil üzmezim, tek hece var ismimde,
Barınağım Delphi denen yer Benim..!
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
vatandaşın doğum tarihinden bugünü çıkardığın zaman sana zaten kaç gün kaldığını vermesi lazım. ay 30 çekmiş 31 çekmiş önemli değil.
gridi renklendirme kodları sitede var. sadece koşulu değiştireceksin.
ondada gene tarihleri birbirinden çıkart işlem tamam.

hatta senin yerinde olsam aradaki günü bulan bi function yazarım her yerde onu kullanırım.

Not: bu işlemi ben düşündüğüme göre borlanddaki herifler hayli hayli düşünmüştür. DateUtils unitini bi incele orda bu işlemi yapan bi function olması lazım.

Kod: Tümünü seç

funcion gunfarkinibul(t1,t2:TDate):integer;
begin 
  result:=t1-t2;//tabi normalde burda bi takım kontroller yapılması gerekiyor 
end;
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Hancet
Üye
Mesajlar: 107
Kayıt: 08 May 2005 01:18
Konum: Burdan...
İletişim:

Mesaj gönderen Hancet »

S.A.
Abdullah abi vatandaşın doğum tarihinden bugünün tarihini nasıl çıkaracağım tam olarak anlamadım. Mesela 02.07.1988 arkadaşın doğum tarihi diyelim çıkarma işlemi nasıl olacak. Sonra çıkarma yapınca bana gün olarak nasıl verecek?
Daha açık bilgi verirsen sevinirim.
Kolay Gelsin
En son Hancet tarafından 25 Tem 2005 02:20 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Varmı Beni İçinizde Tanıyan?
Yaşanmadan Çözülmeyen Sır Benim
Kalmasada Şöhretimi Duymayan,
Kimliğimi Tarif etmek zor Benim.
Kimsesizim hısmım da çok, hasmım da,
Görünmezim cismim de yok, resmim de,
Dil üzmezim, tek hece var ismimde,
Barınağım Delphi denen yer Benim..!
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

a.s.
vatandaşın doğum tarihini bi tabloda tuttuğunu varsayıyorum.
kalangun integer tipinde bir calc alan ekliyorsun tabloya
oncalcfieldsolayında aşağıdakinebenzer bir kod yazıyorsun

Kod: Tümünü seç

procedure xxxoncalcfield;
var
dt:TDATE;//dt=doğumtarihi
begin
  dt:=dataset.fiedlbyname('DOGUMTARIHI').asdatetime;
  dataset['KALANGUN']:=gunfarkinibul(dt,date);
end;
dbgride kalangun alanınıda ekle
indexini (yada siralamani orderby) doğumtarihine göre sıralat.

kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Hancet
Üye
Mesajlar: 107
Kayıt: 08 May 2005 01:18
Konum: Burdan...
İletişim:

Mesaj gönderen Hancet »

s.a.
Program olacak gibi teşekkür ederim
funcion gunfarkinibul(t1,t2:TDate):integer;
begin
result:=t1-t2;//tabi normalde burda bi takım kontroller yapılması gerekiyor
end;
kontroller derken benim yazdığım kullandığım kodlar gibi mi kontrol yapılacak yoksa farklı bir yöntem veya kod mu kullanacağız
Varmı Beni İçinizde Tanıyan?
Yaşanmadan Çözülmeyen Sır Benim
Kalmasada Şöhretimi Duymayan,
Kimliğimi Tarif etmek zor Benim.
Kimsesizim hısmım da çok, hasmım da,
Görünmezim cismim de yok, resmim de,
Dil üzmezim, tek hece var ismimde,
Barınağım Delphi denen yer Benim..!
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

demek istediğin gelen parametreler,
girilen değerler gerçektende tarihmi gibisinden kontroller.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
Hancet
Üye
Mesajlar: 107
Kayıt: 08 May 2005 01:18
Konum: Burdan...
İletişim:

Mesaj gönderen Hancet »

Abdullah abi yazdıklarını denedim ama bi sonuca ulaşamadım maalesef :(
Allah razı olsun bi hocam yardım etti aşağıdaki kodları kullanarak programı bitirdim. :)

Kod: Tümünü seç

function TForm1.Hesapla(DogumTarihi:TDate):Extended;
var
tarih1,tarih2:tdate;
Year1,Month1,Day1,Year2,Month2,Day2:Word;
begin
tarih1:=Date;
tarih2:=DogumTarihi;
DecodeDate(Tarih1,Year1,Month1,Day1);
DecodeDate(Tarih2,Year2,Month2,Day2);
Tarih2:=EncodeDate(Year1,Month2,Day2);
if Tarih2<Tarih1 then Tarih2:=EncodeDate(Year1+1,Month2,Day2)
                 else Tarih2:=EncodeDate(Year1,Month2,Day2);
Result:=(Floor(Tarih2-Tarih1));
end;

Kod: Tümünü seç

procedure TForm1.Table1AfterOpen(DataSet: TDataSet);
var
tar:Tdate;
begin
  Table1.First;
  while not Table1.Eof do
    begin
      if not Table1Yil.IsNull and  not Table1Ay.IsNull  and not Table1Gun.IsNull then
         begin
           Table1.Edit;
           tar:=EncodeDate(Table1Yil.AsInteger,Table1Ay.AsInteger,Table1Gun.asInteger);
           Table1Kalan.Value:=Floor(Hesapla(tar));
         end;
    Table1.Next;
    end;
end;

Ama ilgilendiğin için sağol yinede , Allah razı olsun.
Varmı Beni İçinizde Tanıyan?
Yaşanmadan Çözülmeyen Sır Benim
Kalmasada Şöhretimi Duymayan,
Kimliğimi Tarif etmek zor Benim.
Kimsesizim hısmım da çok, hasmım da,
Görünmezim cismim de yok, resmim de,
Dil üzmezim, tek hece var ismimde,
Barınağım Delphi denen yer Benim..!
Cevapla