On a windows based LOB application for data capturing. Is it better to hide a button completely when it is inactive, or simply show a disabled state for the button.
As with so many questions regarding UX the answer starts with 'It depends'. This is because UX is inevitably based in context and action.
Some arguments for using a disabled state:
Some arguments for hiding the button:
The questions you should ask yourself are
Remember that no screen is in isolation. Each frame helps tell the story. So if you can establish an idea or pattern previously the requirements for this screen may change.
While simplicity is a great goal (potentially supporting not showing the button) you should never simplify more than necessary. Therefore if the user needs to know about the existence of the button, or you need to build the context, you might need to consider it.
A good testing regime should tell you this.
I would suggest that hiding the button completely can add confusion for the user, as the other (unhidden) options might not make as much sense when you don't know the alternatives.
Allow me to give an example:
If the button which the user can see is "old" and there is an opposite button hidden - the hidden button could be "new" or "young" as they are both opposites of the same word.
OK, that's not an ideal example, but I do think users like to have a more complete holistic view of the situation they're in and hiding data may remove from that.
Some might say that if the other button is disabled it doesn't matter as the available option is still the same, but I would still argue that a user should be given as much information about their position in the UX as possible.
I agree with Jay that it depends. But here's one guideline you might want to consider: Only hide a button if the user's permissions determines they cannot do the button's action. This way each user will get a consistent view of the product, which may change from user to user.