在编写自己的控件时怎样在mdi窗口上出现?一定给分! 建议你设一个属性为handle,当你要放到mdi子窗口时,让你的OcoolEdit.handle:=childform1.handle取的时候用GetWindowDC(FHandle); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哦,早上看到过了,建议你把类作的独立力一点,里面不要引用实例窗口。1、如果你把类作的很独立的话,就不会存在这个问题2、 form1.Height-form1.ClientHeight3、mdi子窗口在创建时要根据主窗口来调整的,如果你想知道它的大小, childform1.width childform1.height childform1.top childform1.left这些决定了它的大小和位置,建议你把子窗口的windowstate设为wsMaximized这样显示就会是充满主窗口。 增加一个handle属性来记录当前操作对象的句柄。 不要用GetWindowDC,改用GetDC,这样就不会画到标题栏或边框上了。 可是handle属性怎么写呢?是不是这样?可是运行时报错!TOcoolEdit=class(TCustomControl) private ... FHandle:HWND;procedure TOcoolEdit.Paint;begin inherited; Canvas.Handle:=GetWindowDC(Handle); Canvas.Pen.Color:=Tcolor(RGB(Random(255),Random(255),Random(255))); Canvas.Rectangle(Left,Top,Width,Height);end;procedure TMdiForm.FormCreate(Sender: TObject);begin OcoolEdit:=TOcoolEdit.Create(self); OcoolEdit.Parent:=Self; CcoolEdit.FHandle:=MdiForm.Handle; OcoolEdit.Paint;end; 1. CustomControl 本身为有句柄的WINDOWS标准窗口, 本身已有Left, Top,Width, Height 等属性,继承时没必要把它们覆盖掉.2. Delphi 已经专门为CustomControl建立了Canvas属性,直接用就行了3.Parent负责子空件的显示, Owner负责删除, 设置完这两个属性直接Show就可以了4.procedure TOcoolEdit.Paint; begin // inherited; {没必要} Canvas.Rectangle(Left,Top,Width,Height); end; 1. CustomControl 本身为有句柄的WINDOWS标准窗口, 本身已有Left, Top,Width, Height 等属性,继承时没必要把它们覆盖掉.2. Delphi 已经专门为CustomControl建立了Canvas属性,直接用就行了3.Parent负责子空件的显示, Owner负责删除, 设置完这两个属性直接Show就可以了4.procedure TOcoolEdit.Paint; begin // inherited; {没必要} Canvas.Rectangle(0,0,Width,Height); end; 使用Application.MainForm.ActiveMDIChild可以得到当前激活的MDI子窗体,不过可能是nil,要加上判断。 netlib(河外孤星) :您的分数加在这里!http://www.csdn.net/expert/topic/794/794251.xml?temp=.7038538 关于数据库提交的问题~ 编译出错,请帮忙 各位高手,帮忙看看! 谢了 如何最小化窗体 请测试我的程序(毕业设计) 对您来说可能很简单,取DateTime部分内容的问题!在线等待,即答即得分! 让我的程序多语言支持吧!!! WaitForSingleObject()的几个返回值到底是什么 意思?混淆不清! 看看错在那里? DELPHI拖拽的缺陷...怎么办? 那里有 fastreport 或者 minireport 控件下载(是delphi中用的) 发现CSDN上的人对于难的问题参与积极性都比较差。
建议你把类作的独立力一点,里面不要引用实例窗口。
1、如果你把类作的很独立的话,就不会存在这个问题
2、 form1.Height-form1.ClientHeight
3、mdi子窗口在创建时要根据主窗口来调整的,
如果你想知道它的大小,
childform1.width
childform1.height
childform1.top
childform1.left
这些决定了它的大小和位置,建议你把子窗口的windowstate设为wsMaximized
这样显示就会是充满主窗口。
private
...
FHandle:HWND;procedure TOcoolEdit.Paint;
begin
inherited;
Canvas.Handle:=GetWindowDC(Handle);
Canvas.Pen.Color:=Tcolor(RGB(Random(255),Random(255),Random(255)));
Canvas.Rectangle(Left,Top,Width,Height);
end;procedure TMdiForm.FormCreate(Sender: TObject);
begin
OcoolEdit:=TOcoolEdit.Create(self);
OcoolEdit.Parent:=Self;
CcoolEdit.FHandle:=MdiForm.Handle;
OcoolEdit.Paint;
end;
2. Delphi 已经专门为CustomControl建立了Canvas属性,直接用就行了
3.Parent负责子空件的显示, Owner负责删除, 设置完这两个属性直接Show就可以了
4.procedure TOcoolEdit.Paint;
begin
// inherited; {没必要}
Canvas.Rectangle(Left,Top,Width,Height);
end;
2. Delphi 已经专门为CustomControl建立了Canvas属性,直接用就行了
3.Parent负责子空件的显示, Owner负责删除, 设置完这两个属性直接Show就可以了
4.procedure TOcoolEdit.Paint;
begin
// inherited; {没必要}
Canvas.Rectangle(0,0,Width,Height);
end;
http://www.csdn.net/expert/topic/794/794251.xml?temp=.7038538