denis
604309
|
2022/3/23 8:57:06 |
效果很不错,大侠能不能抽时间把FMX的窗体接口Designer也实现。 |
chinayu
41427
|
2011/4/1 14:22:51 |
我想编辑窗口中的部分控件,或者某容器中的控件,如TPanel,能行吗? |
dunken
41086
|
2010/10/15 8:57:20 |
//开始设计.设计窗口里,Root控件为Owner的控件 function BeginDesign(Form: TCustomForm; Root: TWinControl): IDesignerHook; overload; 这个方法是不是没用 |
zhouli_2001
40029
|
2010/5/12 11:15:26 |
楼主,你好 我学用你的这个接口实现界面自定义,但因为使用到了CXGRID,尽管不对其操作,退出的时候还是会出现错误,我在IsDesignMsg中设置了指定OWNER中的控件才能编辑,但是只要点击到CXGRID的列上,或者 不操作都会出错,实在找不到办法,请楼主及各位大侠解惑哈,谢谢! |
cassava
39613
|
2010/2/26 21:56:54 |
我看了一下,代码是空的,不过自己也可以加上去,包含DesignHookUtils单元后,加两个按钮,在开始设计按钮中中写代码BeginDesign(form2);结束按钮代码中写EndDesign(form2);就可以了 |
hanyanjin
38586
|
2009/9/9 16:08:10 |
代码是空的嘛? |
fryfox
38097
|
2009/7/20 22:50:18 |
非常不错的代码,以前版本的模拟delphi ide的例子都是用一个自定义的panel来伪造选中的效果,结果导致了无法嵌套创建控件! 有了这个接口,这个不足之处就克服了! |
xintan
37757
|
2009/6/19 20:50:39 |
看不到源代码呀,求救! |
legend888888
34323
|
2008/5/29 14:48:03 |
very good |
the_o
33150
|
2008/3/1 12:20:14 |
厉害,对Delphi研究的那么透彻 佩服~! 感谢分享~! |
kingjit
31538
|
2007/10/24 17:13:03 |
都是牛人喔.佩服
siow: 最好能把你的改进版也发过来一份!
保存状态的话最好可以是保存到流或是数据库中的. 再扩展点,最好把属性编辑器也集成进来,那就完美了!
期望大侠的新作.
wr960204: 大侠,在您"人有多大胆,地有多大产"的时代,就崇拜你了
请大侠以后多多发些好贴子喔 |
wr960204
31375
|
2007/10/7 22:16:40 |
第三个其实倒是很容易实现.只不过Delphi的IDesignerHook接口没有提供这个方法,我里面的实现类中虽然做得到,但是Form的Designer是IDesignerHook接口,所以不能获取而已. |
siow
31361
|
2007/10/5 23:32:49 |
问题3: 解决方法1:拦截Application.OnMessage消息的方法可以根据消息的msg.hwnd查找到响应消息的控件,但这个方法不适用于TImage,TLabelden等没有句柄的空件。 解决方法2:修改DesignHookUtils中的function TDesignerHook.OnMessage(Sender: TControl;var Message: TMessage): Boolean;中加入右键消息的处理, WM_RBUTTONUP: begin SendMessage(Form.Handle,WM_ClassInfo,Longint(Sender),0); end; 其中WM_ClassInfo为自定义消息,设计窗体中定义 procedure GetCName(var Msg: TMessage); message WM_ClassInfo; 用来接受自定义消息,函数原型如下: procedure TForm2.GetCName(var Msg: TMessage); var i:integer; begin MsgSender:=TControl(msg.WParam);//MsgSender为TControl类型的全局变量 ... end; MsgSender即为右键单击的对象,进行处理即可 请各位大侠指正 |
siow
31359
|
2007/10/5 22:53:01 |
问题1:在关闭被设计窗体时判断一下就行了Designer就行了,呵呵 procedure TForm2.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin if Assigned(self.Designer) then begin CanClose:=False; Application.MessageBox('请先结束设计状态,然后退出!','注意',MB_ICONEXCLAMATION); end; end; |
siow
31330
|
2007/10/1 2:11:26 |
1、大侠可能没明白我的思。如果BeginDesign后没有EndDesign的话,这时关一下被设计窗体,此时被设计窗体是关不了的,但是如果EndDesign后,被设计窗体仍然还是关不了。 2、“Root控件为Owner的控件”,呵呵,确实我没看到。 3、原来想表达的意思是:设计期,事件不再响应,此时想弹出个菜单,这个问题已通过消息拦截解决。 |
wr960204
31315
|
2007/9/29 9:04:00 |
siow 31311 2007-9-29 4:31:07 非常好的东东。但有一些BUG和问题。 1,如果BeginDesign后没有EndDesign的话,被设计窗体就会关不掉了,除非关闭主窗体。 2,function BeginDesign(Form: TCustomForm; Root: TWinControl): IDesignerHook;函数设计部分区域时有时不起做作,而且控件经常无法拖动。 3,无法知道哪个控件处在被编辑状态。 //---------- 1.不结束设计状态不能关闭窗口算不得Bug 2.你一定没好好看说明Owner为Root的才能编辑而不是Parent那么简单 3.我这里无非是想展现IDesignerHook的实现而已.不是要给你写免费代码.难道主要代码都给你了,这么简单的功能你就懒到都不能添加吗 |
siow
31312
|
2007/9/29 4:34:43 |
还有,设计时如何弹出右键菜单呢 |
siow
31311
|
2007/9/29 4:31:07 |
非常好的东东。但有一些BUG和问题。 1,如果BeginDesign后没有EndDesign的话,被设计窗体就会关不掉了,除非关闭主窗体。 2,function BeginDesign(Form: TCustomForm; Root: TWinControl): IDesignerHook;函数设计部分区域时有时不起做作,而且控件经常无法拖动。 3,无法知道哪个控件处在被编辑状态。 |
herubber
31288
|
2007/9/27 9:21:20 |
哈哈,牛人啊,谢谢分享~! 这是我到现在为止见过的同类代码中最好的一个了 |
luckypig
31283
|
2007/9/26 21:50:26 |
效果很不错。 不过还没有看具体的代码。。。等学习后再评论!
谢谢楼主了! |