时间:2021-05-02
本文介绍了如何在PowerBuilder下制作特殊形状的数据窗口及按钮的方法。以下是全部源码,可以把整个窗口的源代码导入到PBL里自己运行一下试试。
$PBExportHeader$w_button.srwforwardglobal type w_button from windowend typetype cb_11 from commandbutton within w_buttonend typetype cb_10 from commandbutton within w_buttonend typetype em_3 from editmask within w_buttonend typetype em_2 from editmask within w_buttonend typetype em_1 from editmask within w_buttonend typetype cb_9 from commandbutton within w_buttonend typetype cb_8 from commandbutton within w_buttonend typetype cb_7 from commandbutton within w_buttonend typetype cb_6 from commandbutton within w_buttonend typetype cb_5 from commandbutton within w_buttonend typetype cb_4 from commandbutton within w_buttonend typetype cb_3 from commandbutton within w_buttonend typetype cb_2 from commandbutton within w_buttonend typetype cb_1 from commandbutton within w_buttonend typetype st_1 from statictext within w_buttonend typetype ws_position from structure within w_buttonend typeend forwardtype ws_position from structurelongxposlongyposend typeglobal type w_button from windowinteger width = 2400integer height = 1800boolean titlebar = truestring title = "特殊形状数据窗口演示"boolean controlmenu = trueboolean minbox = trueboolean maxbox = truelong backcolor = 17725690string icon = "AppIcon!"boolean center = truecb_11 cb_11cb_10 cb_10em_3 em_3em_2 em_2em_1 em_1cb_9 cb_9cb_8 cb_8cb_7 cb_7cb_6 cb_6cb_5 cb_5cb_4 cb_4cb_3 cb_3cb_2 cb_2cb_1 cb_1st_1 st_1end typeglobal w_button w_buttontype prototypesFUNCTION ulong CreateRoundRectRgn(Long x1, Long y1, Long x2, Long y2, Long x3, Long y3) library "gdi32"FUNCTION ulong CreatePolygonRgn (ref ws_position lppt[], int cPoints, int fnPolyFillMode ) Library "gdi32" FUNCTION ulong CreateEllipticRgn( Long x1, Long y1, Long x2, Long y2) library "gdi32"FUNCTION ulong SetWindowRgn(ulong hWnd,ulong hRgn,boolean bRedraw) LIBRARY "user32" FUNCTION ulong CombineRgn(Long hDestRgn, Long hSrcRgn1, Long hSrcRgn2, Long nCombineMode ) LIBRARY "gdi32"Function Long SetParent( Long hWndChild, Long hWndNewParent) library "user32"Subroutine keybd_event(long bVk, long bScan, long dwFlags, long dwExtraInfo) LIBRARY "user32.dll"end prototypesforward prototypespublic function integer of_set_oval (commandbutton acb_button)public function integer wf_set_color ()end prototypespublic function integer of_set_oval (commandbutton acb_button);
////////////////////////////////////////////////////////测试用数据(窗口多边形)////////////////////////////////////////////////////////long ll_x1, ll_x2, ll_x3long ll_y1, ll_y2, ll_y3long ll_handlell_x1 = 1ll_y1 = 1ll_x2 = UnitsToPixels(acb_button.width, xunitstopixels!)ll_y2 = UnitsToPixels(acb_button.height, yunitstopixels!)ll_x3 = 64ll_y3 = 64ll_handle = CreateRoundRectRgn(ll_x1, ll_y1, ll_x2, ll_y2, ll_x3, ll_y3)SetwindowRgn(handle(acb_button), ll_handle, true)return 1end functionpublic function integer wf_set_color ();long ll_red, ll_green, ll_bluelong ll_datall_red = long(em_1.text)ll_green = long(em_2.text)ll_blue = long(em_3.text)ll_data = rgb(ll_red, ll_green, ll_blue)this.backcolor = ll_dataem_1.backcolor = ll_dataem_2.backcolor = ll_dataem_3.backcolor = ll_datast_1.backcolor = ll_datareturn 1end functionon w_button.createthis.cb_11=create cb_11this.cb_10=create cb_10this.em_3=create em_3this.em_2=create em_2this.em_1=create em_1this.cb_9=create cb_9this.cb_8=create cb_8this.cb_7=create cb_7this.cb_6=create cb_6this.cb_5=create cb_5this.cb_4=create cb_4this.cb_3=create cb_3this.cb_2=create cb_2this.cb_1=create cb_1this.st_1=create st_1this.Control[]={this.cb_11,&this.cb_10,&this.em_3,&this.em_2,&this.em_1,&this.cb_9,&this.cb_8,&this.cb_7,&this.cb_6,&this.cb_5,&this.cb_4,&this.cb_3,&this.cb_2,&this.cb_1,&this.st_1}end onon w_button.destroydestroy(this.cb_11)destroy(this.cb_10)destroy(this.em_3)destroy(this.em_2)destroy(this.em_1)destroy(this.cb_9)destroy(this.cb_8)destroy(this.cb_7)destroy(this.cb_6)destroy(this.cb_5)destroy(this.cb_4)destroy(this.cb_3)destroy(this.cb_2)destroy(this.cb_1)destroy(this.st_1)end onevent mousemove;Send(handle(this), 274, 61458, 0)end eventtype cb_11 from commandbutton within w_buttoninteger x = 1216integer y = 1096integer width = 562integer height = 148integer taborder = 70integer textsize = -12integer weight = 700fontcharset fontcharset = gb2312charset!fontpitch fontpitch = variable!string facename = "宋体"string text = "半圆形花边"end typeevent clicked;////////////////////////////////////////////////////////测试用数据(窗口多边形)////////////////////////////////////////////////////////long ll_handle, ll_dataws_position lws_pointapi[]long ll_xpos, ll_ypos, ll_width, ll_heightlong ll_xnum, ll_ynumlong ll_x, ll_y, ll_flower = 20long ll_i, ll_kll_xpos = 1ll_ypos = 1ll_width = UnitsToPixels(parent.width, xunitstopixels!)ll_height = UnitsToPixels(parent.height, yunitstopixels!)ll_xpos = ll_xpos + 5ll_ypos = ll_ypos + 25 + ll_flowerll_width = ll_width - 20ll_width = ll_width - mod(ll_width - ll_xpos, ll_flower)ll_xnum = (ll_width - ll_xpos) / ll_flowerll_height = ll_height - 20ll_height = ll_height - mod(ll_height - ll_ypos, ll_flower)ll_ynum = (ll_height - ll_ypos) / ll_flowerlws_pointapi[1].xpos = ll_xpos + ll_flower / 2lws_pointapi[1].ypos = ll_ypos - ll_flower / 2lws_pointapi[2].xpos = ll_width + ll_flower / 2lws_pointapi[2].ypos = ll_ypos - ll_flower / 2lws_pointapi[3].xpos = ll_width + ll_flower / 2lws_pointapi[3].ypos = ll_height + ll_flower /2lws_pointapi[4].xpos = ll_xpos + ll_flower - ll_flower / 2lws_pointapi[4].ypos = ll_height + ll_flower/2ll_handle = CreatePolygonRgn(lws_pointapi[], 4, 1)for ll_i = 1 to ll_xnum + 1ll_y = ll_ypos - ll_flowerll_x = ll_xpos + ll_flower * ( ll_i - 1 )ll_data = CreateEllipticRgn(ll_x, ll_y, ll_x + ll_flower, ll_y + ll_flower)CombineRgn(ll_handle, ll_handle, ll_data, 2)nextfor ll_i = 1 to ll_ynum + 1ll_y = ll_ypos + ll_flower * ( ll_i - 1 )ll_x = ll_xpos + ll_flower * ll_xnumll_data = CreateEllipticRgn(ll_x, ll_y, ll_x + ll_flower, ll_y + ll_flower)CombineRgn(ll_handle, ll_handle, ll_data, 2)nextfor ll_i = 1 to ll_xnum + 1ll_y = ll_ypos + ll_flower * ll_ynumll_x = ll_xpos + ll_flower * (ll_xnum - ll_i + 1)ll_data = CreateEllipticRgn(ll_x, ll_y, ll_x + ll_flower, ll_y + ll_flower)CombineRgn(ll_handle, ll_handle, ll_data, 2)nextfor ll_i = 1 to ll_ynum + 1ll_y = ll_ypos + ll_flower * (ll_ynum - ll_i + 1)ll_x = ll_xposll_data = CreateEllipticRgn(ll_x, ll_y, ll_x + ll_flower, ll_y + ll_flower)CombineRgn(ll_handle, ll_handle, ll_data, 2)nextSetwindowRgn(handle(parent),ll_handle,true)end eventtype cb_10 from commandbutton within w_buttoninteger x = 1216integer y = 1096integer width = 562integer height = 148integer taborder = 60integer textsize = -12integer weight = 700fontcharset fontcharset = gb2312charset!fontpitch fontpitch = variable!string facename = "宋体"string text = "关闭窗口"end typeevent clicked;close(parent)end eventtype em_3 from editmask within w_buttonevent editchanged pbm_enchangeinteger x = 1289integer y = 104integer width = 251integer height = 92integer taborder = 60integer textsize = -9integer weight = 400fontcharset fontcharset = gb2312charset!fontpitch fontpitch = variable!string facename = "宋体"long textcolor = 33554432long backcolor = 17725690string text = "14"alignment alignment = right!borderstyle borderstyle = stylelowered!string mask = "###"boolean autoskip = trueboolean spin = truedouble increment = 5string minmax = "0~~255"end typeevent editchanged;wf_set_color()end eventtype em_2 from editmask within w_buttonevent editchanged pbm_enchangeinteger x = 1024integer y = 104integer width = 251integer height = 92integer taborder = 60integer textsize = -9integer weight = 400fontcharset fontcharset = gb2312charset!fontpitch fontpitch = variable!string facename = "宋体"long textcolor = 33554432long backcolor = 17725690string text = "120"alignment alignment = right!borderstyle borderstyle = stylelowered!string mask = "###"boolean autoskip = trueboolean spin = truedouble increment = 5string minmax = "0~~255"end typeevent editchanged;wf_set_color()end eventtype em_1 from editmask within w_buttonevent editchanged pbm_enchangeinteger x = 759integer y = 104integer width = 251integer height = 92integer taborder = 60integer textsize = -9integer weight = 400fontcharset fontcharset = gb2312charset!fontpitch fontpitch = variable!string facename = "宋体"long textcolor = 33554432long backcolor = 17725690string text = "250"alignment alignment = right!borderstyle borderstyle = stylelowered!string mask = "###"boolean autoskip = trueboolean spin = truedouble increment = 5string minmax = "0~~255"end typeevent editchanged;wf_set_color()end eventtype cb_9 from commandbutton within w_buttoninteger x = 590integer y = 1096integer width = 562integer height = 148integer taborder = 50integer textsize = -12integer weight = 700fontcharset fontcharset = gb2312charset!fontpitch fontpitch = variable!string facename = "宋体"string text = "圆形花边"end type
[1][2][3]下一页
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
我们有时候会看到一些精美的图表中,数据标记是一些特殊的形状,是怎么实现的呢?现在,我们就以折线图为例,讲解如何制作特殊数据标记的图表。 1、折线图已做好(
excel2003是一款办公软件,该软件在表格制作和数据统计方面是非常强大的,我们在使用该软件制作文本时,常常需要输入一些特殊的符号和形状,下面我们就来看看
在PB中编程实现打印并非一件易事,有时需要编写较多的代码才能够实现自己打印的需求,在这里介绍一个有关PB精确打印的知识。关于数据窗口每页打印固定行的问题: 1
WPS表格是一款办公软件,该软件在表格制作和数据统计方面是非常强大的,我们在使用该软件爱你制作文本时制作文本时,常常需要输入一些特殊的符号和形状,下面我们就来看
形状在WPF中形状继承自FrameworkElement类。因此,形状是元素,有如下好处。形状绘制自身。不需要管理无效的情况和绘图过程。例如,移动内容,改变窗口