一个跨平台的Golang GUI库,底层绑定自Delphi VCL和Lazarus LCL
从1.2.0版本开始govcl将最低要求go1.9。
注: linux和macOS由于底层使用了lcl库,则部分组件、属性和方法无效。
如果你想要支持linux arm及linux 32bit则需要自己编译对应的liblcl二进制。
res2go工具 注:用Delphi/Lazarus设计界面,用Golang写代码。
使用方法
go get github.com/ying32/govcl
- 方法一:
package main
import (
"github.com/ying32/govcl/vcl"
)
func main() {
vcl.Application.Initialize()
mainForm := vcl.Application.CreateForm()
mainForm.SetCaption("Hello")
mainForm.EnabledMaximize(false)
mainForm.ScreenCenter()
btn := vcl.NewButton(mainForm)
btn.SetParent(mainForm)
btn.SetCaption("Hello")
btn.SetOnClick(func(sender vcl.IObject) {
vcl.ShowMessage("Hello!")
})
vcl.Application.Run()
}
- 方法二:
package main
import (
"github.com/ying32/govcl/vcl"
)
type TMainForm struct {
*vcl.TForm
Btn1 *vcl.TButton
}
var (
mainForm *TMainForm
)
func main() {
vcl.Application.Initialize()
vcl.Application.SetMainFormOnTaskBar(true)
vcl.Application.CreateForm(&mainForm)
vcl.Application.Run()
}
func (f *TMainForm) OnFormCreate(sender vcl.IObject) {
f.SetCaption("Hello")
f.Btn1 = vcl.NewButton(f)
f.Btn1.SetParent(f)
f.Btn1.SetBounds(10, 10, 88, 28)
f.Btn1.SetCaption("Button1")
f.Btn1.SetOnClick(f.OnButtonClick)
}
func (f *TMainForm) OnButtonClick(sender vcl.IObject) {
vcl.ShowMessage("Hello!")
}
- 方法三:
package main
import (
"github.com/ying32/govcl/vcl"
)
type TMainForm struct {
*vcl.TForm
Btn1 *vcl.TButton
}
var (
mainForm *TMainForm
)
func main() {
vcl.Application.Initialize()
vcl.Application.SetMainFormOnTaskBar(true)
vcl.Application.CreateForm(mainFormBytes, &mainForm)
vcl.Application.Run()
}
func (f *TMainForm) OnFormCreate(sender vcl.IObject) {
}
func (f *TMainForm) OnBtn1Click(sender vcl.IObject) {
vcl.ShowMessage("Hello!")
}
方法三需要配合UI设计器或者res2go工具使用。
注意:
当使用"liblcl"库时,是以兼容"libvcl"库形式运行的,所以有部分组件和组件的方法、属性及事件不可用。
API文档
- Delphi VCL组件文档WIKI
- Lazarus LCL组件文档WIKI
- Windows API文档
-
Windows: 复制"libvcl.dll"或者"libvclx64.dll"或者“liblcl.dll”到当前exe目录或系统环境路径下。
-
Linux: 复制"liblcl.so"可执行文件目录下(也可复制liblcl.so到
/usr/lib/
目录中,作为公共库使用)。 -
MacOS: 复制"liblcl.dylib"可执行文件目录下(MacOS下注意:需要自行创建info.plist文件),或者参考:MacOS上应用打包