Lo que sugiero es que hagas una consulta de las materias inscritas por alumno, asi podras validar que una materia no se repita para un alumno.
Código Delphi
[-]
procedure TFmateria.CodigoMExit(Sender: TObject);
begin
with Query1 do
begin
Close;
SQL.Text:= 'SELECT * FROM BDmateria WHERE CodigoM =:CodigoM AND IDAlumno=:IdAlumno ';
ParamByName('IdAlumno').AsString:=IdAlumno.Text;
ParamByName('CodigoM').AsString:=CodigoM.Text;
Open;
if not IsEmpty then
begin
MessageDlg('Datos EXISTENTE',mtError,[mbOk],0);
CodigoM.SetFocus;
end;
end;
end;
Saludos cordiales