【PB案例学习笔记】-25制作一个带底图的MDI窗口

写在前面

这是PB案例学习笔记系列文章的第25篇,该系列文章适合具有一定PB基础的读者。

通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。

文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git

gitee代码仓库

需要源代码的小伙伴们可以自行下载查看,后续文章涉及到的案例代码也都会提交到这个仓库【pb-project-example

如果对小伙伴有所帮助,希望能给一个小星星⭐支持一下小凡。

一、小目标

通过本案例我们将制作一个带有底图的MDI窗口。通过这个案例我们可以制作出带底图的窗口,使窗口更加美观

二、创作思路

一般来说,在MDI窗口中无法放入底图,但通过本案例,我们建立一个标准的窗口来加载图片,MDI窗口启动时,打开这个窗口,就如同在MDI窗口中加载图片一样。最终效果如下

图片mdi

三、创建程序基本框架

① 新建examplework工作区

② 新建exampleapp应用

③ 新建w_main窗口,将其Title设置为主窗口

由于文章篇幅原因,以上步骤不再赘述,如果忘记怎么操作的小伙伴可以翻一翻该系列第一篇文章

④ 新建w_pic窗口

将窗口的Visible属性设置成True,其他属性均为False WindowType属性设置为popup!,并在窗口中添加Picture

控件,将其命名为p_1,如下图所示

w_pic窗口

⑤ 新建w_sheet 窗口

将其Title属性设置成“子窗口”

w_sheet子窗口

⑥新建m_main菜单,如下图所示

m_main菜单

四、编写w_pic代码

① 在w_pic窗口中定义实例变量,代码如下

boolean    isFullScreen
integer      oldwidth,oldheight

在窗口中定义实例变量

② 在w_pic窗口中定义init函数init(string as_picture,boolean as isfullscreen) returns (none)代码如下

p_1.OriginalSize	= true
p_1.pictureName = as_picture

oldheight = p_1.height
oldwidth = p_1.width

p_1.originalSize = false

this.resize(this.width,this.height)

③ 在w_pic窗口的open事件中添加如下脚本

isfullscreen = true
oldheight = p_1.height
oldwidth = p_1.width

④ 在w_pic窗口中添的Resize事件中添加如下代码

p_1.setredraw(false)

if isFullScreen then
	p_1.x = 0
	p_1.y = 0
	p_1.resize(newwidth,newheight)
else
	p_1.resize(oldwidth,oldheight)
	
	integer ax,ay
	
	ax = (newwidth - oldwidth) / 2
	if ax < 0 then ax = 0
	ay = (newheight - oldheight) / 2
	if ay < 0 then ay = 0
	
	p_1.x = ax
	p_1.y = ay
end if

p_1.setredraw(true)

五、编写w_main窗口代码

① 在w_main窗口中添加实例变量

w_pic               mdipicture
string       mdiPictureName
boolean     mdiIsFullScreen

② 在w_main中定义如下函数

setpicture (string as_picture,boolean as_isfullscreen) returns (none),具体代码如下

mdipicturename = as_picture
mdiisfullscreen = as_isfullscreen

if isvalid(mdipicture) then 
	mdipicture.init(mdipicturename,mdiisfullscreen)
	mdipicture.resize(this.width,this.height)
end if

③ 在w_main窗口的Resize事件中添加如下代码

if isvalid(mdiPicture) = false then
	opensheet(mdipicture,this)
	mdipicture.init(mdipicturename,mdiisfullscreen)
	mdipicture.x = 0
	mdipicture.y = 0
end if
mdipicture.resize(newwidth,newheight)

六、编写m_main菜单代码

① 在m_main菜单的Open命令的Clicked事件中添加如下代码

w_sheet sheet
opensheet(sheet,parentwindow)

open菜单添加代码

② 在m_main 菜单的Exit命令的Clicked事件中添加如下代码

CLOSE(PARENTWINDOW)

exit添加如下代码

③ 在m_main 菜单的Layer命令的Clicked事件中添加如下代码

parentwindow.ArrangeSheets ( Layer!  )

④ 在m_main 菜单的Cascade命令的Clicked事件中添加如下代码

parentwindow.ArrangeSheets ( Cascade!   )

七、exampleapp应用Open添加如下代码

①开发界面左边的System Tree窗口中双击exampleapp应用,在其Open事件中输入如下代码

OPEN(w_main)
w_main.setpicture("back.bmp",true)

② 在根目录下准备back.bmp图片

根目录下准备图片

back.bmp图片

八、运行程序

经过上面一堆操作,代码编写后。来检验一下我们的劳动成果

图片mdi

本期内容到这儿就结束了, ★,°:.☆( ̄▽ ̄)/$:.°★ 。 希望对您有所帮助

我们下期再见 (●’◡’●) ヾ(•ω•`)o

  • 49
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员晓凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值