Как создать плоский (без границ) ComboBox? Простой пример такого решения:
Использование
[hr][/hr]
Для использования этого компонента нужно подключить модуль с этим кодом (если он, конечно, вынесен в отдельный модуль) в раздел uses. Затем в событии OnCreate формы создать этот компонент. Вот пример использования:
Есть и другие варианты, но это как один из них.
Код:
{ ... }
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;
[hr][/hr]
Для использования этого компонента нужно подключить модуль с этим кодом (если он, конечно, вынесен в отдельный модуль) в раздел 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.