现在能够通过mousedown中写FChildList.add(TControl(sender)),能够通过如下代码实现想要的效果,
但是如果是tedit等编辑控件选中后再单击一次后,画的8个点的状态就不见了,应该是再单击时触发了另外一个事件
重画了.
var
  R: TRect;
  sSelCtrl,sSelParent: TWinControl;
  I,k: Integer;
  P: array[0..7] of TPoint;
  DC: HDC;
begin
  for k := 0 to self.FChildList.Count - 1 do
  begin
    sSelCtrl := TWinControl(FChildList[k]);
    sSelParent := sSelCtrl;
    R := sSelCtrl.BoundsRect;
    
    R.Top := R.Top + sSelCtrl.Height;
    R.Bottom := R.Top + sSelCtrl.Height;
    R.Left := R.Left + 4;
    R.Right := R.Left + sSelCtrl.Width;    if sSelCtrl.Parent is TForm then
    begin
      R.Top := R.Top + 21;
      R.Bottom := R.Bottom + 21;
    end;
    FSelCtl.Clear;
    FSelCtl.SelPoints(R, P);    FSelCtl.DC := GetWindowDc(sSelCtrl.Parent.Handle;
    for I := 0 to 7 do
      FSelCtl.AddPoint(P[I].X, P[I].Y);
    FSelCtl.Paint;
  end;
end;