1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ying32-govcl

Клонировать/Скачать
README.zh-CN.md 7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 02:29 aa01349

GoVCL

Кроссплатформенный графический интерфейс пользователя (GUI) на Golang, основанный на универсальной кроссплатформенной библиотеке GUI liblcl, созданной с помощью Lazarus.

GoVCL — это нативная библиотека GUI, не основанная на HTML и не являющаяся библиотекой DirectUI. Она ориентирована на практичность.

Полное название на китайском языке: «Библиотека компонентов визуализации для языка Go»; полное название на английском языке: «Go Language Visual Component Library».

Минимальные требования для govcl: go1.9.2.

Поскольку GoVCL уже достиг стабильной стадии развития, в настоящее время он находится в состоянии чистого обслуживания и, как правило, не будет добавлять новые функции или компоненты. Если нет необходимости исправлять ошибки (связанные с govcl), принципиально не будут выпускаться новые версии. 2023/11/20.

Скриншот.

Документация на китайском.

Журнал изменений.

I. Поддерживаемые платформы

  • Windows;
  • Linux;
  • macOS.

Если вы хотите поддерживать Linux ARM или Linux 32bit, вам необходимо самостоятельно скомпилировать соответствующий двоичный файл liblcl.

II. Предварительно скомпилированные двоичные файлы библиотеки GUI (исходный код)

liblcl

III. Дизайнер пользовательского интерфейса (два варианта)

  1. Простой дизайнер пользовательского интерфейса (одностраничный дизайн, подходит для тех, кто не хочет устанавливать Lazarus и имеет несложный проект).

GoVCLDesigner.win

Примечание: этот дизайнер пользовательского интерфейса больше не обновляется, но это не влияет на его использование.

  1. Плагин IDE для res2go (исходный код).

Использование: установка.

Используйте Lazarus для проектирования интерфейса и Golang для написания кода.


IV. Использование

Шаг 1: Получить код govcl

go get -u github.com/ying32/govcl

Также можно использовать метод модуля Go для извлечения, настроив в go.mod следующим образом:

github.com/ying32/govcl v2.2.3+incompatible.

Шаг 2: Написать код

Метод 1 (рекомендуется использовать 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()
}

Для метода 1 требуется использовать инструмент res2go.

Метод 2 (код, имитирующий стиль 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!")
}

Шаг 3: Скопировать соответствующий двоичный файл

  • Для Windows: скопируйте соответствующий liblcl.dll в текущий каталог исполняемого файла или системный путь в зависимости от того, является ли архитектура 32-битной или 64-битной.

    • Переменные среды Go: GOARCH = amd64 386 GOOS = windows CGO_ENABLED=0.
  • Для Linux: скопируйте liblcl.so в текущий каталог исполняемых файлов (также можно скопировать liblcl.so в /usr/lib/ (32-разрядный liblcl) или /usr/lib/x86_64-linux-gnu/ (64-разрядный liblcl) в качестве общей библиотеки).

    • Переменные среды Go: GOARCH = amd64 GOOS = linux CGO_ENABLED=1.
  • Для macOS: ...

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ying32-govcl.git
git@api.gitlife.ru:oschina-mirror/ying32-govcl.git
oschina-mirror
ying32-govcl
ying32-govcl
master