Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Видеокурс программиста и крэкера 5D 2O17
(актуальность: октябрь 2O17)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



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

Программист после очень длительного сидения за компьютером выходит на улицу и смотрит на небо:
- Боже, у Тебя тоже Windows стоит?!

На событии 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;
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS