govcl

module
v1.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 13, 2019 License: Apache-2.0

README

A cross-platform Golang GUI library. Use Delphi VCL and Lazarus LCL for binding.


The govcl version >=1.2.0 must require the go version >=1.9.0.


License Minimum Go version Screenshots Update log

Support Platform
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
Librarys
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
res2go
Note: Designed in Delphi/Lazarus, code written in Golang.

usage:

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.


FAQ

Q: Why is there no English WIKI?
A: My English is bad. You can try using Google Translate Chinese WIKI.


Note:

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.


API document


  • 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
  • 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
  • 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

Directories

Path Synopsis
samples
OSVersion command
SkinsharpTest command
由GOVCL UI设计器自动生成,不要编辑。
由GOVCL UI设计器自动生成,不要编辑。
WindowsMessages command
WindowsProcess command
WindowsTest command
action command
basic command
basicResForm command
由GOVCL UI设计器自动生成,不要编辑
由GOVCL UI设计器自动生成,不要编辑
checklistbox command
draganddrop command
draw command
dropfiles command
eventpublic command
formEvents command
由GOVCL UI设计器自动生成,不要编辑。
由GOVCL UI设计器自动生成,不要编辑。
gdiplustest command
由GOVCL UI设计器自动生成,不要编辑。
由GOVCL UI设计器自动生成,不要编辑。
gdiplustest2 command
由GOVCL UI设计器自动生成,不要编辑。
由GOVCL UI设计器自动生成,不要编辑。
govcl command
govcl project main.go go.exe build -i -ldflags="-H windowsgui"
govcl project main.go go.exe build -i -ldflags="-H windowsgui"
grids/drawgrid command
imagebutton command
imageviewer command
由GOVCL UI设计器自动生成,不要编辑
由GOVCL UI设计器自动生成,不要编辑
inifile command
jsonTogo command
由GOVCL UI设计器自动生成,不要编辑
由GOVCL UI设计器自动生成,不要编辑
jsonViewer command
由GOVCL UI设计器自动生成,不要编辑
由GOVCL UI设计器自动生成,不要编辑
layout command
listview command
listviewcustomdraw command
由GOVCL UI设计器自动生成,不要编辑。
由GOVCL UI设计器自动生成,不要编辑。
login command
由GOVCL UI设计器自动生成,不要编辑
由GOVCL UI设计器自动生成,不要编辑
memstream command
menu command
messageTest command
miniwebview command
由GOVCL UI设计器自动生成,不要编辑
由GOVCL UI设计器自动生成,不要编辑
mp3Player command
由GOVCL UI设计器自动生成,不要编辑
由GOVCL UI设计器自动生成,不要编辑
msgbox command
multilanguage command
Automatically generated by the GOVCL UI designer, do not edit
Automatically generated by the GOVCL UI designer, do not edit
notepad command
由GOVCL UI设计器自动生成,不要编辑。
由GOVCL UI设计器自动生成,不要编辑。
pagecontrolwizard command
由GOVCL UI设计器自动生成,不要编辑
由GOVCL UI设计器自动生成,不要编辑
printer command
registry command
res2goTest/Delphi/gocode command
由res2go自动生成,不要编辑。
由res2go自动生成,不要编辑。
res2goTest/Lazarus/gocode command
由res2go自动生成,不要编辑。
由res2go自动生成,不要编辑。
richedit command
shortcut command
statusbar command
stdcontrols command
style command
sysdialog command
syslocale command
trayicon command
treeview command
virtuallistview command
winJumpList command
winTaskbar command
windowsspy command
由GOVCL UI设计器自动生成,不要编辑
由GOVCL UI设计器自动生成,不要编辑
wingif command
winole command
xunleidownloader command
由GOVCL UI设计器自动生成,不要编辑。
由GOVCL UI设计器自动生成,不要编辑。
vcl
api
---------------------------------------- 加载文件或者内存中的窗口资源文件功能 需要配合窗口设计器使用 Copyright © ying32.
---------------------------------------- 加载文件或者内存中的窗口资源文件功能 需要配合窗口设计器使用 Copyright © ying32.
exts/skinh
skinsharp皮肤扩展接口 http://www.skinsharp.com/htdocs/index.htm skinsharp是收费的,这里只是头文件的导入。
skinsharp皮肤扩展接口 http://www.skinsharp.com/htdocs/index.htm skinsharp是收费的,这里只是头文件的导入。
rtl
win

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL