📄 disp.prg
字号:
******************************************************************
*
* 程序名: 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 + -