Gambas/FAQ
返回 Gambas
参见 http://sourceforge.net/mailarchive/forum.php?forum=gambas-user
如果你想在项目中使用一些热键,你可以编写以下代码
Public sub Form_KeyPress () If key.code = ... then Something happens
不幸的是,这只有在窗体没有按钮和其他控件的情况下才能工作。如果窗体有其他控件,并且其中一个控件获得了焦点,则它将无法工作。
QT 组件中还没有用于全局拦截键盘事件的接口,但有一个技巧
如果你在窗体中有一个菜单,它的键盘快捷键将被全局管理。因此,你可以向窗体添加一个隐藏的菜单来解决你的问题。
是否可以使用 Gambas 编写 KDE 面板小程序?
不,目前还不能做到。KDE 面板小程序作为具有特定接口的共享库实现。
如何在一个现有项之后添加列表视图项,如果缺失了一个项
错误:Listview.add("Key","Name",,"Key2") -- 错误:缺少逗号。
你必须将 NULL 作为图片参数传递。在 Gambas 中调用函数时,你不能“跳过”参数。
Listview.add("Key","Name",NULL,"Key2")
在某些版本的 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 中,要从主例程启动应用程序
- 创建一个名为 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