我想找一段窗体标题栏的移动代码>???能移动窗体的代码.
如何写呀????
给我一个例子!!!谁有?!
在线等!!!!!!!!!!!

解决方案 »

  1.   

    不知你所讲的是要移动窗体还是要移动标题栏的文字又或是两个都要移动如果是移动文字的话比较简单,许多网页上都有javascript源代码,换成Delphi的Object Pascal版即可以了要移动窗体的话要复杂一点,可以通过窗体的位置又或是模拟鼠标拖动(用消息实现)
      

  2.   

    在private部分加入下列代码:
    procedure wmnchittest(var msg:twmnchittest);
    message wm_nchittest;
    在程序部分加入以下代码:
    procedure TForm1.wmnchittest(var msg:twmnchittest);
    begin
    inherited;
    if (htclient=msg.result) then msg.result:=htcaption;
    end;
      

  3.   

    procedure TMainForm.imgTitleMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    begin
    if Button=mbLeft then begin
       ReleaseCapture();
       Perform(WM_SYSCOMMAND,$F012,0);
      end;
    end;
      

  4.   

    有点问题我也搞不懂应不应该这样做吧
    我是想美化一个窗体啦
    所以做了一图片,就像瑞星杀毒软件的那个界面一样.
    我要整体换掉一个界面,用我做的那个窗体界面.那么原来的那个window窗体的标题栏我就把form的borderstyle设为bsnone那么再显示时,这个窗体的标题就没有了,当然这个窗体就没法移动了吧?我做的这个图片里面有这个相当于那个标题的东西,我全是用制图工具做的啦.我如何把我图上的那个标题栏设为窗体的标题栏,用户可以通过它而移动窗体呢???
    或者说我的想法就是错的.那么我应如何做????
      

  5.   

    可以使用一个巧妙的方法来实现将鼠标放置在窗体上按下就可拖动窗体,下面先看实现代码。在Form1的“Private”部分声明过程:
    在private部分加入下列代码:
    procedure wmnchittest(var msg:twmnchittest);
    message wm_nchittest;
    在程序部分加入以下代码:
    procedure TForm1.wmnchittest(var msg:twmnchittest);
    begin
      inherited;
      if (htclient=msg.result) then msg.result:=htcaption;
    end;
      上面的关键代码虽然只有两行,但它实现了鼠标直接拖动窗体的目的。代码的原理是利用窗体的WM_NCHITTEST消息,这个消息是当光标移动、鼠标按下或释放时发生的,当程序检测到鼠标在窗体中按下的消息后(消息的值为htClient),将鼠标在标题栏上按下时产生的消息(值为htCaption)传递出去,这样就巧妙的欺骗程序认为是标题栏被按下,当然就可拖动窗体了。
      

  6.   

    然后把form改成img??试试,呵呵!