Recientemente, teniendo en cuenta el marco general de la interfaz del sistema MIS, decidí usar MDI Child en el módulo MDI Form+, pero el espacio de trabajo de la forma MDI siempre tiene moldes bordes gruesos.
Encontré la solución a la versión de C ++ de Internet ayer por la tarde, y pasé algo de tiempo para traducirla a Delphi.
Escriba el siguiente código en el formulario MDI:
interfaz
TFMMAIN = CLASE (TFORM)
...
Procedimiento formulcreate (remitente: tobject);
...
Privado
...
Procedimiento creado enfwndproc ();
Procedimiento ClientWndProc (Mensaje VAR: TMessage);
fin;
Implementación
...
procedimiento TFMMain.CreateDefWNDProc;
varilla
hwnd1: hwnd;
CCS: TClientCreatestruct;
Comenzar
ccs.hwindowmenu: = 0;
ccs.idfirstchild: = $ ff00;
hwnd1: = createWinDowex (ws_ex_clientedge,
'Mdiclient', '', ws_child o ws_visible o ws_group o
Ws_tabstop o ws_clipchildren o ws_hscroll o ws_vscroll o
Ws_clipsiblings o mdis_allchildstyles, 0, 0, clientwidth,
ClientHeight, Handle, 0, Hinstance, @ccs);
FClientInstance: = Pointer (getWindowlong (hwnd1, gwl_wndproc));
DestroyWindow (HWND1);
fin;
procedimiento tf mMAin.clientwndproc (mensaje var: tmessage);
// var
// mydc: hdc;
Comenzar
if (message.msg = wm_eraseBkgnd) entonces
Comenzar
// El programa fuente que simula VCL aquí llena el área del cliente con el color de fondo de la ventana principal.
// También puede dibujar un gráfico en el área del cliente.
Fillrect (HDC (Message.wparam), ClientRect, Brush.handle);
// mydc: = twmerasasebkgnd (mensaje) .dc;
// bitblt (mydc, (clientwidth - imback.picture.width) div 2,
// (ClientHeight - imback.picture.Height) Div 2,
// imback.picture.width, imback.picture.height,
// imback.picture.bitmap.canvas.handle, 0, 0, srcCopy);
Message.Result: = 1;
fin
demás
Message.Result: = CallWindowProc (FClientInstance, ClientHandle,
Message.msg, Message.wparam, Message.lparam);
fin;
procedimiento tf mMAin.FormCreate (remitente: tobject);
Comenzar
// ********* Retirando Mdichild Border grueso ********************
CreateFWNDProc ();
Setwindowlong (ClientHandle, GWL_WNDPROC,
LongInt (makeObjectInstance (clientWndProc)));
Setwindowlong (ClientHandle, GWL_EXSTYLE, GetWindowlong (
ClientHandle, GWL_EXSTYLE) y (no ws_ex_clientedge));
SetWindowPos (ClientHandle, 0,0,0,0,0, SWP_FRAMECHANGED
o swp_noactivate o swp_nomove o swp_nosize o swp_nozorder);
// ****************************************************** **************
fin;