На главную
Подписка
Новости


Рейтинг@Mail.ru











Главная / DELPHI / Часто задаваемые вопросы и ответы на них / Компоненты / Как узнать размеры TComboBox с показанным выпадающим списком до показа списка? Сделать домашней страницей Добавить в избранное Написать писмо

Как узнать размеры TComboBox с показанным выпадающим списком до показа списка?


На событии FormShow пошлите сообщение CB_SHOWDROPDOWN в ComboBox дважды - один раз чтобы заставить список выпасть, второй - чтобы убрать его. Затем пошлите сообщение CB_GETDROPPEDCONTROLRECT, передав в качестве параметра адрес TRect. TRect будет содержать экранные кординаты прямоугольника описывающего ComboBox вместе с выпавшим списком. Затем Вы можете вызвать ScreenToClient чтобы преобразовать экранные кординаты в координаты клиентской области окна.
Пример:

var
   R : TRect;
procedure TForm1.FormShow(Sender: TObject);
var
   T : TPoint;
begin
   SendMessage(ComboBox1.Handle, CB_SHOWDROPDOWN, 1, 0);
   SendMessage(ComboBox1.Handle, CB_SHOWDROPDOWN, 0, 0);
   SendMessage(ComboBox1.Handle, CB_GETDROPPEDCONTROLRECT, 0, LongInt(@r));
   t := ScreenToClient(Point(r.Left, r.Top));
   r.Left := t.x;
   r.Top := t.y;
   t := ScreenToClient(Point(r.Right, r.Bottom));
   r.Right := t.x;
   r.Bottom := t.y;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   Form1.Canvas.Rectangle(r.Left, r.Top, r.Right, r.Bottom );
end;


Источник: Дельфи. Вокруг да около.


Copyright ©   "Мастера DELPHI"   E-mail:   delphi@mastak.com  http://www.delphimaster.ru
Источник получения информации: http://www.delphimaster.ru
Hosted by uCoz