Hallo Printe,
der an den event handler übergebene DataSet ermöglicht dir event sharing, eine Programmiertechnik, bei der du denselben handler für mehrere Komponenten einsetzen kannst, wenn du ihn entsprechend entwirfst:
Delphi-Quellcode:
procedure TDemoForm.EditEnter(Sender: TObject);
begin
with Sender as TEdit do
Color := clYellow;
end;
Diesen handler für das event OnEnter() kannst du an alle Edit-Komponenten anhängen und es wird trotzdem die richtige Komponente eingefärbt - siehst du aber erst, wenn du auch einen handler für OnExit() bereit stellst, der die Farbe wieder wegnimmt.
Hier noch ein Beispiel anhand deines Problems, wobei ich von vier DBCheckBoxen für B, BE, C, CE ausgehe:
Delphi-Quellcode:
procedure TDemoForm.DBCheckBoxClick(Sender: TObject);
var
ds: TDataSet;
index: Integer;
begin
if Active then
with (Sender as TDBCheckBox) do
begin
ds := DataSource.DataSet;
if Checked and (ds.State <> dsBrowse) then
begin
index := AnsiIndexText(DataField, ['FS_B','FS_BE','FS_C','FS_CE']);
if index > 2 then ds.FieldValues['FS_C'] := True;
if index > 1 then ds.FieldValues['FS_BE'] := True;
if index > 0 then ds.FieldValues['FS_B'] := True;
end;
end;
end;
So werden die Änderungen sofort sichtbar.
Hast du die gleichen Datenbankfelder in verschiedenen DataSets (aus welchen Gründen auch immer) aktiv, dann müssen die DataSets sich untereinander synchronisieren. Dazu kannst du Methoden wie Refresh() oder Requery() verwenden.
Freundliche Grüße