Hello All,
Greetings,
I have a requirement to show the values of combo-box values list into a text type fill-in as a toolTip on Mouse-hover(Not on click of combo-box value).
In above picture fill in should be showing "ccccccccccccccccccccccccc" instead of "bbbbbbbbbbbbbbbbbb"
Please suggest how i will achieve this,
Thanks
Shashank S. Singh
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.
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.
Thanks nborshukov, it is definitely helpfull for me.
One more thing, Can we use mouse-hover event using WindowAPI, I did it using radControlls (in Telerik), but not sure how to do it in Progress Classic GUI widget.
I'm not sure you can use mouse-hover in classic Progress GUI.