- 中文
- English
The 1.2.0 version begins with govcl with a minimum requirement of go1.9.
Note: linux and macOS only part of the components, properties, events and methods are valid.
If you want to support linux arm and linux 32bit, you need to compile the corresponding liblcl binary.
Pre-compiled GUI library binary download
Note: The "libvcl" library binary (libvcl. dll, libvclx64. dll) contained in the compression package is only for preview and test purposes. Please compile the "libvcl" source code for official use. please refer to the instructions in UILIbSrcources.
res2go Tool
Note: Designed in Delphi/Lazarus, code written in Golang.
go get github.com/ying32/govcl
- Method 1:
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()
}
- Method 2:
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)
// Bind subcomponent events after creation.
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!")
}
- Method 3:
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(mainFormBytes, &mainForm)
vcl.Application.CreateForm("./about.gfm", &aboutForm)
vcl.Application.Run()
}
// -- TMainForm
func (f *TMainForm) OnFormCreate(sender vcl.IObject) {
}
func (f *TMainForm) OnBtn1Click(sender vcl.IObject) {
vcl.ShowMessage("Hello!")
}
// -- TAboutForm
func (f *TAboutForm) OnFormCreate(sender vcl.IObject) {
}
func (f *TAboutForm) OnBtn1Click(sender vcl.IObject) {
vcl.ShowMessage("Hello!")
}
Method 3 needs to be used in conjunction with the UI designer or the res2go tool.
Q: Why is there no English WIKI?
A: My English is bad. You can try using Google Translate Chinese WIKI.
When using the "liblcl" library, it is run in a compatible "libvcl" library, so some methods and properties of components and components are not available.
-
Windows: Copy "libvcl.dll" or "libvclx64.dll" or "liblcl.dll" to the current exe directory or system environment path.
- Go environment variable:
GOARCH = amd64 386
GOOS = windows
CGO_ENABLED=0
- Go environment variable:
-
Linux: Copy the "liblcl.so" executable directory (you can also copy liblcl.so to the
/usr/lib/
directory and use it as a public library).- Go environment variable:
GOARCH = amd64
GOOS = linux
CGO_ENABLED=1
- Go environment variable:
-
MacOS: Copy the "liblcl.dylib" executable directory (Note for MacOS: you need to create the info.plist file yourself), or refer to: App packaging on MacOS
- Go environment variable:
GOARCH = 386
GOOS = darwin
CGO_ENABLED=1
- Go environment variable: