- İş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.



- (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.

// 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...
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.
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;
// 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;
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;
