1 is correct (but without the Visible part) and 2 is correct. By setting the Caption property of the label that's the text that will get displayed automatically. The Visible property is for making a control/object visible, it doesn't affect the text.
I have the label default value as just a space. In the form on current event I set label visible to false. In each on got focus event I set the caption as well as visible to true, and on lost focus I set visible to false. It works great.