1. Mark Hulser
  2. PowerBuilder
  3. Thursday, 05 October 2017

Like many other developers, I have created a user control to be a command button.  Yes, it's because of that whole look-and-feel thing.

Has anyone figured out how to implement the "Default Button" behavior that the system command button allows?

I know I can get the "KeyDown", but isn't that specific to the object that currently has focus?  Is there a better/easier way?

Mark Hulser

Olan Knight Accepted Answer Pending Moderation
0
Votes
Undo

In your object, have your default option - whether it is YES, NO, or something else - created twice: once as the default option, with thick borders and a shaded perspective, and once as a normal option with normal borders and a normal perspective. Set the option you want to the user to see as VISIBLE and ENABLED, and the other option as NOT VISIBLE and DISABLED.

You can manipulate which version the user sees from within code, as well.


Olan

 

Comment
I understand that from a visual perspective, but I'm looking for the behavior that if the user hits the Enter key, the button (i.e. user control) fires, like a real command button with the "Default" option checked.



Mark

  1. Mark Hulser
  2. Thursday, 5 October 2017
Oh, in that case you want it to fire only if the object has focus, especially if there are other objects on the window each with their own command buttons.



You've already noted how to do this. In the KEYDOWN event of the object capture the ENTER key and invoke the desired event or function.



Now if you want to do this more globally. or if you have multiple objects each with their own default key, put code in the KEYDOWN event of the WINDOW. When it is triggered, check the object that has focus and invoke the appropriate object.event_or_function.



 



Olan

  1. Olan Knight
  2. Thursday, 5 October 2017
There are no comments made yet.
  1. Thursday, 5 October 2017
  2. PowerBuilder
  3. # 1
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.