2

问题不言自明,如何使用 GTKAda 创建撕下菜单?我不能让它工作。

谢谢。

4

2 回答 2

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参数允许您在创建时决定是否希望它是一个可撕下的菜单。该函数只是创建菜单,因此您必须稍后将其添加到菜单栏(例如)。

于 2009-09-07T12:17:39.123 回答
1

不确定这是否是您正在寻找的,但 GtkAda 参考手册

GtkAda 中的所有菜单都可以是“Tear off”菜单,即您可以将它们与它们的父级(菜单栏或另一个菜单)分离,以使它们始终在屏幕上可见)。

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

于 2009-09-07T10:57:56.597 回答