govcl: 【本仓库用于同步github上的仓库,以防止无法访问github时使用,因为Go包路径问题,千万不要直接go get本项目,如要引用此仓库应该先在“%GOPATH%\src”目录中建立“github.com\ying32”目录然后再在ying32目录中使用git clone本仓库】Golang绑定Lazarus LCL。致力于小而原生。支持Windows、Linux、MacOS。一般问题可看看wiki及README.md。代码迁移到 https://github.com/ying32/govcl 了,另外WIKI跟附件将继续保留在本项目中。

您所在的位置:网站首页 lazarus组件下载 govcl: 【本仓库用于同步github上的仓库,以防止无法访问github时使用,因为Go包路径问题,千万不要直接go get本项目,如要引用此仓库应该先在“%GOPATH%\src”目录中建立“github.com\ying32”目录然后再在ying32目录中使用git clone本仓库】Golang绑定Lazarus LCL。致力于小而原生。支持Windows、Linux、MacOS。一般问题可看看wiki及README.md。代码迁移到 https://github.com/ying32/govcl 了,另外WIKI跟附件将继续保留在本项目中。

govcl: 【本仓库用于同步github上的仓库,以防止无法访问github时使用,因为Go包路径问题,千万不要直接go get本项目,如要引用此仓库应该先在“%GOPATH%\src”目录中建立“github.com\ying32”目录然后再在ying32目录中使用git clone本仓库】Golang绑定Lazarus LCL。致力于小而原生。支持Windows、Linux、MacOS。一般问题可看看wiki及README.md。代码迁移到 https://github.com/ying32/govcl 了,另外WIKI跟附件将继续保留在本项目中。

2023-09-01 16:05| 来源: 网络整理| 查看: 265

中文 | English

GoVCL

跨平台的Golang GUI库, 核心绑定自 Lazarus 创建的通用跨平台GUI库 liblcl 。

GoVCL是一个原生GUI库,不是基于HTML,更不是DirectUI库,一切以实用为主。

中文全称:Go语言可视化组件库;英文全称:Go Language Visual Component Library

govcl最低要求go1.9.2。

截图查看 | 中文文档 | 更新日志

支持的平台

Windows | Linux | macOS

如果你想要支持linux arm及linux 32bit则需要自己编译对应的liblcl二进制。

预编译GUI库二进制下载(源代码)

liblcl

res2go IDE插件源代码(源代码)

使用方法: 安装方法

注:用Lazarus设计界面,用Golang写代码。

使用方法 步骤一:获取govcl代码

go get -u github.com/ying32/govcl

注:也可用go module方式拉取,在go.mod中配置如:github.com/ying32/govcl v2.2.3+incompatible。

步骤二:编写代码 方法一(使用Lazarus设计界面。推荐): package main import ( // 如果你使用自定义的syso文件则不要引用此包 _ "github.com/ying32/govcl/pkgs/winappres" "github.com/ying32/govcl/vcl" ) type TMainForm struct { *vcl.TForm Btn1 *vcl.TButton } type TAboutForm struct { *vcl.TForm Btn1 *vcl.TButton } var ( mainForm *TMainForm aboutForm *TAboutForm ) func main() { vcl.Application.Initialize() vcl.Application.SetMainFormOnTaskBar(true) vcl.Application.CreateForm(&mainForm) vcl.Application.CreateForm(&aboutForm) vcl.Application.Run() } // -- TMainForm func (f *TMainForm) OnFormCreate(sender vcl.IObject) { } func (f *TMainForm) OnBtn1Click(sender vcl.IObject) { aboutForm.Show() } // -- TAboutForm func (f *TAboutForm) OnFormCreate(sender vcl.IObject) { } func (f *TAboutForm) OnBtn1Click(sender vcl.IObject) { vcl.ShowMessage("Hello!") }

方法一需要配合res2go工具使用。

方法二(纯代码,仿照FreePascal类的方式): package main import ( // 如果你使用自定义的syso文件则不要引用此包 _ "github.com/ying32/govcl/pkgs/winappres" "github.com/ying32/govcl/vcl" ) type TMainForm struct { *vcl.TForm Btn1 *vcl.TButton } type TAboutForm struct { *vcl.TForm Btn1 *vcl.TButton } var ( mainForm *TMainForm aboutForm *TAboutForm ) func main() { vcl.RunApp(&mainForm, &aboutForm) } // -- TMainForm func (f *TMainForm) OnFormCreate(sender vcl.IObject) { f.SetCaption("MainForm") f.Btn1 = vcl.NewButton(f) f.Btn1.SetParent(f) f.Btn1.SetBounds(10, 10, 88, 28) f.Btn1.SetCaption("Button1") f.Btn1.SetOnClick(f.OnBtn1Click) } func (f *TMainForm) OnBtn1Click(sender vcl.IObject) { aboutForm.Show() } // -- TAboutForm func (f *TAboutForm) OnFormCreate(sender vcl.IObject) { f.SetCaption("About") f.Btn1 = vcl.NewButton(f) //f.Btn1.SetName("Btn1") f.Btn1.SetParent(f) f.Btn1.SetBounds(10, 10, 88, 28) f.Btn1.SetCaption("Button1") f.Btn1.SetOnClick(f.OnBtn1Click) } func (f *TAboutForm) OnBtn1Click(sender vcl.IObject) { vcl.ShowMessage("Hello!") } 步骤三:复制对应的二进制

Windows: 根据编译的二进制是32还是64位的,复制对应的liblcl.dll到当前可执行文件目录或系统环境路径下。

Go环境变量: GOARCH = amd64 386 GOOS = windows CGO_ENABLED=0

Linux: 复制liblcl.so当前可执行文件目录下(也可复制liblcl.so到/usr/lib/(32bit liblcl)或者/usr/lib/x86_64-linux-gnu/(64bit liblcl)目录中,作为公共库使用)。

Go环境变量: GOARCH = amd64 GOOS = linux CGO_ENABLED=1

MacOS: 复制liblcl.dylib当前可执行文件目录下(MacOS下注意:需要自行创建info.plist文件),或者参考:MacOS上应用打包

Go环境变量: GOARCH = amd64 GOOS = darwin CGO_ENABLED=1

注:这里的当前可执行文件目录指的是你当前编译的项目生成的可执行文件位置。

注意:

特别注意:所有UI组件都是非线程/协程安全的,当在goroutine中使用时,请使用vcl.ThreadSync来同步更新到UI上。

特别注意2:如果你使用go>=1.15编译Windows可执行文件,则必须则必须使用-buildmode=exe编译选项,不然会有错误。

API文档 Lazarus LCL组件WIKI Windows API文档

jetbrains 鸣谢jetbrains



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3