如何使用GTKAda创建一个撕下菜单?

时间:2009-09-07 10:55:28

标签: menu gtk ada

问题是自我解释,如何使用GTKAda创建一个撕裂菜单?我无法使它发挥作用。

感谢。

2 个答案:

答案 0 :(得分:2)

如果您添加了您的问题代码,那么它将更具描述性。

我已经编写了一些代码来演示使用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参数允许您在创建时确定是否要将其作为撕下菜单。该功能只是创建菜单,因此您必须稍后将其添加到菜单栏(例如)。

答案 1 :(得分:1)

不确定这是否是您要找的,但是GtkAda参考手册says

  

GtkAda中的所有菜单都可以是“Tear off”菜单,即您可以将它们从父菜单(菜单栏或其他菜单)中分离出来,以使它们始终在屏幕上可见。

听起来好像你不需要做任何事情。