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

问题描述:

问题是自我解释,如何使用GTKAda创建一个撕掉菜单?我无法让它工作。如何使用GTKAda创建一个tearoff菜单?

谢谢。

如果你添加了代码你有你的问题,它会更具描述性。

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

+0

它确实有效!谢谢! – Carl 2009-09-07 13:00:21

不知道这是你在找什么,但GtkAda参考手册says

所有在GtkAda菜单可以“撕下”菜单,即你可以从他们的父母分开它们(无论是菜单栏还是其他菜单)都可以让它们始终显示在屏幕上)。

因此,听起来好像你不必做任何事情。

+0

是的,但它们并没有撕掉菜单,撕下菜单是一种可以将自己从菜单栏中分离出来并始终保持可见的菜单。 – Carl 2009-09-07 11:16:01

+0

但这正是参考手册所说的。 – 2009-09-07 11:37:24

+0

感谢您的评论,但我会继续关注它。 – Carl 2009-09-07 11:49:46