MDI,显示子窗体的问题(50分)

  • 主题发起人 主题发起人 a_ping
  • 开始时间 开始时间
A

a_ping

Unregistered / Unconfirmed
GUEST, unregistred user!
我的fsMDIForm窗体上有一个panel,覆盖整个窗体,但是这样的话我的fsMDIChild窗体就
显示不出来,我调用这个窗体的语句为:
procedure TMainForm.N14Click(Sender: TObject);
var
StoreForm: TStoreForm;
begin
StoreForm := TStoreForm.Create(self);
StoreForm.Show;
end;

怎么把窗体弄出来呢,我试过把Panel去了就可以了,但为了程序好看,不能去,大家帮忙
想想办法吧!!!
 
如果是这样你就不能使用 MDI 的方式
 
子窗口create的时候设定parent:=panel;
类型为正常窗口
 
showton说的对
 
窗口设为正常的话,那不就跑出主窗体了吗?那可不成的
 
StoreForm := TStoreForm.Create(self);
StoreForm.Parent:=Panel;
StoreForm.Show;
 
在创建新MDI窗体后,将新MDI窗体填满客户区域,并将Panel设为隐藏就可以了。我们目前是这样做的。
 
to WiseAnt:
我不能把Panel给隐藏了,因为我在上面放了个Image,我其实就是想在主窗体上作个背景图,
我试过直接放Image,但不知为什么,总和Coolbar之间有一条很大的空白。要不哪位高手
告诉我怎么做个背景,感谢之至!!!!
 
procedure TView_Supplier_Form.DsFancyButton1Click(Sender: TObject);
var
SupplierForm: TSupplierForm;
begin
SupplierForm := TSupplierForm.Create(Application);
SupplierForm.ShowModal;
end;
可这样程序执行的时候,却报“cannot make a visible window modal”,咋回事,我在程序一
起来根本就没有创建这个窗体,能告诉我原因吗
 
begin
if not assigned(someform) then
begin
try
application.createform(tsomeform,somefor);
finally
someform.free;
someform:=nil;
end;
end
else
someform.showmodal;
end.
要是用someform.show的话,你在被显示的窗体的onclose事件中加入action:=cafree
 
有空白是图片大小和客户区大小不一样,
先看系统的屏幕大小,然后调相应大小的图片。
 
//这样就可以了!
procedure TForm1.FormCreate(Sender: TObject);//mdiform
begin
windows.SetParent(Panel1.Handle,ClientHandle);
panel1.Enabled:=false;
end;
 
后面那个“make a visible window modal”的问题怎么搞啊
 
主窗口上MDI的背景不是这么做的, D6中,可以直接在窗体上放图片,来做背景
 
我有个控件可以实现你要求的功能。需要的话回复。
 
我的油箱Steven_tan_2000@163.com,那个“make a visible window modal”怎么搞啊
 
MDI主窗体做背景图是需要写一个过程的,不是通过Image来实现的
在开发人员手册上有介绍
 
我现在已经不用MDI了,可还出现这种问题
 
Image1.Picture.LoadFromFile(_sBackground);
FClientInstance:=MakeObjectinstance(clientwindow);
FPrevclient:=pointer(getwindowlong(clienthandle,GWL_WNDPROC));
setwindowlong(clienthandle,GWL_WNDPROC,longint(FClientinstance));
except
On E:Exception do
{错误处理}
end;
end;

procedure TfrmMain.ClientWindow(var message:tmessage);
var
DisplayContext:hdc;
Row,Col:word;
begin
with message do
case msg of
WM_ERASEBKGND:
begin
DisplayContext:=TWMERASEBKGND(message).dc;
for Row:=0 to ClientHeight div Image1.Picture.Height do
for Col:=0 to ClientWidth div Image1.Picture.Width do
BitBlt(DisplayContext,Col*Image1.Picture.Width,Row*Image1.Picture.Height,Image1.Picture.Width,Image1.Picture.Height,Image1.Picture.Bitmap.Canvas.Handle,0,0,srccopy);
Result:=1;
end ;
else
Result:=CallWindowProc(FPRevclient,ClientHandle,msg,wParam,lParam);
end;
end;

直接将image放在FORM上,不需要一个Panel了
 
我现在是SDI, 我用 Application.CreateForm(TView_User_Form, View_User_Form);
View_User_Form.Showmodal;调用窗体,可还是抱'cannot make a visible window modal'错误,我调用的窗体是fsNormal
 
后退
顶部