标题:在程序中如何根据字符长度确定字体大小?
取消只看楼主
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
结帖率:96.99%
已结贴  问题点数:20 回复次数:6 
在程序中如何根据字符长度确定字体大小?
在程序中如何根据字符长度确定字体大小,如字符长度超过12则字号设为8,其它为11号字。如在附件“学校日课总表2”中 自习2[蒋亚晨] 字号设为8,数学[蒋亚晨] 字号设为10,请高手帮忙,万分感谢!!!
生成每天课表.zip (56.37 KB)


*!* 生成学校日课总表任课教师姓名
CLEAR ALL
CLOSE ALL
SET TALK OFF
SET SAFETY OFF
CLOSE TABLES all
SET COMPATIBLE OFF

cCurrentProcedure = SYS(16,1)
nPathStart = AT(":",cCurrentProcedure)- 1
nLenOfPath = RAT("\", cCurrentProcedure) - (nPathStart)
mypath=SUBSTR(cCurrentProcedure, nPathStart, nLenofPath)
SET Default TO (mypath)


USE jsrkb20190101 IN 0 ALIAS jsrkb20190101
USE kb20190101 IN 0 ALIAS kb20190101
*!*    日课总表字段扩大
SELECT kb20190101
zds=FCOUNT()
jls=RECCOUNT()
GO top
FOR i=3 TO zds
rdx=field(i)
*IF LEN(&rdx)<15
*ALTER table rkzb alter &rdx C(15)
*ENDIF
ENDFOR
COPY STRUCTURE TO jsb
*!*    日课总表逐条记录处理
SELECT kb20190101
DIMENSION jsmain(zds)
jsmain=""
FOR x=1 TO jls &&逐条记录
* WAIT "正在处理 "+ALLTRIM(STR(x))+"//"+ALLTRIM(STR(jls)) WINDOW nowait
GO x
jsmain(1)=ALLTRIM(nj)
jsmain(2)=ALLTRIM(bj)
    FOR y=3 TO zds &&记录中每个字段
    rdy=field(y)
    rdy0=&rdy
        SELECT jsrkb20190101
        LOCATE FOR nj=jsmain(1) AND bj=jsmain(2)
        IF FOUND()
            q=0
            FOR z=3 TO zds
            rdz=field(z)
            IF rdz=ALLTRIM(rdy0)
            q=1
            EXIT
            ENDIF
            ENDFOR
            IF q=1
            *jsmain(y)=ALLTRIM(rdy0)+CHR(10)+ALLTRIM(&rdz)
            *jsmain(y)=ALLTRIM(&rdz)
            jsmain(y)=ALLTRIM(rdy0)+"["+ALLTRIM(&rdz)+"]"
            ELSE
            jsmain(y)=ALLTRIM(rdy0)
            ENDIF
        ELSE
        jsmain(y)=ALLTRIM(rdy0)
        ENDIF
    SELECT kb20190101   
    ENDFOR



*!*    结果输出到jsb
    INSERT INTO jsb FROM ARRAY jsmain
ENDFOR
*select jsb
*browse

*!* 生成每天日课总表
FOR m=1 TO 5
  SELECT jsb
  wjm=mypath+"\kbmb_"+STR(m,1)+".doc"
  FileName=mypath+"\学校日课总表"+STR(m,1)+".doc"   
  wordapp=CREATEOBJECT("word.application")
  wordapp.visible=.t.
  WordTable=wordapp.application.Documents.Open(wjm)
  FOR i=m*6-3 TO m*6+2
    FOR k=4 TO reccount()+3
      GO k-3
      WordCellText=EVALUATE(FIELD(i))
      IF EMPTY(WordCellText) OR ISNULL(WordCellText)
        WordCellText=" "
      ENDIF
      
      
      WordTable.Tables.item(1).Cell(k,i-6*(m-1)).Range.Text=WordCellText
      WordTable.Tables.item(1).Cell(k,i-6*(m-1)).Range.Font.Bold=.f.
      
      IF LEN("+WordCellText+")>12
       WordTable.Tables.item(1).Cell(k,i-6*(m-1)).Range.Font.Size=8
     ENDIF
     
    ENDFOR
  ENDFOR
  WordApp.Documents(1).SaveAs(FileName)  &&自动保存文件
  WordApp.quit
  RELEASE WordApp
ENDFOR
RETURN

[此贴子已经被作者于2021-11-9 13:42编辑过]

搜索更多相关主题的帖子: IF FOR 长度 SELECT 字符 
2021-11-09 13:37
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
2021-11-09 15:29
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
IF LEN("+WordCellText+")>12
       WordTable.Tables.item(1).Cell(k,i-6*(m-1)).Range.Font.Size=8
ENDIF
这几句不起作用,代码怎样改请高手赐教,万分感谢!!!
2021-11-09 15:32
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
这样表格所有内容都是8号字了。我想要的是:当字段内容超过12个字符时,设置单元格字号为8号字。
2021-11-09 18:46
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 

2021-11-10 10:36
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
上面占两行的内容,如何缩小字号,代码如何写,望高手赐教,万分感谢!!!
2021-11-10 10:38
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
增加下列两行代码问题可解决,但代码不具备通用性。
IF “自习1" $ WordCellText OR "自习2" $ WordCellText
   WordTable.Tables.item(1).Cell(k,i-6*(m-1)).Range.Font.Size=8
ENDIF
2021-11-10 19:41



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507450-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025823 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved