Создание ComboBox без рамки
{ ... } TNoBorderComboBox = class(TComboBox) protected procedure WMPaint(var Msg: TMessage); message WM_PAINT; end; procedure TNoBorderComboBox.WMPaint(var Msg: TMessage); var C: TControlCanvas; R: TRect; begin inherited; C := TControlCanvas.Create; try C.Control := Self; with C do begin Brush.Color := clBtnFace; R := ClientRect; FrameRect(R); InflateRect(R, - 1, - 1); FrameRect(R); end; finally C.Free; end; end;
Использование
Для использования этого компонента нужно подключить модуль с этим кодом (если он, конечно, вынесен в отдельный модуль) в раздел uses. Затем в событии OnCreate формы создать этот компонент. Вот пример использования:
uses { ... } ; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; cb: TNoBorderComboBox; // Создаем переменную implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin cb:= TNoBorderComboBox.Create(Self); // Создание объекта cb.Parent:= Self; // Назначаем родителя cb.Left:= 100; // Координата X cb.Top:= 100; // Координата Y cb.Width:= 200; // Ширина cb.Text:= 'Flat ComboBox'; // Для проверки, чтобы не был пустым end; end.
Есть и другие варианты, но это как один из них.
Комментарии