In one of the early alphas of forms (Lonkero helped quite a bit in evolving forms, remember Jooel?) ... the Form had a property called BACKSTYLE = 0/1 that made it so that when text was printed using PRINT (no PRINTXY at the time) it printed it in an OPAQUE fashion ... overwriting any bits that were already there.

Most times I keep forgetting (even to this day) that printing text directly on a form is really "painting" text on the form ... just like drawing a circle or a rectangle ... once graphics get on the form, they stay on the form, at least until (like you say) the form is CLEARED or the BACKCOLOR is changed (or reset to the same color).

Having said all that, the BACKSTYLE property is pending in 2.0.4 ... im reserving it for transparent controls (like the transparent frame) ... it was a poorly chosen name anyways because the proper name should have been "FontTransparent" ... but because a Moderator is raising this issue i will implement FontTransparent this weekend in 2.0.5.

I myself have been moving away from creating simple labels that hold only one line of text. Easier and faster to just laydown a PRINTXY to identify a caption-less control (like a TEXTBOX) ... why use the extra resources (memory) when you don't have to eh ? Having said that, if the text is complex or multi-line or has to be justified in some way - the LABEL is the only way to go. Plus if the text changes (even once) - the Label pays for itself.

But back to printing ... the way (it used to (and will again)) work is like this:

code:
 
$Form.FontTransparent = FALSE

$Form.PrintXY(10,10,"Hello World")

; Now overwrite the text - tranparency is
; already turned off.

;
; Laydown a string of blanks - big enough to
; "cover-up" the largest string
;

$Form.PrintXY(10,10," ") ; Hi

$Form.PrintXY(10,10,"Hi !")

Something like that anyway. I'll add FontTransparent to the list for this weekend.

[ 13. September 2002, 19:14: Message edited by: Shawn ]