点击选中后出现8个点,离开焦点后擦除!

解决方案 »

  1.   

    procedure TChBox.Paint;
    const
      Alignments: array[TAlignment] of Longint = (DT_LEFT, DT_RIGHT, DT_CENTER);
      VAlignments: array[TVAlignment] of Longint = (DT_TOP, DT_BOTTOM, DT_VCENTER);
    var
      i:integer;
      Rect: TRect;
      Flags: Longint;
      Text: String;
    begin
      Rect := GetClientRect;
      with Canvas do
      begin
        Brush.Color := Color;
        if FTransparent then
            DoTrans(Canvas, self)
        else
          Rectangle(ClientRect);
        if FActive then
        begin
          if FCanResize then
          begin
            // 画六个小方块
            Brush.Color := clBlack;
            for i:= Low(FBlockRect) to High(FBlockRect) do
              Rectangle(FBlockRect[i]);
          end else begin
            // 画四个小方块
            Brush.Color := clGray;
            Rectangle(FBlockRect[HTTOPLEFT]);
            Rectangle(FBlockRect[HTBOTTOMLEFT]);
            Rectangle(FBlockRect[HTTOPRIGHT]);
            Rectangle(FBlockRect[HTBOTTOMRIGHT]);
          end;
        end;    if FDesignMode then
        begin
          if (FDefaultValue='') then
            Text := Caption
          else
            Text := FDefaultValue;
        end else begin
          Text := Caption;
        end;
        Brush.Style := bsClear;
        Font := Self.Font;
        if (FDataType in [dtSingleText,dtFixedText,dtNumber,dtCombo,dtPicture]) then
          Flags := DT_SINGLELINE or VAlignments[FVAlignment] or Alignments[FAlignment]
        else
          Flags := DT_LEFT or DT_TOP or DT_WORDBREAK;
        Flags := DrawTextBiDiModeFlags(Flags);
        Rect := Self.ClientRect;
        DrawText(Handle, PChar(Text), -1, Rect, Flags);
      end;
    end;参考以上代码,其中FActive代表是否选中状态
      

  2.   

    集成资源编辑器?是什么啊,刚学习不久,不太懂,我要做的功能就是在一个panel上拖动图片位置大小,需要一个显示效果!