procedure SetFieldColor(Form: TForm; Field: TField); var i : integer; begin if Field <> nil then begin for i := 0 to Form.ComponentCount - 1 do if (Form.Components[i] is TDBEdit) and (TDBEdit(Form.Components[i]).Field <> nil) and (TDBEdit(Form.Components[i]).Field.FieldName=Field.FieldName) then begin if Field.AsInteger < 60 then TDBEdit(Form.Components[i]).Font.Color := clred else if Field.AsInteger <70 then TDBEdit(Form.Components[i]).Font.Color := clblue else TDBEdit(Form.Components[i]).Font.Color := clWindowText; end; end; end;procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid; Index: Integer); var i : integer; dum : TDBEdit; begin for i := 0 to TDBCtrlPanel(DBCtrlGrid.Controls[0]).ControlCount-1 do if (TDBCtrlPanel(DBCtrlGrid.Controls[0]).Controls[i] is TDBEdit) and (TDBEdit(TDBCtrlPanel(DBCtrlGrid.Controls[0]).Controls[i]).Field <> nil) and (TDBEdit(TDBCtrlPanel(DBCtrlGrid.Controls[0]).Controls[i]).Field.FieldName<>'姓名') then SetFieldColor(self,TDBEdit(TDBCtrlPanel(DBCtrlGrid.Controls[0]).Controls[i]).Field); end;procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); var i : integer; dum : TDBEdit; begin if (Table1<>nil) then begin for i := 0 to Table1.Fields.Count-1 do if Table1.Fields[i].FieldName <> '姓名' then SetFieldColor(self,Table1.Fields[i]); end; end;procedure TForm1.Button1Click(Sender: TObject); begin Table1.Close; Table1.Open; end; 記得執行時再 Open Table1 喔, 不然會如 Justmade 兄所說, Actived TDBCtrlPanel 有問題, 我也不知為何 ?
var i : integer;
begin
if Field <> nil then begin
for i := 0 to Form.ComponentCount - 1 do
if (Form.Components[i] is TDBEdit) and
(TDBEdit(Form.Components[i]).Field <> nil) and
(TDBEdit(Form.Components[i]).Field.FieldName=Field.FieldName) then begin
if Field.AsInteger < 60 then
TDBEdit(Form.Components[i]).Font.Color := clred
else if Field.AsInteger <70 then
TDBEdit(Form.Components[i]).Font.Color := clblue
else
TDBEdit(Form.Components[i]).Font.Color := clWindowText;
end;
end;
end;procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid;
Index: Integer);
var i : integer; dum : TDBEdit;
begin
for i := 0 to TDBCtrlPanel(DBCtrlGrid.Controls[0]).ControlCount-1 do
if (TDBCtrlPanel(DBCtrlGrid.Controls[0]).Controls[i] is TDBEdit) and
(TDBEdit(TDBCtrlPanel(DBCtrlGrid.Controls[0]).Controls[i]).Field <> nil) and
(TDBEdit(TDBCtrlPanel(DBCtrlGrid.Controls[0]).Controls[i]).Field.FieldName<>'姓名') then
SetFieldColor(self,TDBEdit(TDBCtrlPanel(DBCtrlGrid.Controls[0]).Controls[i]).Field);
end;procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
var i : integer; dum : TDBEdit;
begin
if (Table1<>nil) then begin
for i := 0 to Table1.Fields.Count-1 do
if Table1.Fields[i].FieldName <> '姓名' then
SetFieldColor(self,Table1.Fields[i]);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Close;
Table1.Open;
end;
記得執行時再 Open Table1 喔, 不然會如 Justmade 兄所說, Actived
TDBCtrlPanel 有問題, 我也不知為何 ?