Golang绑定VCL和LCL组件

一个跨平台的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上应用打包

转载于:https://my.oschina.net/ying33/blog/1542824

你可能感兴趣的:(Golang绑定VCL和LCL组件)