我在visual foxpro中编写了一个程序,我试图在表格中对齐一些数据。现在它看起来像这样:
============================================================================
No. Last Name | Number book | Price |
=====================================================================================
| 1 | JOHN SMITH | ISBN12345678945643489 | 26 |
-------------------------------------------------------------------------------------
| 2 | SAMUEL LEE JACKSON | ISBN1466487264826384 | 208 |
我正在尝试正确对齐所有列。但如果名称更长或更短,那么第二个单元格也会移动。
我正在使用的代码行是:
? '|',STR(N,4),'|',(ALLTRIM(NAME)),'| ',ALLTRIM(BOOKNO),'|',+STR(PRICE,7),' |'
我给这个名字最多30个字符。
答案 0 :(得分:3)
您可以使用PadL()/ PadR()从单个字符串或数字表达式中获取大小相等的字符串。
对于列对齐,由于您的代码看起来好像要在VFP _screen
或Form
之类的内容上输出,因此您需要使用单倍间距字体在那个对象上。
命令窗口示例:
lcPreviousFont = _screen.FontName
_screen.FontName = "Courier"
SCAN
? TEXTMERGE("|<<PADR(n, 4)>>|<<PADR(name, 20)>>|<<PADR(bookno, 30)>>|<<PADL(price, 7)>>|")
ENDSCAN
_screen.FontName = m.lcPreviousFont