如题!当MDI子窗体超出父窗体时会出现垂直,横向的滚动条,如何去除这个滚动条的问题?

解决方案 »

  1.   

    楼上的,不行的,我说的是MDI窗体啊。
      

  2.   

    第一步:
    将Delphi7/Source/vcl 目录下的 Forms.Pas 拷贝到你的工程文件的目录,并用"Project"菜单中的 "Add to Project...." 将Forms.Pas加到你的工程文件中。
    (注意,此时可能会有什么错误提示,不管他,点"OK"就行,也不管是否加进来了!)第二步:
    通过菜单"File->Open"打开你工程文件下的刚刚拷贝过来的Forms.Pas文件,改写其中的 procedure TcustomForm.CreateWnd,代码如下:
    (注意,因为Forms.Pas文件太长,可以一下难以找到,我刚刚测试的时候找到了,在第 3678 行,将我下面的这段代码替换原来的 procedure TcustomForm.CreateWnd 就行!)procedure TCustomForm.CreateWnd;
    var
      ClientCreateStruct: TClientCreateStruct;
    begin
      inherited CreateWnd;
      if NewStyleControls then
        if BorderStyle <> bsDialog then
          SendMessage(Handle, WM_SETICON, 1, GetIconHandle) else
          SendMessage(Handle, WM_SETICON, 1, 0);
      if not (csDesigning in ComponentState) then
        case FormStyle of
          fsMDIForm:
            begin
              with ClientCreateStruct do
              begin
                idFirstChild := $FF00;
                hWindowMenu := 0;
                if FWindowMenu <> nil then hWindowMenu := FWindowMenu.Handle;
              end;
              FClientHandle := Windows.CreateWindowEx(WS_EX_CLIENTEDGE, 'MDICLIENT',
                nil, WS_CHILD or WS_VISIBLE or WS_GROUP or WS_TABSTOP or
                WS_CLIPCHILDREN or WS_CLIPSIBLINGS or
                MDIS_ALLCHILDSTYLES, 0, 0, ClientWidth, ClientHeight, Handle, 0,
                HInstance, @ClientCreateStruct);
    {$IFDEF LINUX}
              FClientInstance := WinUtils.MakeObjectInstance(ClientWndProc);
    {$ENDIF}
    {$IFDEF MSWINDOWS}
              FClientInstance := Classes.MakeObjectInstance(ClientWndProc);
    {$ENDIF}
              FDefClientProc := Pointer(GetWindowLong(FClientHandle, GWL_WNDPROC));
              SetWindowLong(FClientHandle, GWL_WNDPROC, Longint(FClientInstance));
            end;
          fsStayOnTop:
            SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or
              SWP_NOSIZE or SWP_NOACTIVATE);
        end;
    end;
      

  3.   

    原理:就是将Windows.CreateWindowEx 函数的第四个参数除去了 "WS_HSCROLL or WS_VSCROLL" 语句,这就使得没有滚动条了!