Boolean Kullanımı !!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Boolean Kullanımı !!

Mesaj gönderen mrmarman »

Merhaba...

- İşten döndüm. Telefonumdan mesajınızı gördüğüm halde cevap yazamadım.
- Kod syntax'ı Delphi IDE ile teyid edip en az hata ile mesaj haline getirmek için akşamı bekledim.

- Bu arada sormadım, aslında farketmez ama örnek verirken lazım olacaktır. ADO ile mi erişim kuruyorsunuz ? Veritabanınız nedir ?

- Burada iki durum var. :idea:
:arrow: 1. CheckBox1'e bir kullanıcı işaret koyarsa CheckBox1'in OnClick eventi tetiklenir ve altına ekleyeceğiniz kod çalışır.

:arrow: 2. Eğer veritabanındaki kayıtlara göre, yazılımınızın herhangi bir formudan herhangi bir procedure'ünden kod ile CheckBox1'in Checked özelliğini True veya False şeklinde atama yaparsanız da yine bir kullanıcı (1) nolu maddede bahsettiğim şekilde mouse ile işaretlenmiş gibi aynı şekilde OnClick eventi tetiklenecektir.

- (1) nolu durum istenen bir özellik iken (2) nolu durum ise sadece montoring (sadece gösterge) amacı güttüğünden istenmeyen ve kontrol altında tutulması gereken bir durum olarak karşınıza çıkacaktır. :?:
- ChekBox'a kimin ( mouse ile kullanıcının mı yoksa veritabanındaki duruma göre sizin kendi yazılımınızın mı ) işaret koyduğunu da kontrol altında tutmak durumundayız. :!: Bunun için GLOBAL bir değişken koyacaksınız. Örneğin aşağıdaki şekilde tanımlayın...

// GLOBAL // değişkeninizi, türü gereği her yerden erişebilinen bir değişken olacağından herhangi bir procedure veya fonksiyon altında değil daha yüksek mercilerde bir yere yazacaksınız. Aşağıdaki gibi...

Kod: Tümünü seç

var
  Form9: TForm9;
  xKontrolYazilimda : Boolean = False; // işte burası uygundur...Form9'un VAR tanımın kısmında...
Bu size ne kazandıracak ? CheckBox1'in OnClick eventinde bu değişkenin TRUE veya FALSE olma durumunu sorgulayacak, FALSE ise kullanıcı basmıştır, TRUE ise yazılım içinden çağrılmıştır diye anlam yükleyeceksiniz. Nasıl mı ?

Kod: Tümünü seç

  xKontrolYazilimda := TRUE; // Önce TRUE yapıyoruz ki veritabanına yazmasın.
    CheckBox1.Checked := True;
  xKontrolYazilimda := FALSE; // İşi bitti FALSE yapıyoruz.
Sizin Örnekte şöyle..

Kod: Tümünü seç

procedure TForm9.FormShow(Sender: TObject);
begin
  xKontrolYazilimda := TRUE; // CheckBox1'e Müdahalenin Yazılımdan Olduğunu beyan ettik.
    EPARAMQ.Active:=True;
    if EPARAMQ.FieldByName('EPARAM_1').AsString='True' then
    begin
      CheckBox1.Checked:=True;
    end
    else
    begin
      CheckBox1.Checked:=False;
    end;
  xKontrolYazilimda := FALSE; // Bu beyanımızı sonlandırıyoruz ki kullanıcı işaretlerse işleme alınsın...
end;
// Burada sizde olmayan bir örnekle daha anlaşılır olacaktır...
// QUERY'nin ekrana yansıdığı kayıtlarda gezinirken üzerine geldiğiniz kayda göre CheckBox1 kendiliğinden işaretli veya değil olacaktır.

Kod: Tümünü seç

procedure TForm9.EPARAMQAfterScroll(DataSet: TDataSet);
begin
  xKontrolYazilimda := TRUE; // CheckBox1'e Müdahalenin Yazılımdan Olduğunu beyan ettik.
    if (EPARAMQ.Active) AND (EPARAMQ.RecordCount > 0) then
    begin // sizin query'den otomatik olarak güdümlenir...
      if EPARAMQ.FieldByName('EPARAM_1').AsString='True' then
      begin
        CheckBox1.Checked:=True;
      end
      else
      begin
        CheckBox1.Checked:=False;
      end;
    end;
  xKontrolYazilimda := FALSE; // Bu beyanımızı sonlandırıyoruz ki kullanıcı işaretlerse işleme alınsın...
end;
Bu şekildeki bir yapı işinizi görecektir.

CheckBox1'i click yaptığınızda kaydı değiştirmesi için ise :

Kod: Tümünü seç

procedure TForm9.CheckBox1Click(Sender: TObject);
begin
  if xKontrolYazilimda then EXIT; // bu satır sayesinde QUERY'deki kayıtlara göre işaretleme yapacak ama aşağıdaki kodu asla çalıştırmadan çıkılacaktır.

  if (EPARAMQ.Active) AND (EPARAMQ.RecordCount > 0) then
  begin // QUERY açıksa...
    EPARAMQ.Edit;
    EPARAMQ.FieldByName('EPARAM_1').Value  := CheckBox1.Checked;
    EPARAMQ.Post;
    ShowMessage('Kayıt Güncellenmiştir !!!');
  end;
end;
Başarılar. :bravo:
Resim
Resim ....Resim
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Boolean Kullanımı !!

Mesaj gönderen ozcank »

Arkadaşlar bana yardımcı olur musunuz?
Ben Form9 da ki CheckBox1 e İşaretli ise True İşaretsiz ise False olarak Tabloya yazdırıyorum orda sorun yok , fakat Form9 a girdiğim zaman CheckBox1 tablodaki True veya False gore nasıl işaretli yada işaretsiz hale getirebilirim?
omurolmez
Üye
Mesajlar: 187
Kayıt: 31 Eki 2012 11:41

Re: Boolean Kullanımı !!

Mesaj gönderen omurolmez »

Bir bardak süt istemişsinşiz, mrmarman size bir kova süt vermiş. Acaba, sorun sütte değil de buzdolabında olabilir mi ?
Ömür Ölmez
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Boolean Kullanımı !!

Mesaj gönderen SimaWB »

omurolmez yazdı:Bir bardak süt istemişsinşiz, mrmarman size bir kova süt vermiş. Acaba, sorun sütte değil de buzdolabında olabilir mi ?
+1

Gerçekten inanılacak gibi değil :!:
mrmarman'ın anlattığı o kadar şeyden sonra tekrar en başa dönüp, ilk soruyu tekrar sormak :twisted:
There's no place like 127.0.0.1
ozcank
Üye
Mesajlar: 937
Kayıt: 28 Nis 2005 05:29

Re: Boolean Kullanımı !!

Mesaj gönderen ozcank »

mrmarman çok teşekkür ederim sizin gibi insanlar bu sitede oldukça bizler yazılımı daha çok sever duruma geliyoruz.
Kullanıcı avatarı
NewMember
Üye
Mesajlar: 990
Kayıt: 29 Haz 2005 06:57
Konum: Bursa

Re: Boolean Kullanımı !!

Mesaj gönderen NewMember »

Ben Form9 da ki CheckBox1 e İşaretli ise True İşaretsiz ise False olarak Tabloya yazdırıyorum orda sorun yok , fakat Form9 a girdiğim zaman CheckBox1 tablodaki True veya False gore nasıl işaretli yada işaretsiz hale getirebilirim?
Normal Checkbox yerine DBCheckbox kullan ve bu bileşenin Properties penceresinden CheckedValue değerine True, NotCheckedValue değerine de False ver olsun bitsin.
Cevapla