|Subject||Re: [IBO] Re: TIB_LookupCombo and 2 monitors|
Thanks for your comments Geoff.
The 1st monitor is the primary monitor. It has index 0 in screen.monitors[index]. As I face both monitors this is on my right.
The 2nd monitor has index 1.This is on my left. They are configured as "extended" in Win 10. Yes I am referring to the TIB_LookupCombo (LC) placement when it is dropped down.
In Win 10 and Delphi 10.1 Berlin and the latest IBO version 22.214.171.1241, if a LC is on the right side of a grid in a form showing on the 2nd monitor, and if its dropDownAlignment is daaLeft and if the width of the LC overflows the right edge of the form then the LC dropdown appears on the close edge of the 1st monitor whereas I expected it to show in the 2nd monitor because room is there. If it appeared as I expect then daaLeft alignment has to be overridden slightly. I think it would be expected that daaLeft means "try your best to align daaLeft".
If this happens when the form is inside the 1st monitor the LC dropped down appears naturally, at the left edge of its containing column.
My workaround for this LC is to set its alignment to daaRight.
You have suggested I look in IB_GRID.pas , TIB_LookupCombo.dropdown and scroll down to find SetWindowPos(...). I have it now. I was in IB_GRID earlier today and gave up too soon ... In the call to SetWindowPos(handle,topmost, left, Y, Wd, Ht, ..) the calculation of Left above the call to SetWindowPos(...), I am guessing, needs tuning.
The calculation of LeftPos is done in cases on FpopupAlignment, I observe there is no case for puLeft. Maybe adding one will correct this?
I'll look at this tomorrow.