[Progress Communities] [Progress OpenEdge ABL] Forum Post: RE: Mouse-Hover on Combo-Box Value

Status
Not open for further replies.
N

nborshukov

Guest
Hi Shashank, Under Windows you can set combo-box drop down list width using Windows API. Here is a procedure, which can do job for you for list-items combo-box. It works with 32-bit OE. If you are using list-item-pairs combo-box you should modify it to manage item-pairs labels. You should call the procedure after combo-box is filled. &GLOBAL-DEFINE CB_SETDROPPEDWIDTH 352 DEFINE INPUT PARAMETER cb-handle AS HANDLE NO-UNDO. DEFINE VARIABLE n AS INTEGER NO-UNDO. DEFINE VARIABLE a AS CHARACTER NO-UNDO INITIAL "A". DEFINE VARIABLE wid AS INTEGER NO-UNDO INITIAL 0. DEFINE VARIABLE i AS INTEGER NO-UNDO. DEFINE VARIABLE res AS INTEGER NO-UNDO. n = cb-handle:NUM-ITEMS. IF n > cb-handle:INNER-LINES THEN a = FILL("А",4). /* add some space for vertical scroll-bar */ DO i = 1 TO n: wid = max(wid,FONT-TABLE:GET-TEXT-WIDTH-PIXELS(cb-handle:ENTRY(i) + a,cb-handle:FONT)). END. RUN SendMessageA (INPUT cb-handle:HWND, INPUT {&CB_SETDROPPEDWIDTH}, INPUT max(wid,cb-handle:WIDTH-PIXELS), INPUT 0, OUTPUT res). PROCEDURE SendMessageA EXTERNAL "USER32.DLL": DEFINE INPUT PARAMETER hwnd AS LONG NO-UNDO. DEFINE INPUT PARAMETER wmsg AS LONG NO-UNDO. DEFINE INPUT PARAMETER wparam AS LONG NO-UNDO. DEFINE INPUT PARAMETER lparam AS LONG NO-UNDO. DEFINE RETURN PARAMETER rc AS LONG NO-UNDO. END PROCEDURE.

Continue reading...
 
Status
Not open for further replies.
Top