| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5005 人关注过本帖
标题:VFP如何实现报表倒过来显示
只看楼主 加入收藏
弦外之语
Rank: 1
等 级:新手上路
帖 子:16
专家分:0
注 册:2015-8-31
收藏
得分:0 
回复 30楼 mywisdom88
他上传的 我测试了 是会颠倒过来的
2016-03-08 09:34
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
VFP 9.0 版会颠倒过来的。
还要设置两个环境变量和参数。

直接运行示例中的 颠倒报表.prg 文件。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-08 09:40
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用aaaaaa在2016-3-8 09:40:37的发言:

VFP 9.0 版会颠倒过来的。
还要设置两个环境变量和参数。

直接运行示例中的 颠倒报表.prg 文件。


我的是9.0 SP1,他要的是,字也倒过来的,不只是记录倒过来。
我是直接运行这个 颠倒报表.prg,如下图,记录是倒了,但字没倒。
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

2016-03-08 11:00
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10551
专家分:42993
注 册:2014-5-20
收藏
得分:0 
用报表监听器和GDI+示例
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
**
** 报表扩展功能示例(旋转)
**
CREATE CURSOR tt (ss C(10), ff I)
FOR i = 1 TO 10
    INSERT INTO tt VALUES (PADL(i, 10, "0"), i)
ENDFOR

oRL = CREATEOBJECT("myReportListener")
oRL.ListenerType = 1
REPORT FORM 报表扩展功能示例(旋转).frx OBJECT oRL

DEFINE CLASS myReportListener AS ReportListener
    DynamicLineHeight = .F.
    
    IsRotate = .F. 

    PROCEDURE Init
        DECLARE LONG GdipRotateWorldTransform    IN GDIPlus.Dll LONG, SINGLE, LONG
        DECLARE LONG GdipTranslateWorldTransform IN GDIPlus.Dll LONG, SINGLE, SINGLE, LONG
        DECLARE LONG GdipSaveGraphics            IN GDIPlus.DLL LONG, LONG@
        DECLARE LONG GdipRestoreGraphics         IN GDIPlus.DLL LONG, LONG
    ENDPROC 

    PROCEDURE BeforeBand(nBandObjCode, nFRXRecNo) 
        DODEFAULT(nBandObjCode, nFRXRecNo) 
        this.IsRotate = INLIST(nBandObjCode, 1, 4, 7)    && 标头、细节、注脚
    ENDPROC

    PROCEDURE AfterBand(nBandObjCode, nFRXRecNo)
        this.IsRotate = .F.
        DODEFAULT(nBandObjCode, nFRXRecNo)
    ENDPROC

    PROCEDURE Render(nFRXRecNo, nLeft, nTop, nWidth, nHeight,;
                     nObjectContinuationType, cContentsToBeRendered, GDIPlusImage) 
        LOCAL gState, x, y
        gState = 0
        IF this.IsRotate
            x = nLeft + nWidth    && 转点
            y = nTop
            GdipSaveGraphics(this.GDIPlusGraphics, @gState)
            GdipTranslateWorldTransform(this.GDIPlusGraphics, x, y, 0)
            GdipRotateWorldTransform (this.GDIPlusGraphics, -180, 0) && 逆转180度
            GdipTranslateWorldTransform(this.GDIPlusGraphics, -x, -y, 0)
        ENDIF
        DODEFAULT(nFRXRecNo, nLeft, nTop, nWidth, nHeight, ;
                  nObjectContinuationType, cContentsToBeRendered, GDIPlusImage)
        IF this.IsRotate
            GdipRestoreGraphics(this.GDIPlusGraphics, gState)
        ENDIF
        NODEFAULT 
   ENDPROC
ENDDEFINE 
2016-03-08 21:37
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
回复 34楼 吹水佬
吹斑的方便,不需要改报表。
就是不知道,如果数据很多的时候,速度处理等方面有无影响。
2016-03-09 16:04
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
以下是引用mywisdom88在2016-3-9 16:04:45的发言:

吹斑的方便,不需要改报表。
就是不知道,如果数据很多的时候,速度处理等方面有无影响。


如果不改报表,你用 26 楼 的示例,比对正向打印和颠倒打印,效果是否一样?

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-10 19:30
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3146
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用aaaaaa在2016-3-10 19:30:17的发言:



如果不改报表,你用 26 楼 的示例,比对正向打印和颠倒打印,效果是否一样?

我是用你26楼的,在我电脑上测试,就是我33楼发的图片,
记录会倒过来,但字体还是不倒。我不知道为什么,我的不行,你的行。。
2016-03-11 09:35
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
收藏
得分:0 
升级到 VFP 9.0 SP2 试试看,好像不应该是 SP1 的版本问题。
只能这么先试试看再说了。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-03-11 13:00
kzlsbyk
Rank: 1
等 级:新手上路
帖 子:11
专家分:6
注 册:2017-5-23
收藏
得分:0 
可能我还没说明白,我就是想把一个表中的记录在打印机上按从左到右的打印出,表头也在左面。因我的纸张属于190的
2017-05-24 09:06
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1528
专家分:180
注 册:2006-6-3
收藏
得分:0 
他的报表2设计有讲究。
2017-05-25 15:00
快速回复:VFP如何实现报表倒过来显示
数据加载中...
 
   



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

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