以下是引用xs591222在2014-8-24 20:29:06的发言:
能让TonyDeng出手写代码,看来楼主不简单……
能让TonyDeng出手写代码,看来楼主不简单……
错!T版经常给出代码的,我也是受益者之一。
你要有明确的需求,且这个需求应该是你动过脑筋仍无法解决的,T版通常都会出来相助的。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
程序代码:
* 确定
PROCEDURE Go
LOCAL lcStr, lcNumber, lcName, lnRow, lnCol
SELECT "居民信息"
SET ORDER TO "Master"
IF SEEK(ThisForm.cList)
lcStr = 楼栋号 + 单元号 + 楼层号 + 户室号 && 这就是自动生成的房号字符串,但里面是含有空格的
DO WHILE (ThisForm.cList $ lcStr) .AND. !EOF()
IF (楼栋号 + 单元号 + 楼层号 + 户室号 == lcStr) .AND. (ALLTRIM(户主关系) == "户主")
WITH = STRTRAN(楼栋号 + 单元号 + 楼层号 + 户室号, ' ', '0') && 这是把上面含有空格的房号字符串中的空格替换成0得到实际输出的房号串
lcName = "House_" + lcNumber
IF VARTYPE(.&lcName) != "O"
lnRow = INT(VAL(楼层号))
lnCol = INT(VAL(户室号))
.AddObject(lcName, "C_Household")
WITH .&lcName
.Arrange
.Top = .Parent.Height - lnRow * (.Height + 5)
.Left = (lnCol - 1) * (.Width + 5)
._Number = lcNumber
._Name = ALLTRIM(姓名)
.Visible = .T.
ENDWITH
ENDIF
ENDWITH
ENDIF
SKIP
IF (楼栋号 + 单元号 + 楼层号 + 户室号) != lcStr
lcStr = 楼栋号 + 单元号 + 楼层号 + 户室号
ENDIF
ENDDO
ENDIF
ENDPROC
