开源中国 2018 年度最后一场技术盛会邀你来约~错过就要等明年啦!点此立即预约

不在乎y / govclGoApache-2.0

Watch 47 Star 144 Fork 27
加入码云
与超过 300 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
Golang绑定 Delphi VCL或Lazarus LCL。致力于小而原生。支持Win32、Win64、Linux64、MacOS32。 QQ群号:263106281。另外多看看wiki及README.md。 代码迁移到 https://github.com/ying32/govcl 了, 本仓库用于同步github上的仓库,留作备份, WIKI跟附件将继续保留在本项目中。 展开 收起

Loading...
README.zh-CN.md

一个跨平台的Golang GUI库,底层绑定自Delphi VCL和Lazarus LCL


从1.2.0版本开始govcl将最低要求go1.9。


license Minimum Go version screenshots Chinese Wiki Chinese Chat Update log

Support Platform
注: linux和macOS由于底层使用了lcl库,则部分组件、属性和方法无效。

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

GUI库二进制下载:
Librarys
注:压缩包内包含的“libvcl”库二进制(libvcl.dll、libvclx64.dll)仅供预览和测试使用。正式使用请自行编译“libvcl”源代码,具体编译方法参考UILIbSrcources中的说明。

res2go工具下载
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
}

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, true)
    vcl.Application.Run()
}

// -- TMainForm

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!")
}


// -- TAboutForm

func (f *TAboutForm) OnFormCreate(sender vcl.IObject) {
    f.SetCaption("Hello")
    f.Btn1 = vcl.NewButton(f)
    //f.Btn1.SetName("Btn1")
    f.Btn1.SetParent(f)
    f.Btn1.SetBounds(10, 10, 88, 28)
    f.Btn1.SetCaption("Button1")
}

func (f *TAboutForm) OnBtn1Click(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文档


  • Windows: 复制"libvcl.dll"或者"libvclx64.dll"或者“liblcl.dll”到当前exe目录或系统环境路径下。

  • Linux: 复制"liblcl.so"可执行文件目录下(也可复制liblcl.so到/usr/lib/目录中,作为公共库使用)。

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

项目点评 ( 60 )

你可以在登录后,发表评论

搜索帮助

12_float_left_people 12_float_left_close