打印本文 打印本文 关闭窗口 关闭窗口
一个简单控件的编写--系统托盘
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1896  更新时间:2009/4/23 18:34:19  文章录入:mintao  责任编辑:mintao
Click) and not assigned(FOnDblClick) then OnClick(self);
      end;
      WM_LBUTTONDOWN:begin                 //左键落下,如果单击和双击同时定义,则启用定时器,
        if assigned(FOnClick) and assigned(FOnDblClick) then begin           //以判断是单击还是双击
          SetTimer(Handle,1,FDblClickTime,nil);                                      //如果不是同时定义则不响应
          FTimer :=True;
        end;
      end;
      WM_LBUTTONDBLCLK :begin               //左键双击,
        if FTimer then begin                                  //如果有定时器,则取消定时器
          KillTimer(Handle,1);
          FTimer:=False;
        end ;
        if assigned(FOnDblClick) then OnDblClick(self);   //如果定义双击则响应
      end;
      WM_RBUTTONUP : begin                            //右键弹起,响应菜单
        if assigned(FPopupMenu) then begin
          GetCursorPos(p);
          FPopupMenu.Popup(p.x,p.Y);
        end;
       end;
      end;
      msg.Result :=0;
  end else if msg.Msg = WM_TIMER then begin   //定时器结束,响应单击。
    KillTimer(Handle,1);                                          //在单击、双击同时定义的情况下,没有双击
    FTimer := False;
    FOnClick(self);
  end;
end;

procedure Register;
begin
  RegisterComponents(''''System'''', [TNotifyIcon]);
end;

end.

      好了,这个组件到这里已经写完了,应该是很简单的,但功能已经基本够用了。没有太多花哨的东西,用起来也很方便。最主要的是对单击和双击的不同处理可以满足多方面的需要。另外需要注意的是本控件定义的图标,只是定义了一个句柄并没有在构造函数中生成一个实例,所以在析构的时候没有对其进行释放,如果在用自定义图标的时候,需要使用者自己创建并在使用完的时候自己释放,但如果用程序默认的图标就简单了,一句代码不用写就可以了。

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口