What element did I clicked on?



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 04/03/2005 at 07:08, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   8.x 
    Platform:   Windows  ; Mac  ;  Mac OSX  ; 
    Language(s) :   C.O.F.F.E.E  ;

    ---------
    I finaly got the scrolling list of items working (more or less ;-)
    I populated it with text, using AddStaticText.
    Now, how do I get to know in what element the user clicked?
    Until now I wrote this:

      
    PluginDialog::Message(msg)  
    {var dev,chn;  
      
    dev = msg->GetData(BFM_INPUT_DEVICE);  
    if (dev == BFM_INPUT_MOUSE)  
    {  
       chn = msg->GetData(BFM_INPUT_CHANNEL);  
      
       if (chn == BFM_INPUT_MOUSELEFT)  
        {  
            ***WHAT GOES HERE???***  
        }  
       }  
       return super::Message(msg);  
    }  
    

    Each static item has its own ID. Is there any way to know what was the clicked static text item?

    Rui Batista



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 04/03/2005 at 07:32, xxxxxxxx wrote:

    You can use GeDialog::GetItemHeight() etc. to know where each fieldis. Then you have to check the X/Y position of the event (look in the container) against this for each ID.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 04/03/2005 at 07:35, xxxxxxxx wrote:

    My text is inside a Scroll group. What if I have the scroll slider on another position?

    Rui Batista



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 04/03/2005 at 07:37, xxxxxxxx wrote:

    GetVisibleArea()



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 04/03/2005 at 07:58, xxxxxxxx wrote:

    Thank you Mikael. Will give it a try :-)

    Rui Batista



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 04/03/2005 at 10:27, xxxxxxxx wrote:

    Ok, I have this:

      
    GetVisibleArea(GROUP_SCROLL,&x;,&y;,&w;,&h;);  
    h=GetItemHeight(5000);  
    click=msg->GetData(BFM_INPUT_Y);   
    selected=ceil((y/h)-(click/h));  
    

    Item with ID 5000 is the Static Text item. They are all the same size. Must I add it any other value? Like, the spacing between group elements?
    How can I identify which one was clicked?
    Also, when I resize the window down and the scroll group shows a slider, it gets tougher to click on item as the cursor tends to change into a hand, to scroll. Can that be turned off?

    Rui Batista



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 04/03/2005 at 10:32, xxxxxxxx wrote:

    When I said etc. I meant the other GetElement...() functions described in the documentation. For example GetElementX().
    You might be able to avoid the cursor change by using SetMousePointer(). I haven't tried, so perhaps it doesn't work or flickers. In that case the answer is no.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 04/03/2005 at 10:41, xxxxxxxx wrote:

    "When I said etc. I meant the other GetElement...() functions described in the documentation. For example GetElementX()."

    Now you got me, Mikael. I can't find and GetElement... in the docs. I only have Static Text items inside the scroll group. And they are all simple filenames, so they are short (single line strings).

    Rui Batista



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 04/03/2005 at 11:12, xxxxxxxx wrote:

    When I said Element, I meant Item... :-)
    Have a look in the docs for GeBaseDialog. You'll find lots of useful functions in there.


Log in to reply