通过golang+vcl组合进行开发使用Lazarus IDE界面窗口绘画,通过go做业务逻辑开发。
关注公众账号,在公众账号输入关键词"bmstudy"自动回复下载地址连接。连接中含有源代码及windows下的可执行文件包
01
安装Lazarus IDE及res2go插件包
https://gitee.com/ying32/govcl/wikis
关注Lazarus IDE和res2go插件安装章节,安装lazarus软件
02
实战开发过程
保密学习背诵试题都是纸质的,对于我这种什么都喜欢在电脑上学习的人来说感觉不习惯,基于此开发一个保密学习的小软件。能够按照题型、试卷类型分组学习,同时学习时能够隐藏、显示答案对照背诵结果。
窗口界面开发
打开Lazarus软件,并拖拽组件,构建窗口
两个窗口,一个主窗口,选择题型或试卷,点击后进入试题学习窗口,能够查看所有类型的试题。上一题、下一题、查看隐藏答案、重新选题,回到主窗口。
调整窗口中各组件的布局,设置好组件的属性
设置插件导出转化的go代码
project菜单-> Project Options设置项目,设置res2go
-
Enabled Convert确定转化go代码勾选
-
Output Path设置go项目代码地址
-
Package Name 包名称
-
OutputLang选择go语言
-
勾选Use Tempdll
-
Build mode 选择可执行exe文件
-
GOROOT 和环境变量设置的GOROOT相同
设置完上面内容选择全部保存,点击运行编译,自动生成go代码,生成代码如下:
自动生成main.go入口文件、syso文件及gui下的窗口go代码
如果没有syso文件执行文件拷贝其它人机器上不能运行,自动生成syso文件避免自己写复杂的main.manifest文件。
主要代码说明
通过网盘下载后,找到【源代码】目录,在自己的go项目地址src目录下创建bm目录,拷贝源代码到bm目录运行
主窗口组件绑定事件
func (f *TMainForm) OnFormCreate(sender vcl.IObject) {
f.FillBtn.SetOnClick(f.OnFillBtnClick)
f.ShortAnswerBtn.SetOnClick(f.OnShortAnswerBtnClick)
f.QuestionAnswerBtn.SetOnClick(f.OnQuestionAnswerBtnClick)
f.ExamBaseBtn.SetOnClick(f.OnExamBaseBtnClick)
f.ExamCertBtn.SetOnClick(f.OnExamCertBtnClick)
f.ExamStandBtn.SetOnClick(f.OnExamStandBtnClick)
f.ExamUserBtn.SetOnClick(f.OnExamUserBtnClick)
}
学习窗口组件属性设置和事件绑定
func (f *TStudyForm) OnFormCreate(sender vcl.IObject) {
f.PrevBtn.SetEnabled(false)
f.NextBtn.SetEnabled(true)
f.ViewAnswerBtn.SetChecked(true)
f.ViewAnswerBtn.SetCaption(VIEW_HIDE_TITLE)
f.CurrentLblVal.SetCaption("1")
f.SetOnClose(f.OnFormClose)
f.ResetBtn.SetOnClick(f.OnResetBtnClick)
f.PrevBtn.SetOnClick(f.OnPrevBtnClick)
f.NextBtn.SetOnClick(f.OnNextBtnClick)
f.ViewAnswerBtn.SetOnChange(f.OnViewAnswerBtnChange)
f.SetOnShow(f.OnFormShow)
}
入口文件main.go
package main
import (
"bm/gui"
"github.com/ying32/govcl/vcl"
)
func main() {
defer func() {
err := recover()
if err != nil {
vcl.ShowMessage(err.(error).Error())
}
}()
vcl.Application.SetScaled(true)
vcl.Application.SetTitle("保密学习")
vcl.Application.Initialize()
vcl.Application.SetMainFormOnTaskBar(true)
vcl.Application.CreateForm(&gui.MainForm)
vcl.Application.CreateForm(&gui.StudyForm)
gui.MainForm.SetDoubleBuffered(true)
vcl.Application.Run()
}
运行或调试
// 出现控制台能够查看标准输出作为调试使用
go build -buildmode=exe -tags="tempdll" -o "debug.exe"
// 隐藏控制,执行运行窗口程序
go build -buildmode=exe -ldflags="-H windowsgui" -tags="tempdll" -o "保密学习.exe"
03
演示效果
通过网盘下载后,找到【执行文件】目录,双击【保密学习.exe】文件
打开保密学习软件
选择不同题型,不同试卷类型,点击按钮,进入学习窗口自动隐藏主窗口
学习窗口,现在该类型题目总数,当前学习的题数、题型等信息。同时点击上一题、下一题查看该组的其它题。点击【隐藏答案】,隐藏下面答案,按钮变成【查看答案】。点击【重新选题】回到主窗口,重新选择。
原文始发于微信公众号(数据安全治理技术):golang开发的二级保密学习小软件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论