当前位置:主页>仓库管理软件> 列表

我把form2的parent设为form1中的一个pane

销售管理软件版1楼: 我把form2的parent设为form1中的一个panel,为什么form2的标题栏一直是灰色的啊??
请看代码:
procedure TForm1.btn1Click(Sender: TObject);
begin
if not Assigned(form2) then
begin
form2 := TForm2.Create(Application);
Form2.Parent := pnl1;
end;
Form2.WindowState := wsNormal;
Form2.Show;
end;

2楼: 另外,假如我现在的系统中有20个象form2的窗体,我想写个函数
来统一调度这20个窗体,该如何做呢?
我现在的做法是:
//btn1的click
procedure TForm1.btn1Click(Sender: TObject);
begin
if not Assigned(form2) then
begin
form2 := TForm2.Create(Application);
Form2.Parent := pnl1;
end;
Form2.WindowState := wsNormal;
Form2.Show;
end;
////btn2的click
procedure TForm1.btn2Click(Sender: TObject);
begin
if not Assigned(form3) then
begin
form3 := TForm3.Create(Application);
Form3.Parent := pnl1;
end;
Form3.WindowState := wsNormal;
Form3.Show;
end;
代码非常相似,所以写个统一的调度函数比较好,但如何写才最好呢?


请各位高手大哥帮忙解决一下 如免费商品管理软件

3楼: 大哥,我算是服了你了,你不知道使用frame控件啊,delphi的standard页上就有frame控件,这个控件的功能就是将你的窗体变成一个控件,然后可以加在其他窗体里面了。

4楼: windows.SetParent(hWndChild, hWndNewParent: HWND;

5楼: 对你第一个问题,我想应该是它作为一个控件了,也就没有一般窗体的功能了。它也只能是灰色的标题了。
对于第二个问题,你可以定义一个Class.比如
TFrmClass = class of TForm;
procedure SetForm(FrmClass: TFrmClass);
begin
if not Assigned(FrmClass) then
begin
FrmClass:= TForm3.Create(Application);
FrmClass.Parent := pnl1;
end;
FrmClass.WindowState := wsNormal;
FrmClass.Show;
end;
//当然,这个代码有很多改进。其他就让你自己做了。嘿嘿。

6楼: 有Setparent 就不是 灰色的啦
windows.setparent(Form2.handle, xxxx.handle);

销售管理软件版7楼: 答你的第二个问题;
type
TformClass = class of TForm;

const
Forms : array[0..19] of TformClass = (Tform1, TForm2, TForm3. 等等 .TForm19)
***

for i:=0 to 19 do
begin
Forms[i].create(applaication);
你写吧,
end;

8楼: 你要做mdi程序吧

9楼: 我要的是财智家庭理财软件里的那种效果
它好像不是用的mdi
这是他们的网站:http://www.moneywise.com.cn/main.asp
大家可以下载他们的一个免费的 “财智 如记账本”看看,
我要的就是那种效果

10楼: cqwty:
谢谢您的指点
另外,请问当点击了普通窗体的x的时候可以通过下列代码释放
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Form1 := nil;
end;

如果是frame的话该怎么做呢??

11楼: procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
Form1 := nil;
end;

上面经常用人这样用,我认为这是一个很蠢的方法,你可以采用单根类,采用继承。用Frame和Form 同样可以用继承。

12楼: 楼上能不能说详细些 如管家婆进销存免费版