Prueba con algo así; Tal como lo habías hecho debería funcionar:
Código Delphi
[-]
constructor TEntradaTxt.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FRequerido := False;
LabelPosition:= lpRight;
LabelSpacing := 4;
EditLabel.Font.Color:= clRed;
EditLabel.Caption:= ' ';
EditLabel.Invalidate;
end;
procedure TEntradaTxt.SetRequerido(lVal: Boolean);
begin
if lVal <> FRequerido then begin
FRequerido := lVal;
if lVal then begin
EditLabel.Caption:= '*'
end
else begin
EditLabel.Caption:= '';
end;
Invalidate;
end;
end;
Creo que el problema es dejar la cadena vacía en el Edit; Basta con que coloques un ESPACIO.
Por lo visto al dejarla vacía no le hace caso y vuelve a colocar el nombre.