| Subject |
Re: height of a text box |
| From |
Mustansir Ghor <mustan31@hotmail.com> |
| Date |
Sat, 04 Jun 2022 13:56:50 -0400 |
| Newsgroups |
dbase.getting-started |
Dear Mervyn Sir
Thank you.
This is nice. Asante
A new thing for me
Thank you Heinz
Regards
Mustansir
Mervyn Bick Wrote:
> On 2022/06/02 18:35, Mustansir Ghor wrote:
> > Dear Mervyn Sir
> >
> > Thank you.
> >
> > 1 pt is 1/72". The pt is font size indicates height of the text. Is there a formula related between the height and width of text.
>
> The height of a character is constant within a text object. Allowance
> is made for characters with descenders such as p and q and ascenders
> such as b and d together with space above and below. Simply multiplying
> the object height by a factor (new_fontsize/10) is all that is needed to
> ensure that the text fits in the object..
>
> When it comes to the width it's a whole different story. The default
> font for a text object is Ariel which is a proportional font. Each
> character has a different width which means that to determine the length
> of the string you need to know how much space to allow for each
> character. Life is much easier with monospace fonts as each character
> as the same width. The width can, however, be different for different
> fonts. In the attached example 12 Consolas characters fit into the
> default width of 12 characters. For all the other monospace fonts used
> in the example only 10 characters fit.
>
> Fortunately the text class has the getTextExtent() method. In theory,
> this should give you the value for the width property of a text object.
> In practice it needs a "fudge" factor so that there is enough room for
> the text. In the example I've use 1.1 as the factor.
>
>
> Mervyn.
>
>
> ** END HEADER -- do not remove this line
> //
> // Generated on 2022-06-03
> //
> parameter bModal
> local f
> f = new fontwidthForm()
> if (bModal)
> f.mdi = false // ensure not MDI
> f.readModal()
> else
> f.open()
> endif
>
> class fontwidthForm of FORM
> with (this)
> onOpen = class::FORM_ONOPEN
> metric = 0 // Chars
> height = 23.8182
> left = 11.0
> top = 0.9091
> width = 173.1429
> text = ""
> endwith
>
> this.TEXT1 = new TEXT(this)
> with (this.TEXT1)
> height = 1.0
> left = 4.7143
> top = 2.0909
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> text = "iiiiiiiiiiiiiiiiiiiiiiiiiiii"
> endwith
>
> this.TEXT2 = new TEXT(this)
> with (this.TEXT2)
> height = 1.0
> left = 4.5714
> top = 6.7273
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> text = "wwwwwwwww"
> endwith
>
> this.TEXT3 = new TEXT(this)
> with (this.TEXT3)
> height = 1.0
> left = 3.7143
> top = 12.9091
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> fontName = "Courier"
> text = "iiiiiiiiii"
> endwith
>
> this.TEXT4 = new TEXT(this)
> with (this.TEXT4)
> height = 1.0
> left = 3.7143
> top = 16.3636
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> fontName = "Courier"
> text = "wwwwwwwwww"
> endwith
>
> this.TEXT5 = new TEXT(this)
> with (this.TEXT5)
> height = 1.0
> left = 58.1429
> top = 2.0909
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> fontName = "Consolas"
> text = "iiiiiiiiiiii"
> endwith
>
> this.TEXT6 = new TEXT(this)
> with (this.TEXT6)
> height = 1.0
> left = 58.0
> top = 6.7273
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> fontName = "Consolas"
> text = "wwwwwwwwwwww"
> endwith
>
> this.ENTRYFIELD1 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD1)
> height = 1.0
> left = 45.4286
> top = 2.0909
> width = 8.0
> value = "Entryfield1"
> endwith
>
> this.ENTRYFIELD2 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD2)
> height = 1.0
> left = 45.2857
> top = 6.6364
> width = 8.0
> value = "Entryfield2"
> endwith
>
> this.ENTRYFIELD3 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD3)
> height = 1.0
> left = 45.7143
> top = 12.8182
> width = 8.0
> value = "Entryfield3"
> endwith
>
> this.ENTRYFIELD4 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD4)
> height = 1.0
> left = 45.7143
> top = 16.2727
> width = 8.0
> value = "Entryfield4"
> endwith
>
> this.ENTRYFIELD5 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD5)
> height = 1.0
> left = 106.5714
> top = 2.0909
> width = 8.0
> value = "Entryfield5"
> endwith
>
> this.ENTRYFIELD6 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD6)
> height = 1.0
> left = 106.4286
> top = 6.7727
> width = 8.0
> value = "Entryfield6"
> endwith
>
> this.TEXTLABEL1 = new TEXTLABEL(this)
> with (this.TEXTLABEL1)
> height = 1.0
> left = 5.0
> top = 0.3182
> width = 12.0
> text = "Ariel"
> endwith
>
> this.TEXTLABEL2 = new TEXTLABEL(this)
> with (this.TEXTLABEL2)
> height = 1.0
> left = 4.0
> top = 10.5455
> width = 12.0
> text = "Courier"
> endwith
>
> this.TEXTLABEL3 = new TEXTLABEL(this)
> with (this.TEXTLABEL3)
> height = 1.0
> left = 58.4286
> top = 0.3182
> width = 12.0
> text = "Consolas"
> endwith
>
> this.TEXT7 = new TEXT(this)
> with (this.TEXT7)
> height = 1.0
> left = 56.4286
> top = 12.9091
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> fontName = "Lucida Console"
> text = "iiiiiiiiii"
> endwith
>
> this.TEXT8 = new TEXT(this)
> with (this.TEXT8)
> height = 1.0
> left = 56.4286
> top = 16.3636
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> fontName = "Lucida Console"
> text = "wwwwwwwwww"
> endwith
>
> this.ENTRYFIELD7 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD7)
> height = 1.0
> left = 106.8571
> top = 12.9545
> width = 8.0
> value = "Entryfield7"
> endwith
>
> this.ENTRYFIELD8 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD8)
> height = 1.0
> left = 106.8571
> top = 16.4091
> width = 8.0
> value = "Entryfield8"
> endwith
>
> this.TEXT9 = new TEXT(this)
> with (this.TEXT9)
> height = 1.0
> left = 121.8571
> top = 2.0909
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> fontName = "Source Code Pro"
> text = "iiiiiiiiii"
> endwith
>
> this.TEXT10 = new TEXT(this)
> with (this.TEXT10)
> height = 1.0
> left = 121.7143
> top = 6.7273
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> fontName = "Source Code Pro"
> text = "wwwwwwwwww"
> endwith
>
> this.ENTRYFIELD9 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD9)
> height = 1.0
> left = 161.7143
> top = 2.0909
> width = 8.0
> value = "Entryfield9"
> endwith
>
> this.ENTRYFIELD10 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD10)
> height = 1.0
> left = 161.5714
> top = 6.6818
> width = 8.0
> value = "Entryfield10"
> endwith
>
> this.TEXTLABEL4 = new TEXTLABEL(this)
> with (this.TEXTLABEL4)
> height = 1.0
> left = 122.1429
> top = 0.3182
> width = 18.8571
> text = "Source Code Pro"
> endwith
>
> this.TEXTLABEL5 = new TEXTLABEL(this)
> with (this.TEXTLABEL5)
> height = 1.0
> left = 56.2857
> top = 10.5455
> width = 18.0
> text = "Lucinda Console"
> endwith
>
> this.TEXTLABEL6 = new TEXTLABEL(this)
> with (this.TEXTLABEL6)
> height = 1.0
> left = 122.2857
> top = 10.5455
> width = 12.0
> text = "Fira Mono"
> endwith
>
> this.TEXT11 = new TEXT(this)
> with (this.TEXT11)
> height = 1.0
> left = 122.7143
> top = 12.9091
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> fontName = "Fira Mono"
> text = "iiiiiiiiii"
> endwith
>
> this.TEXT12 = new TEXT(this)
> with (this.TEXT12)
> height = 1.0
> left = 122.7143
> top = 16.3636
> width = 12.0
> wrap = false
> alignVertical = 1 // Middle
> fontName = "Fira Mono"
> text = "wwwwwwwwww"
> endwith
>
> this.ENTRYFIELD11 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD11)
> height = 1.0
> left = 162.0
> top = 12.8636
> width = 8.0
> value = "Entryfield11"
> endwith
>
> this.ENTRYFIELD12 = new ENTRYFIELD(this)
> with (this.ENTRYFIELD12)
> height = 1.0
> left = 162.0
> top = 16.3182
> width = 8.0
> value = "Entryfield12"
> endwith
>
> this.COMBOBOX1 = new COMBOBOX(this)
> with (this.COMBOBOX1)
> onChange = class::COMBOBOX1_ONCHANGE
> height = 1.0
> left = 42.2857
> top = 20.2273
> width = 12.0
> dataSource = 'array {"10","15","20","25","30"}'
> style = 1 // DropDown
> endwith
>
> this.TEXTLABEL7 = new TEXTLABEL(this)
> with (this.TEXTLABEL7)
> height = 1.0
> left = 42.2857
> top = 18.7727
> width = 12.0
> text = "Font size"
> endwith
>
>
> function COMBOBOX1_onChange()
> for n = 1 to 12
> cmd = 'form.text'+n+'.fontsize := '+val(this.value)
> &cmd
> cmd = 'form.text'+n+'.height := ' + val(this.value)/10
> &cmd
> cmd = 'nLen = len(form.text'+n+'.text)'
> &cmd
> cmd = ' nExt = form.text'+n+'.getTextExtent(form.text'+n+'.text)'
> &cmd
> cmd = 'form.text'+n+'.width := nExt*1.1'
> &cmd
> next
> return
>
> function form_onOpen()
> for n = 1 to 12
> cmd = 'form.entryfield'+n+'.value := len(form.text'+n+'.text)'
> &cmd
> cmd = 'form.text'+n+'.border := true'
> &cmd
> next
> return
>
> endclass
>
|
|