acabo de probar el codigo que mandas y me ha funcionado bien
Código:
with Sh do
begin
Canvas.FillRect(ClientRect);
Canvas.MoveTo(1, 1);
Canvas.LineTo(100,1);
Transparent := true;
Parent := Panel2;
end;
prueba a quitar la linea de "Transparent" para ver si realmente te crea la linea como tu la querias