Give a listbox a rounded border (Views: 720)
Problem/Question/Abstract: How to give a listbox a rounded border Answer: To round a ListBox use CreateRoundRectRgn to shape it. Reduce the client size to reposition back in place. Experiment with the rounding value. The greater the round value the smoother it is. Add a TListBox to a form procedure TForm1.RoundListbox(var TheList: TListbox); const schange = 5; rnd = 20; var thergn: HRGN; mclient: TRect; begin mclient := TheList.ClientRect; {get size} thergn := CreateRoundRectRgn(mclient.Left, mclient.top, mclient.right, mclient.bottom, rnd, rnd); TheList.BorderStyle := bsNone; InflateRect(mclient, -schange, -schange); {shrink} TheList.Perform(EM_SETRECTNP, 0, lparam(@mclient)); {change} SetWindowRgn(TheList.Handle, thergn, true); end; |