我在MDI主窗口中加入Image控件Align为alClient,放入图片,可是运行之后Image会往右移,左边有一大块没有图片!怎么解决???
解决方案 »
- Missing operator or semicolon ,求高手
- FastMM4.92测试报告!
- 请问各位大侠在程序中通过语句申明ADO控件和把ADO控件直接托放到窗体上有什么区别?
- 关于Tsteam的write 方法?
- 一段 SPcomm控件 接受数据的代码————在线等待??!!!!
- 请教个问题,路由器不做端口映射的话,数据库还会被攻击吗?
- 如何让fastreport2.44中的frPrintGrid1打印出来的报表自动居中
- 各位大虾,有谁知道如何遍历一个目录下的文件,包括子目录(重谢)
- 如何设置注册表后不重启就可以生效
- 一个老问题,Form之间互相传递参数?
- 一个多线程问题 一点开始 就不能动了 或者进程如果出现死循环 主窗口也不能动弹了 要在哪里作改进?
- delphi 快垮台了,大家散伙吧,唉
第三步:在Form1上增加一个Image元件,并选择要设置的背景到Image的Picture中。
第四步:在Form1的Private中定义:
FClientInstance,
FPrevClientProc : TFarProc;
PROCEDURE ClientWndProc(VAR Message: TMessage);
第五步:在实现(implementation)中加入上述过程的具体内容:
PROCEDURE TForm1.ClientWndProc(VAR Message: TMessage);
VAR
MyDC : hDC;
Ro, Co : Word;
begin with Message do
case Msg of
WM_ERASEBKGND:
begin
MyDC := TWMEraseBkGnd(Message).DC;
FOR Ro := 0 TO ClientHeight DIV Image1.Picture.Height DO
FOR Co := 0 TO ClientWIDTH DIV Image1.Picture.Width DO
BitBlt(MyDC, Co*Image1.Picture.Width, Ro*Image1.Picture.Height,
Image1.Picture.Width, Image1.Picture.Height,
Image1.Picture.Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
Result := 1;
end;
else Result := CallWindowProc(FPrevClientProc, ClientHandle, Msg, wParam, lParam);
end;
end; 第六步:在Form1的创建事件中加入:
FClientInstance := MakeObjectInstance(ClientWndProc);
FPrevClientProc := Pointer(GetWindowLong(ClientHandle, GWL_WNDPROC));
SetWindowLong(ClientHandle, GWL_WNDPROC, LongInt(FClientInstance)); 上面的步骤已经完成了MDI主窗口背景图案的设置,下面可以增加一个MDIChild窗口,实现MDI程序。 第七步:新增加一个Form,并将FormStyle设置为fsMDIChild。 现在你可以编译运行这个程序,你会发现,Image元件并不会在Form上显示出来,但是整个Form的客户区域被Image中的图像所铺满。
在FORM上放一个IMAGE(将VISIBLE设为FALSE),并加载一幅图
(必须是BMP),在ONSHOW中添加代码:
procedure TForm1.FormShow(Sender: TObject);
begin
Brush.Bitmap := Image1.Picture.Bitmap;
end;
你用我的代码就可以了,而且对MDI和非MDI都实用
D6 的修改了一点点,不过还不是很好
要怎样子做才能做得好呢,我很急!