【发布时间】:2012-03-04 08:04:53
【问题描述】:
我在delphi中编写了一个代码来插入一个状态项到系统状态栏,代码运行良好并且状态项显示出来。我使用了一个透明图标,我应该完全点击图标(而不是图标 rect)来打开菜单。但是如果我点击图标的透明区域,什么都不会发生! 我用 XCode 编写了相同的代码,一切正常。
有没有人对这个案子有想法? 我想通过单击状态图标的任意点(彩色和透明点)打开菜单。
代码:
procedure createStatusItem;
var
app_delg: AppDelegate;
statusBar: NSStatusBar;
statusItem: NSStatusItem;
menu: NSMenu;
pImage: Pointer;
nsImage: NSImage;
begin
app_delg := TAppDelegate.Create;
TNSApplication.Wrap(TNSApplication.OCClass.sharedApplication()).setDelegate(AppDelegate(app_delg));
statusBar := TNSStatusBar.Wrap(TNSStatusBar.OCClass.systemStatusBar);
menu := TNSMenu.Wrap(TNSMenu.Alloc.initWithTitle(NSSTR('')));
statusItem := statusBar.statusItemWithLength(NSVariableStatusItemLength);
statusItem.retain;
statusItem.setHighlightMode(true);
statusItem.setAction(sel_getUid('onMenuClicked:'));
statusItem.setMenu(menu);
pImage := TNSImage.Alloc.initWithContentsOfFile(NSSTR('icon.ico'));
nsImage := TNSImage.Wrap(pImage);
statusItem.setImage(nsImage);
nsImage.release;
end;
谢谢。
【问题讨论】:
-
OS X 中没有“系统状态栏”。
-
"没有系统状态栏" !亲爱的朋友,我很惊讶你的评论,你能告诉我这段代码应该做什么吗? NSStatusBar *statusBar = [NSStatusBar systemStatusBar];
-
尝试在问题中包含您正在使用的代码以获得一些答案。
-
我把专门编写的完整代码放在C++ Builder Here.987654321@中使用
标签: macos delphi delphi-xe2 statusbar system-status