捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  沪ICP备05001939号 DELPHI盒子 | 盒子论坛 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 论坛检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
 
广告
评论:IDesingHook 演示
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
效果很不错。
不过还没有看具体的代码。。。等学习后再评论!

谢谢楼主了!
第一页 上一页 下一页 最后页 有 38 条纪录 共2页 1 - 20
 用户名:
 密 码:
自动登陆(30天有效)
 
  DELPHI盒子版权所有 1999-2023 V4.01 粤ICP备10103342号-1 更新RSS列表