Hola donpedro: Antes que nada no se que tipo de base de datos estas usando y mucho menos su estructura. Ahora bien, en algun lugar lei que ya estas cerca de finalizar tus estudios de informatica por lo tanto "solo expondre" la idea de lo que YO haria:
1.- Usaria una ventana similar a la carga de datos pero lo que deberias hacer es levantar del curso las materias y colocarlas en el listbox
Código Delphi
[-] MateriasDeCurso.First
While not MateriasDeCurso.Eof do
Begin
If campoCodigoMateriaDeCurso = BuscadoPorEdit then
Begin
ListBox2.items.Add(MateriaCodigoyDetalle);
end;
MateriasDeCurso.Next;
end;
2.- Hace las incorporaciones nuevas y van a ir agregandose al final del listbox2
3.- Grabar... Pero no tan facil
Debes recorrer el listbox y fijarte cual es la que agregaste, si quieres puedes usar el metodo locate de modo que si lo encuentra pasa al siguiente elemento del listbox y si no lo graba.-
Ahh! el locate puede dar un valor booleano, es decir puedes usarlo así:
Código Delphi
[-] If Not MateriasDeCurso.Locate(LoQueBuscas) then
GraboNuevo
else
SiguienteDeLaLista
Nuevamente: Estoy dando ideas a ciegas, No conozco ni la base ni la estructura y puede ser que tambien debas hacer muchas mas comprobaciones antes de guardar, por ejemplo si cambia las materias ya guardadas o le cambian el nombre, etc. etc...
En definitiva y tal vez sea demasiado bruto pero hay que hacer muchas cosas en papel (Analisis, posibilidades, diagramas) antes de escribir el codigo, algo que seguramente tu ya lo sabes
Bueno cualquier cosa estamos aquí.
Saludos.-