首页  编辑  

在TStatusBar中检测面板双击

Tags: /超级猛料/VCL/状态栏和进度条/   Date Created:

下面的代码,展示了如何在一个包含多个panel的状态栏中检测其中某个Panel受到鼠标双击。别忘了在单元的uses部分加上对CommCtrl的引用。

procedure TMainForm.StatusBar1DblClick(Sender: TObject);

var MouseCor : TPoint;

   PanelRect: TRect;

   lp0 : integer;

   SB : TStatusBar;

begin

 if Assigned(sender) then

 begin

   if Sender is TStatusBar then

   begin

     GetCursorPos(MouseCor);

     SB := TStatusBar(Sender);

     for lp0 := 0 to SB.Panels.Count-1 do

     begin

       SendMessage(SB.Handle, SB_GETRECT, lp0, Integer(@PanelRect));

       if PtInRect(PanelRect,SB.ScreenToClient(MouseCor)) then begin

        // 在这里添加处理代码

        // SB.Panels[lp0]被点击

         break;

     end;

    end;

   end;

 end;

end;