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

OSCHINA-MIRROR/ying32-govcl

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

GoVCL

Cross-platform Golang GUI library. Ядром привязки является liblcl — общая кроссплатформенная библиотека графического интерфейса, созданная Lazarus.

GoVCL — это нативная библиотека GUI, не основанная на HTML, не говоря уже о библиотеке DirectUI, всё практично.

Полное название: «Библиотека визуальных компонентов языка Go».

Минимальное требование govcl — go1.9.2.


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


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

Windows | Linux | macOS

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

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

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 (
   // Do not reference this package if you use custom syso files
   _ "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()
}

// -- TAboutForm

func (f *TAboutForm) OnFormCreate(sender vcl.IObject) {
 
}

func (f *TAboutForm) OnBtn1Click(sender vcl.IObject) {
    vcl.ShowMessage("Hello!")
}

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

  • Метод 2 (чистый код, имитирующий способ класса FreePascal):
package main


import (
   // Do not reference this package if you use custom syso files
   _ "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)
``` **Шаг 3: Скопируйте соответствующий двоичный файл**

* Windows: В зависимости от того, является ли скомпилированный двоичный файл 32- или 64-битным, скопируйте соответствующую библиотеку liblcl.dll в каталог текущего исполняемого файла или системный путь среды.  
  * Переменные среды Go: GOARCH = amd64 386, GOOS = windows, CGO_ENABLED=0.

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

* MacOS: Скопируйте файл liblcl.dylib в каталог текущего исполняемого файла (обратите внимание, что под MacOS необходимо самостоятельно создать файл info.plist), или обратитесь к разделу «Упаковка приложений на MacOS» по ссылке: https://gitee.com/ying32/govcl/wikis/pages?sort_id=410056&doc_id=102420.  
  * Переменные среды Go: GOARCH = amd64, GOOS = darwin, CGO_ENABLED=1.

Примечание: «Каталог текущего исполняемого файла» здесь относится к местоположению исполняемого файла, созданного текущим проектом после компиляции.

**Особое примечание: Все компоненты пользовательского интерфейса не являются потокобезопасными и небезопасными для сопрограмм. При использовании в сопрограмме используйте vcl.ThreadSync для синхронизации обновлений пользовательского интерфейса.**

**Особое примечание 2: Если вы используете go>=1.15 для компиляции исполняемых файлов Windows, вы должны использовать опцию компиляции -buildmode=exe, иначе возникнут ошибки.**

### V. FAQ

Q: Почему нет английской WIKI?  
A: Мой английский плохой. Вы можете попробовать использовать Google Translate для китайской WIKI по ссылке: https://gitee.com/ying32/govcl/wikis/pages.

### VI. Документ API

* Lazarus LCL component WIKI: http://wiki.freepascal.org/LCL_Components
* Документ Windows API: https://msdn.microsoft.com/zh-cn/library/ms123401.aspx

Комментарии ( 0 )

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.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