def set_label label
      # added case for user just using a string
      case label
      when String
        # what if no form at this point
        @label_unattached = true unless @form
        label = Label.new @form, {:text => label}
      end
      @label = label
      # in the case of app it won't be set yet FIXME
      # So app sets label to 0 and t his won't trigger
      # can this be delayed to when paint happens XXX
      if @row
        position_label
      else
        @label_unplaced = true
      end
      label
    end
def set_label label
      # added case for user just using a string
      case label
      when String
        # what if no form at this point
        @label_unattached = true unless @form
        label = Label.new @form, {:text => label}
      end
      @label = label
      # in the case of app it won't be set yet FIXME
      # So app sets label to 0 and t his won't trigger
      # can this be delayed to when paint happens XXX
      if @row
        position_label
      else
        @label_unplaced = true
      end
      label
    end
create a label linked to this field
 Typically one passes a Label, but now we can pass just a String, a label
 is created. This differs from +label+ in positioning. The +Field+ is printed on
 +row+ and +col+ and the label before it. Thus, all fields are aligned on column,
 however you must leave adequate columns for the label to be printed to the left of the field.

 NOTE: 2011-10-20 when field attached to some container, label won't be attached
 In such cases, use just +label()+ not +set_label()+.
 @param [Label, String] label object to be associated with this field
 @return label created which can be further customized.
 FIXME this may not work since i have disabled -1, now i do not set row and col 2011-11-5