Карта сайтаСсылкиКонтакты

Создание ComboBox без рамки

PDF Печать
Статьи

Как создать плоский (без границ) 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.

Есть и другие варианты, но это как один из них.


 

Добавить комментарий


Защитный код
Обновить