Al final resultó ser una chorradilla...
Creé un fichero (suelo crearlo para meter en él todos los procedimientos "reutilizables") llamado unitFunciones que de momento solo contiene ésto:
Código:
unit UnitFunciones;
interface
uses Forms, StdCtrls;
procedure limpiar_detalle(frame: Tframe);
implementation
procedure limpiar_detalle(frame: Tframe);
var
i : integer;
begin
for i:=0 to frame.ComponentCount-1 do
begin
if (frame.Components[i] is TEdit) then
Tedit(frame.Components[i]).text := '';
if (frame.Components[i] is TCheckBox) then
TcheckBox(frame.Components[i]).checked := false;
if (frame.Components[i] is TMemo) then
TMemo(frame.Components[i]).text := '';
if (frame.Components[i] is TComboBox) then
begin
TComboBox(frame.Components[i]).text := '';
TComboBox(frame.Components[i]).itemindex := -1;
end;
end;
end;
La llamada la hago desde el init de cada uno de los frames, haciendo:
Código:
limpiar_detalle(FormPrincipal.FrameClientes1);
y voilá...
Si me hubiera puesto a investigar esto antes.. cuántas horas de trabajo me había ahorrado... El ultimo programa que hice tenía unos 20 frames, y limpiaba los campos uno a uno!!!.. no se cuantas líneas de código.. pero una burrada.. bueno, de los errores se aprende.
Gracias a todos.