Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Abhängigkeiten von DBCheckboxen

  Alt 30. Jan 2007, 11:58
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
  Mit Zitat antworten Zitat