CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  PowerBuilder >  控件与界面

难题!界面编辑器的设计

楼主cobi(我是小新)2002-04-11 11:56:10 在 PowerBuilder / 控件与界面 提问

DELPHI的界面编辑器IDE大家都用的很熟,有没有想过在自己的应用中做类似的一个呢?  
   
  我现在正在给客户做这样的一个东西,目的就是能够让客户根据数据表的结构自己编辑输入界面,那程序就不用因为各个客户的需要不同而必须做多个输入界面了。  
   
  到目前为止,我的程序已经能够根据需要生成控件了,不过在这里碰到了一个问题。就是如何使生成的控件能使用setdesigning进入编辑状态。请各位给点提示。谢谢! 问题点数:300、回复次数:28Top

1 楼chechy(www.qdocuments.net)回复于 2002-04-11 12:00:54 得分 30

我觉得可以做一个控件(简称X),可以自由得拖动,改变大小。  
  然后当用户选中任意界面控件,改变这个控件的Parent,让X作为控件的Parent(即控件附着在X上),这样各种拖动,改变大小就可以改变了。当焦点改变后,将控件的Parent恢复成原来。  
  当然这是一个想法,具体实现时有很多细节值得研究。Top

2 楼inbud(清风侠)回复于 2002-04-11 12:05:22 得分 30

SetDesigning其实只能是你定义的一个虚方法。通过这个方法把真正控件  
  应该做的事件屏蔽掉,然后重新处理控件的一些动作,比如  
  DoSize;  
  DoMove;  
  DoSetText;  
  这写方法是提供给用户编辑控件外观的,这些代码与你程序要处理的“运行时”方法并没有两样。举个例子吧。  
  一个Label,运行时执行OnClick,OnDblClick  
  用户设计时需要处理OnMouseDown,   OnMouseUp,   OnMouseMove,   Caption  
  procedure   SetDesigning(b:Boolean)  
  begin  
      if   b   then  
      begin    
          ThisLabel.OnClick:=niL  
          ThisLabel.OnDblClick:=niL;  
          ThisLabel.OnMouseDown:=DesignMouseDown;  
          ThisLabel.OnMouseUp:=DesignMouseUp;  
          ...      
      end  
      else  
      begin  
          ThisLabel.OnClick:=CustomClick;  
          ThisLabel.OnDblClick:=CustomDblClick;  
          ThisLabel.OnMouseDown:=niL;  
          ...  
      end;  
  end;  
  Top

3 楼newwen(玩一会儿)回复于 2002-04-11 12:13:20 得分 30

曾作过多媒体触摸屏程序中用RTTI为控件属性赋值,用一个panel画出边框,内签一个panel放待编辑的控件,效果还可以,不过控件类需要先注册,新的控件直接加不进去,后来就不做了,其实不是很使用,因为要动态配置事件,最终用户很烦,不够工程人员很喜欢Top

4 楼Borlandor(五角大民)回复于 2002-04-11 12:26:29 得分 10

1.自己定义一些关于控件的映射结构(类),这些类可以充当Delphi控件的容器.  
  2.通过改变这些类的属性,可以改变其内控件的大小,方位,颜色字体等.  
  3.用户编辑完后,将这些类信息保存为一个文件.  
  4.使用时,载入文件,动态生成相应的控件.Top

5 楼qiubolecn(来自差生市)回复于 2002-04-11 12:33:01 得分 100

我写过一个,你看看是否符合你的想法  
   
  hellodelphi.8u8.com/dynamic.zipTop

6 楼windindance(风舞轻扬·白首为功名)回复于 2002-04-11 12:40:42 得分 0

我感觉……  
  真的有必要做这种需求吗?  
  客户真的需要这种需求吗?Top

7 楼qiubolecn(来自差生市)回复于 2002-04-11 12:44:06 得分 0

很有必要,只是实现上很大的问题,看过瑞星的pos系统没,它就提供一个这样的功能,只是它的事件局限于   sql   语句。  
   
  这就和fastreport一样。  
  Top

8 楼qiubolecn(来自差生市)回复于 2002-04-11 12:48:57 得分 0

通过TStretchHandle这个控件,来实现拖动等是比较简单的,另外,可以通过对新建控件来进行事件的绑定。  
   
  属性这方面,标准的属性编辑器是有的,dxInspector是个不错的选择,但在实际当中,用它是没用的,客户不可能去学习delphi,所以,需要我们自已去调用,去实现RTTI.Top

9 楼wjohenw(CSharp)回复于 2002-04-11 13:32:09 得分 0

来学习,多多指教Top

10 楼Liusp(夜深千帐灯)回复于 2002-04-11 13:37:36 得分 0

这么多红星!Top

11 楼ghyghost(爱国人士-许愿池里的希腊老石头)回复于 2002-04-11 14:16:56 得分 0

星星我爱你们!Top

12 楼cobi(我是小新)回复于 2002-04-11 14:30:52 得分 0

谢谢各位,其实我的想法中不需要实现对控件的事件做处理这样复杂的操作,只要求实现几点:  
  1.可以移动控件  
  2.可以改变控件的大小、颜色、字体等属性  
  3.在实现上面操作的时候可以有类似在delphi中设计的效果,例如可以有控件获取焦点时的小方框显示等  
   
  请继续讨论Top

13 楼qiubolecn(来自差生市)回复于 2002-04-11 14:50:02 得分 50

移动大小,得到焦点等只要一个   TStretchHandle就搞定,已经发到你的邮箱里,文件名为     handle.pas  
   
  改变大小,颜色,字体等属性的,就最好是自已写方法。  
   
  在我的   propertyform里没有实现对对象的操作。你可以   拿delphi   for   delphi来参考一下,不过,是for   4.0的  
   
  我把它放在   hellodelphi.8u8.com/source.zip里,大家看看Top

14 楼cobi(我是小新)回复于 2002-04-11 19:00:13 得分 0

提前Top

15 楼wwwwwwww(我我)回复于 2002-04-11 19:04:12 得分 0

学习!!!Top

16 楼blazingfire(烈焰)(对.net极度憎恨中....)回复于 2002-04-11 19:11:39 得分 0

太难,不会,UP!Top

17 楼INeedCa(缺钙)回复于 2002-04-12 01:23:28 得分 30

我们公司自己开发了一个,不过目前还不能公开。绑定数据和事件等与系统的结构和使用目的有很大的关系。  
   
  typInfo.pas没有注释,看起来是比较累   呵呵  
   
  另外,你可以参考FormDesigner这个产品。Top

18 楼cobi(我是小新)回复于 2002-04-18 11:31:10 得分 0

因为时间有限,所以目前我采用了qiubolecn(来自差生市)   提供的控件进行实现。等有一定成果的时候,再向大家透露一下。  
   
  谢谢!Top

19 楼taxi(当时明月在,曾照彩云归)回复于 2002-04-18 11:38:04 得分 0

留个脚印Top

20 楼dreamfan(改行不做程序员,回家种地。)回复于 2002-04-18 11:46:35 得分 0

看看Top

21 楼befree(似有似无)回复于 2002-04-18 11:54:57 得分 0

关注Top

22 楼xxmmmx(踢踏)回复于 2002-04-18 11:58:18 得分 0

/uuuuuu..ppTop

23 楼newwen(玩一会儿)回复于 2002-04-18 12:02:49 得分 20

http://vip.6to23.com/zgj67/Top

24 楼3fly(三飞)回复于 2002-04-22 21:41:43 得分 0

高……手Top

25 楼halfdream(哈欠)回复于 2002-04-23 09:20:55 得分 0

到此一游Top

26 楼DeathCat(从死亡边缘站起来的患了狂猫病的猫)回复于 2002-04-23 09:30:08 得分 0

学习了。Top

27 楼ollea(一定要mf到胡萝卜)回复于 2002-04-23 10:48:38 得分 0

upingTop

28 楼steelhorse(吾尝终日而思矣,不如须臾之所学也)回复于 2002-04-23 11:01:06 得分 0

UPTop

相关问题

  • 如何在 Tpanel 控件上画出类似于Delphi界面编辑器(设计时Form)上的Grid小点?
  • 我在.aspx的html编辑器中编辑它,增加一个内容,为什么回到设计器时不能更新我的界面?
  • 找遍VC都没有界面编辑器的,这么弱?
  • 请求web文本编辑器的设计思路
  • 有人用过roseedit吗?就是一个图形界面的编辑器啊!
  • 请问哪位有 WEB 版的CSS编辑器,用在前台,不可能让用户输CSS代码,所以想找个界面友好的编辑器
  • 界面设计
  • 编辑器
  • php编辑器
  • HTML编辑器

关键词

  • 控件
  • 界面
  • 属性
  • 字体
  • 客户
  • 用户
  • delphi
  • 结构
  • thislabel
  • 编辑器

得分解答快速导航

  • 帖主:cobi
  • chechy
  • inbud
  • newwen
  • Borlandor
  • qiubolecn
  • qiubolecn
  • INeedCa
  • newwen

相关链接

  • PowerBuilder类图书
  • PowerBuilder类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo