问题不言自明,如何使用 GTKAda 创建撕下菜单?我不能让它工作。
谢谢。
如果您将代码添加到您的问题中,它将更具描述性。
我已经编写了一些代码来演示使用 GTKAda 的撕下菜单的用法,这并不难,但可能很难找到有关它的文档:
function CreateFileMenu(tearOff : boolean) return Gtk_Menu is
fileMenu : Gtk_Menu;
newFile, loadFile, saveFile, saveAs, close : Gtk_Menu_Item;
begin
-- Create the menu:
Gtk_New(fileMenu);
-- Add the tear off item to the menu if required:
if tearOff then
declare
tear : Gtk_Tearoff_Menu_Item;
begin
Gtk_New(tear);
Append fileMenu, tear);
Show(tear);
end;
end if;
-- Create the rest of the menu items:
Gtk_New_With_Mnemonic(newFile, "_New");
Gtk_New_With_Mnemonic(loadFile, "_Load");
Gtk_New_With_Mnemonic(saveFile, "_Save");
Gtk_New_With_Mnemonic(saveAs, "Save _as...");
Gtk_New_With_Mnemonic(close, "_Close");
-- Add the items to the menu:
Add(fileMenu, newFile);
Add(fileMenu, loadFile);
Add(fileMenu, saveFile);
Add(fileMenu, saveAs);
Add(fileMenu, close);
return fileMenu;
end CreateFileMenu;
该declare/begin/end
结构允许您在运行时声明变量。
该boolean
参数允许您在创建时决定是否希望它是一个可撕下的菜单。该函数只是创建菜单,因此您必须稍后将其添加到菜单栏(例如)。
不确定这是否是您正在寻找的,但 GtkAda 参考手册说:
GtkAda 中的所有菜单都可以是“Tear off”菜单,即您可以将它们与它们的父级(菜单栏或另一个菜单)分离,以使它们始终在屏幕上可见)。
所以听起来好像你不需要做任何事情。