Kod: Tümünü seç
if not (FieldByName('ADRES').Value=null) Then
Adres.Checked := FieldByName('ADRES').Value;
birde ilk kayıt oluşrurulduğunda veritabanındaki alanları null bırakma "0" değerini ata işlem olduğunda Checkbox işaretlenir "1" değerini alır.
Bir diğer durum ise Checked'in Boolean bir değer olması, eğer 0 ve 1 leri Firebird kullanrak veritabanında tutuyorsan ve bu alanlar integer değerde ise yukarıdaki gibi bir kodda yine hata verebilir.
kodları şu şekilde bir değiştir ve sonuca bak.
Kod: Tümünü seç
procedure TForm1.LocalDatabase(Sender: TObject);
begin
try
with LocalAyarlar do
begin
Close;
SQL.Clear;
SQL.Add('Select * From Ayarlar');
Prepared := True;
Open;
Adres.Checked := StrToBool(LocalAyarlarADRES.Text);
Tel.Checked := StrToBool(LocalAyarlarTELEFON.Text);
Onay.Checked := StrToBool(LocalAyarlarONAYLI.Text);
end;
Except on E: Exception do
Begin
ShowMessage('HataTürü : '+PChar(E.ClassType)+#10
+'HataKodu : '+PChar(E.Message));
end;
end;
Şu şekilde de daha açık olabilir test için..
boş bir form üzerine 3 adet edit, 3 Adet Checkbox ve 1 adet Buton koy ve aşağıdaki kodları sayfaya yerleştir. Edit içerisine girdiğin 1 ve 0 değerlerine göre Checkboxların durumu değişir.
Kod: Tümünü seç
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text :='0';
Edit2.Text :='0';
Edit3.Text :='0';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CheckBox1.Checked:=StrToBool(Edit1.Text);
CheckBox2.Checked:=StrToBool(Edit2.Text);
CheckBox3.Checked:=StrToBool(Edit3.Text);
end;
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..