跳转到内容

Gambas/FAQ

来自维基教科书,开放世界中的开放书籍

返回 Gambas

参见 http://sourceforge.net/mailarchive/forum.php?forum=gambas-user

如果你想在项目中使用一些热键,你可以编写以下代码

Public sub Form_KeyPress ()
 If key.code = ... then
 Something happens

不幸的是,这只有在窗体没有按钮和其他控件的情况下才能工作。如果窗体有其他控件,并且其中一个控件获得了焦点,则它将无法工作。

QT 组件中还没有用于全局拦截键盘事件的接口,但有一个技巧

如果你在窗体中有一个菜单,它的键盘快捷键将被全局管理。因此,你可以向窗体添加一个隐藏的菜单来解决你的问题。

KDE 面板小程序 ?

[编辑 | 编辑源代码]

是否可以使用 Gambas 编写 KDE 面板小程序?

不,目前还不能做到。KDE 面板小程序作为具有特定接口的共享库实现。

列表视图

[编辑 | 编辑源代码]

如何在一个现有项之后添加列表视图项,如果缺失了一个项

错误:Listview.add("Key","Name",,"Key2") -- 错误:缺少逗号。

你必须将 NULL 作为图片参数传递。在 Gambas 中调用函数时,你不能“跳过”参数。

Listview.add("Key","Name",NULL,"Key2")

Gambas 支持结构化数据类型吗?

[编辑 | 编辑源代码]

在某些版本的 basic 中,可以使用类型定义来创建结构化数据类型,如下所示

' This will not work in Gambas
TYPE rhubarbstructure
  foo AS STRING * 32
  bar AS INTEGER
END TYPE
PUBLIC rhubarb AS rhubarbstructure

目前,Gambas 不支持 TYPE 关键字。相反,你可以使用 STRUCT 或 STRUCT[] 关键字。

此外,还可以使用类定义 来达到相同的效果。

项目构建

[编辑 | 编辑源代码]

gambas 支持包含文件吗?

[编辑 | 编辑源代码]

gambas 支持条件编译指令吗?

[编辑 | 编辑源代码]

应用程序启动

[编辑 | 编辑源代码]

从主例程启动应用程序

[编辑 | 编辑源代码]

在 gambas 中,要从主例程启动应用程序

  • 创建一个名为 MMain 的新模块
  • 在 MMain 模块中,创建一个名为 Main 的公共子程序,如下所示
PUBLIC SUB Main()
  ' This is the start of the program
END
  • 右键单击 MMain 模块,然后从上下文菜单中选择启动类

获取命令行参数

[编辑 | 编辑源代码]
PUBLIC SUB main()
  ' This reads and displays the command line parameters
  DIM l AS Integer
  DIM numparms AS Integer
  DIM parm AS String
  numparms = Application.Args.Count
  FOR l = 0 TO numparms - 1
    parm = Application.Args[l]
    PRINT l; " : "; parm
  NEXT 
END SUB

窗口几何

[编辑 | 编辑源代码]

确定最大窗口大小

[编辑 | 编辑源代码]

在 gambas 中,确定适合屏幕的最大窗口大小的技巧是创建一个最大化的窗体,然后从 Form_Resize() 事件中查询其尺寸。请注意,在这个过程中窗体可以是不可见的,通常我们会使用主模态窗口(在本例中为 FMain)。

创建窗体

[编辑 | 编辑源代码]

从项目中创建一个窗体(FMain),并设置以下属性

FMain.Maximized = True
FMain.Visible = False    ' The form can be invisible

从项目视图中,右键单击 FMain 窗体并从上下文菜单中选择“编辑类”。这将显示一个窗体类文件 (FMain.class),如下所示

PUBLIC SUB _new()
END
PUBLIC SUB Form_Open()
END

现在,我们可以将 Form_Resize() 事件添加到类文件中,并添加必要的代码来获取屏幕尺寸,如下所示

PUBLIC SUB Form_Resize()
  PRINT "The maximum window size that can be used is "; FMain.Width; " x "; FMain.Height
END
华夏公益教科书