Varios - criando bordas redondas em varios componentes

Top  Previous  Next

procedure DrawRounded(Control: TWinControl);

var

  R: TRect;

  Rgn: HRGN;

begin

  with Control do

  begin

    R := ClientRect;

    rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 2020);

    Perform(EM_GETRECT, 0, lParam(@r));

    InflateRect(r, - 4, - 4);

    Perform(EM_SETRECTNP, 0, lParam(@r));

    SetWindowRgn(Handle, rgn, True);

    Invalidate;

  end;

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

 // rounding Panel1

  DrawRounded(Panel1);

 

  // rounding Memo1

  Memo1.BorderStyle := bsNone;

  DrawRounded(Memo1);

 

  // rounding Edit1

  Edit1.BorderStyle := bsNone;

  DrawRounded(Edit1);

 

  Edit2.BorderStyle := bsNone;

  DrawRounded(Edit2);

  Edit3.BorderStyle := bsNone;

  DrawRounded(Edit3);

end;