- - * - WhiteUnicorn - * - -




* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >


Frequently Asked Questions

TCombobox drop down size.

Question:

How can I tell the actual size of a TComboBox in it's dropped down state before it drops down?

Answer:

During the FormShow event, send the combo box a CB_SHOWDROPDOWN

message twice, once to drop it down, and once to retract it. Then send

a CB_GETDROPPEDCONTROLRECT message, passing the address of a 

TRect. When the SendMessage call returns, the TRect will contain the

rectangle that would enclose the ComboBox in it's dropped down state,

relative to the screen. You can then call ScreenToClient to convert

the TRect's coordinates to be relative to the client area of the form.



Example:



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;




* #WhiteUnicorn/ StartPage/ Documentation/DelphiFAQ >



- - * - Anastasija aka WhiteUnicorn - * - - LJLiveJournal
PFPhotoFile