编程教程
您现在的位置: 中国个人站长站 >> 网络编程 >> Delphi >> 教程正文 从实作标题栏按钮开始浅谈组件的制作
推荐位

从实作标题栏按钮开始浅谈组件的制作

中国个人站长站 Delphi 点击数: 更新时间:2005-8-28 11:21:45


            end;


          end;


        WM_NCLBUTTONDOWN,WM_NCLBUTTONDBLCLK:


          begin


            Result := CallWindowProc(FOldWndProc,FForm.Handle,Msg,WParam,LParam);


            with TWMNCLButtonDown(message) do


              if not HitButton(Point(XCursor, YCursor)) then Exit;


 


            if WParam = 888 then


            begin


              FButtonDown := True;


              Repaint;


              SetCapture(FForm.Handle);


            end;


          end;


        WM_NCRBUTTONDOWN,WM_NCRBUTTONDBLCLK:


          begin


            if WParam = 888 then


            begin


              if Assigned(FPopup) then


              begin


                p.x := FForm.Left + BoundsRect.Left;


                p.y := FForm.Top + BoundsRect.Bottom;


                FPopup.Popup(p.x,p.y);


              end;


            end


            else


              Result:=CallWindowProc(FOldWndProc,FForm.Handle,Msg,WParam,LParam);


          end;


        WM_NCLBUTTONUP,WM_LBUTTONUP :


          begin


            if FButtonDown then


            begin


              FButtonDown := False;


              RePaint;


              ReleaseCapture;


              if Assigned(FOnClick) then FOnClick(self);


            end


            else


              Result:=CallWindowProc(FOldWndProc,FForm.Handle,Msg,WParam,LParam);


          end;


        else


          Result := CallWindowProc(FOldWndProc,FForm.Handle,Msg,WParam,LParam);


      end;


    end


    else


      Result := CallWindowProc(FOldWndProc,FForm.Handle,Msg,WParam,LParam);


  end;


end;


 


procedure TTitleBarButton.SetGlyph(const Value: TBitmap);


begin


  FGlyph.Assign(Value);


  SendMessage(FForm.Handle,WM_NCACTIVATE,0,0);


end;


 


procedure TTitleBarButton.SetRightMargin(const Value: Cardinal);


begin


  FRightMargin := Value;


  SendMessage(FForm.Handle,WM_NCACTIVATE,0,0);


end;


 


procedure TTitleBarButton.SetVisible(const Value: Boolean);


begin


  FVisible := Value;


  SendMessage(FForm.Handle,WM_NCACTIVATE,0,0);


end;


 


procedure TTitleBarButton.Notification(Component: TComponent;


  Operation: TOperation);


begin


  inherited;


  if (Operation = opRemove) and (Component = FPopup) then


    FPopup := nil;


end;


 


function TTitleBarButton.GetBoundsRect: TRect;


var


  Rec: TRect;


  FrameThick: Integer; //窗体框架厚度


上一页  [1] [2] [3] [4] [5] 下一页

教程录入:swh    责任编辑:swh 
个人站长站与你风雨同舟!
本站所提供的资源均来源于互联网,如有侵权行为,请与本站管理员联系,我们会第一时间删除!
·如果您发现《从实作标题栏按钮开始浅谈组件的制作》文章有错误,也请通知我们修改!
联系邮箱chinageren#126.com,谢谢支持!
站内搜索:
版权所有:中国个人站长站 2007-2008 未经授权禁止复制或建立镜像 客服QQ号:112731235
copyright © 2007-2008 www.ChinaGeRen.com online services. all rights reserved. 苏ICP备05000059号