⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 disp.prg

📁 包括了6个VFP程序设计实例
💻 PRG
📖 第 1 页 / 共 2 页
字号:
******************************************************************
*
*               程序名:  DISP.PRG
*
*                  功能:屏幕显示子程序库
*
*                  日期:1995年8月
*
*           版权所有:北京金国科技术公司 
*
*                  作者:常明海
*
*                  过程:1. DrawWinBorder -- 在窗口的边缘画立体框
*                             2. Draw3DText -- 显示文本(三维)
*                             3. Draw3DLine -- 画三维直线 
*                             4. Draw3DPanel -- 画三维Panel
*                             5. Draw3DFrame --  画三维框
*                             6. WinFontWidth -- 计算当前窗口字体宽度 
*                             7. WinFontHeight -- 计算当前窗口字体高度 
*                             8. GetWFontWH -- 计算窗口字体的宽度和高度
*                             9. GetFontWH -- 计算字体的宽度和高度
*
*********************************************************************                  

***  下面是函数调用的一些实例
***  DO Draw3DFrame WITH 1, 1, 10, 50, 1, 3, 0, 128, 128, 1
***  DO Draw3DPanel WITH 1, 1, 10, 50, 1, 30, 128, 0, 255, 0, .T.
***  DO Draw3DLine WITH 1, 1, 1, 20, 0
***  DO Draw3DLine WITH 5, 1, 5, 20, 1
***  DO Draw3DLine WITH 10, 1, 20, 1, 0
***  DO Draw3DLine WITH 10, 10, 20, 10, 1
***  DO Draw3DText  WITH 1, 1, "三维汉字", "黑体", 28, "BIT", 250, 0, 0, 255, 255, 255,0
***  DO Draw3DText  WITH 4, 1, "三维汉字", "黑体", 20, "BIT", 250, 0, 0, 255,255,255,1
***  DO Draw3DText  WITH 7, 1, "三维汉字", "黑体", 20, "BIT", 250, 0, 0, 255,255,255,2
***  DO Draw3DText  WITH 10, 1, "三维汉字", "黑体", 20, "BIT", 250, 0, 0, 255,255,255,3
***  DO Draw3DText  WITH 13, 1, "三维汉字", "宋体", 20, "BIT", 250, 0, 0, 255,255,255,4
***  DO Draw3DText  WITH 16, 1, "三维汉字", "宋体", 20, "BIT", 250, 0, 0, 255,255,255,5
***  DO Draw3DText  WITH 19, 1, "三维汉字", "宋体", 20, "BIT", 250, 0, 0, 255,255,255,6
***  DO Draw3DText  WITH 22, 1, "三维汉字", "宋体", 20, "BIT", 250, 0, 0, 255,255,255,7
***  DO Draw3DText  WITH 25, 1, "三维汉字", "宋体", 20, "BIT", 250, 0, 0, 0,0,0,8

********************************************************
*
*        过    程:DrawWinBorder
*
*        功    能:在窗口的边缘画立体框
*
*        参    数:无
*
********************************************************
PROCEDURE DrawWinBorder

     PRIVATE HDist, VDist

     m.HDist = 1 / WinFontWidth()
     m.VDist = 1 / WinFontHeight()

     DO Draw3DPanel WITH  0, 0, WROWS() - m.VDist, WCOLS() - m.HDist, 1, 2, 192, 192, 192, 0, .F.

RETURN

******************************************************************
*
*        过    程:Draw3DText
*
*        功    能:显示文本(三维)
*
*        参    数:top -- 垂直位置
*                        left -- 水平位置
*                        text -- 文本
*                        FontName -- 字体名
*                        FontSize -- 字体号
*                        FontStyle -- 字体风格(应包括'T')
*                        TextRColor -- 文本前景色   
*                        TextGColor -- 文本前景色   
*                        TextBColor -- 文本前景色   
*                        BackRColor -- 文本背景色   
*                        BackGColor -- 文本背景色   
*                        BackBColor -- 文本背景色   
*                        style - 三维风格(0,1,2,3,4,5,6,7,8)
******************************************************************
PROCEDURE Draw3DText
PARAMETER top, left, text, FontName, FontSize, FontStyle, TextRColor, TextGColor, TextBColor;
                       BackRColor, BackGColor, BackBColor, style

     PRIVATE ALL

     m.VDist = 1 / WinFontHeight()
     m.HDist = 1 / WinFontWidth()

     m.top = m.top + m.VDist
     m.left = m.left + m.HDist

    IF  m.style = 0
         @ m.top, m.left SAY m.text FONT m.FontName, m.FontSize STYLE m.FontStyle  COLOR RGB(m.TextRColor,m.TextGColor,m.TextBColor, m.BackRColor,m.BackGColor,m.BackBColor)  
         RETURN
    ENDIF
     
     @ m.top, m.left SAY m.text FONT m.FontName, m.FontSize STYLE m.FontStyle  COLOR RGB(m.BackRColor,m.BackGColor,m.BackBColor,,,,)

     DO CASE
           CASE m.style = 0
                     @ m.top, m.left SAY m.text FONT m.FontName, m.FontSize STYLE m.FontStyle  COLOR RGB(m.TextRColor,m.TextGColor,m.TextBColor,,,,)
           CASE m.style = 1
                     @ m.top - m.VDist, m.left - m.HDist SAY m.text FONT m.FontName, m.FontSize STYLE m.FontStyle  COLOR RGB(m.TextRColor,m.TextGColor,m.TextBColor,,,,)
           CASE m.style = 2
                     @ m.top - m.VDist, m.left SAY m.text FONT m.FontName, m.FontSize STYLE m.FontStyle  COLOR RGB(m.TextRColor,m.TextGColor,m.TextBColor,,,,)
           CASE m.style = 3
                     @ m.top - m.VDist, m.left + m.HDist SAY m.text FONT m.FontName, m.FontSize STYLE m.FontStyle  COLOR RGB(m.TextRColor,m.TextGColor,m.TextBColor,,,,)
           CASE m.style = 4
                     @ m.top, m.left - m.HDist SAY m.text FONT m.FontName, m.FontSize STYLE m.FontStyle  COLOR RGB(m.TextRColor,m.TextGColor,m.TextBColor,,,,)
           CASE m.style = 5
                     @ m.top, m.left + m.HDist SAY m.text FONT m.FontName, m.FontSize STYLE m.FontStyle  COLOR RGB(m.TextRColor,m.TextGColor,m.TextBColor,,,,)
           CASE m.style = 6
                     @ m.top + m.VDist, m.left - m.HDist  SAY m.text FONT m.FontName, m.FontSize STYLE m.FontStyle  COLOR RGB(m.TextRColor,m.TextGColor,m.TextBColor,,,,)
           CASE m.style = 7
                     @ m.top + m.VDist, m.left SAY m.text FONT m.FontName, m.FontSize STYLE m.FontStyle  COLOR RGB(m.TextRColor,m.TextGColor,m.TextBColor,,,,)
           CASE m.style = 8
                     @ m.top + m.VDist, m.left + m.HDist  SAY m.text FONT m.FontName, m.FontSize STYLE m.FontStyle  COLOR RGB(m.TextRColor,m.TextGColor,m.TextBColor,,,,)
     ENDCASE
                          
RETURN

******************************************************************
*
*        过    程:Draw3DLine
*
*        功    能:画三维直线
*
*        参    数:top, left -- 起始点
*                        bottom, right -- 终止点
*                        style - 风格(0凹或1凸)
*
*        备    注:1. 如果top等于bottom则画水平线,如果left等于right则画垂直线。 
*                       2.  top必须小于等于bottom, left必须小于等于right.
*
******************************************************************
PROCEDURE Draw3DLine
PARAMETER top, left, bottom, right, style

     PRIVATE ALL

     IF  (m.top > m.bottom) OR (m.left > m.right)
           RETURN 
     ENDIF 
     
     m.HDist = 1 / WinFontWidth()
     m.VDist = 1 / WinFontHeight()

    DO CASE
          CASE (m.top = m.bottom) AND (m.style = 0)    && 水平线,风格0(凹)
                    @ m.top, m.left TO m.top, m.right PEN 1, 8  STYLE "1"  COLOR RGB(128,128,128,128,128,128)             
                    @ m.top + m.VDist, m.left TO m.top + m.VDist, m.right PEN 1, 8  STYLE "1"  COLOR RGB(255,255,255,255,255,255)             
          CASE (m.top = m.bottom) AND (m.style = 1)    && 水平线,风格1(凸)
                    @ m.top, m.left TO m.top, m.right PEN 1, 8  STYLE "1"  COLOR RGB(255,255,255,255,255,255)             
                    @ m.top + m.VDist, m.left TO m.top + m.VDist, m.right PEN 1, 8  STYLE "1"  COLOR RGB(128,128,128,128,128,128)             
          CASE (m.left = m.right) AND (m.style = 0)    && 垂直线,风格0(凹)
                    @ m.top, m.left TO m.bottom, m.left PEN 1, 8  STYLE "1"  COLOR RGB(128,128,128,128,128,128)             
                    @ m.top, m.left + m.HDist TO m.bottom, m.left + m.HDist PEN 1, 8  STYLE "1"  COLOR RGB(255,255,255,255,255,255)             
          CASE (m.left = m.right) AND (m.style = 1)    && 垂直线,风格1(凸)
                    @ m.top, m.left TO m.bottom, m.left PEN 1, 8  STYLE "1"  COLOR RGB(255,255,255,255,255,255)             
                    @ m.top, m.left + m.HDist TO m.bottom, m.left + m.HDist PEN 1, 8  STYLE "1"  COLOR RGB(128,128,128,128,128,128)             
     ENDCASE
     
RETURN

***********************************************************************
*
*        过    程:Draw3DPanel
*
*        功    能:画三维Panel
*
*        参    数:top, left -- 左上角坐标
*                       bottom, right -- 右下角坐标
*                       style -- 风格(0或1)
*                       BorderWidth -- 边线宽度
*                       BackRColor -- 背景色
*                       BackGColor -- 背景色
*                       BackBColor -- 背景色
*                       ShadowColor -- 边框阴影颜色(0 -- 灰色, 1 -- 黑色, 2 -- 红色, 3 -- 黄色,
*                                                                        4 -- 绿色, 5 -- 青色, 6 -- 蓝色, 7 -- 橙色)
*                       outline -- 是否加上黑色边框(.T.或.F.)
*
***********************************************************************
PROCEDURE Draw3DPanel
PARAMETER  top, left, bottom, right, style, BorderWidth, BackRColor, BackGColor, ;
                        BackBColor, ShadowColor, outline

   PRIVATE ALL

   m.HDist = 1 / WinFontWidth()
   m.VDist = 1 / WinFontHeight()

   IF (m.top + 2 * m.BorderWidth * m.VDist > m.Bottom) OR (m.left + 2 * m.BorderWidth * m.HDist > m.right)
        RETURN
   ENDIF       

  @ m.top, m.left  TO  m.bottom, m.right  PATTERN  1  PEN 1, 8 ;
      COLOR RGB(BackRColor, BackGColor,  BackBColor, BackRColor, BackGColor, BackBColor)

   m.LTRColor = 0
   m.LTGColor = 0
   m.LTBColor = 0
   m.RBRColor = 0
   m.RBGColor = 0
   m.RBBColor = 0
       
   IF (m.style == 0)  
        DO CASE        
		CASE m.ShadowColor = 0    && 灰色   
		          m.LTRColor = 128
		          m.LTGColor = 128
		          m.LTBColor = 128
                        m.RBRColor = 255
                        m.RBGColor = 255
                        m.RBBColor = 255
                        
		CASE ShadowColor = 1    && 黑色   
		          m.LTRColor = 0
		          m.LTGColor = 0
		          m.LTBColor = 0
                        m.RBRColor = 255
                        m.RBGColor = 255
                        m.RBBColor = 255
                        
		CASE ShadowColor = 2    && 红色   
		          m.LTRColor = 128
		          m.LTGColor = 0
		          m.LTBColor = 0
                        m.RBRColor = 255
                        m.RBGColor = 0
                        m.RBBColor = 0

		CASE ShadowColor = 3    && 黄色   
		          m.LTRColor = 128
		          m.LTGColor = 128
		          m.LTBColor = 0
                        m.RBRColor = 255
                        m.RBGColor = 255
                        m.RBBColor = 0

		CASE ShadowColor = 4    && 绿色   
		          m.LTRColor = 0
		          m.LTGColor = 128
		          m.LTBColor = 0
                        m.RBRColor = 0
                        m.RBGColor = 255
                        m.RBBColor = 0

		CASE ShadowColor = 5    && 青色   
		          m.LTRColor = 0
		          m.LTGColor = 128
		          m.LTBColor = 128

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -