also mit dem code bekomme ich erstmal keine Fehlermeldung,
Delphi-Quellcode:
procedure Tfrmdata.dsauftragDataChange(Sender: TObject; Field: TField);
begin
if Assigned(Field) then
if Field.FieldName='Status' then
begin
Assert(tbstatus.Active);
if tbstatus.Locate('status', Field.Value,[]) then
begin
{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').asinteger;
end
else
frmmain.Panel1.Color:=0;
end;
end;
allerdings verändert sich bei einer Statusänderung die Panelfarbe auch nicht.
Ich hab das Ganze jetzt spaßenshalber mal in ner anderen Prozedur versucht.
Ich hab ein extra dbedit mit dem Status in der tabelle auftrag verbunden und den folgenden code in dessen onchange-ereignis eingetragen:
Delphi-Quellcode:
procedure Tfrmmain.edstatuscontrolChange(Sender: TObject);
begin
Panel1.Color:=frmdata.tbstatus.fieldbyname('farbe').AsInteger;
end;
Das Ergebnis war das gleiche wie in dem datasouce.onchangedata - "das feld kann nicht gefunden werden".