Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Datenbankfelder werden in datasource.onchange nicht gefu

  Alt 24. Feb 2005, 17:28
Zitat von buyden:
@shmia
ich komm jetzt mit deiner Aussage grad nicht ganz klar.
Der Sinn meiner Prozedur ist es, wenn sich in einem bestimmten Feld der tabelle auftrag etwas ändert, soll die Farbe des Panels, die in der verknüpften Tabelle status steht, geändert werden.
Also eher so:
Delphi-Quellcode:
procedure Tfrmdata.dsauftragDataChange(Sender: TObject; Field: TField);
begin
   if Field.FieldName='AStatusthen
   begin
      // in einem ganz bestimmten Feld (Name hier: 'AStatus') hat sich was geändert
      // jetzt müssen wir eine "Lookup" Aktion durchführen
      //

      Assert(tbstatus.Active); // Tabelle muss offen sein, sonst geht nix

      (*
      * Wichtig !!!
      * wenn man sich in der Klasse Tfrmdata befindet, darf man nicht auf frmdata
      * zugreifen.
      * dies kann ganz schwer zu findende Fehler verursachen
       *)


      // suche in Tabelle tbstatus nach dem passenden Datensatz
      if tbstatus.Locate('IdStatus', Field.Value) then
      begin
         // zusatztest:
         if tbstatus.FindField('farbe') = nil then
             ShowMessage('Feld farbe nicht vorhanden!'#13#10+
                 tbstatus.FieldList.Text); // alle vorhandenen Felder anzeigen


         // Suche war erfolgreich, also Farbe übernehmen
         frmmain.Panel1.Color:=tbstatus.FieldByName('farbe').AsString;

      end
      else
         frmmain.Panel1.Color:=clRed;
   end;
end;
Andreas
  Mit Zitat antworten Zitat