窗口实际显示区域和焦点区域错位了,怎么办?

olony 2009-11-16 11:01:39


我先对窗口进行了一些处理后,如图窗口的显示区域和焦点区域发生了错位。我现在想把窗口的显示区域抠下来,在窗口的焦点区域进行重画,应该怎么做?请各位高手帮忙,多谢
...全文
195 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
olony 2009-11-16
  • 打赏
  • 举报
回复
这两个函数说明:
ClientToScreen判断窗口内以客户区坐标表示的一个点的屏幕坐标
ScreenToClient判断屏幕上一个指定点的客户区坐标

似乎是判断点是否在屏幕坐标和客户区中的作用。测试后也没看到有什么效果。另外我用copyrect也没有成功。请问还有没有什么方式方法
vcTiro 2009-11-16
  • 打赏
  • 举报
回复
ScreenToClient/ClientToScreen
用这组函数中的一个调整一下你的RECT位置。
olony 2009-11-16
  • 打赏
  • 举报
回复
查资料,ClientToScreen和ScreenToClient仅仅是把屏幕坐标和窗口坐标进行转换,不会自动调整窗口显示层和窗口焦点区域的位置。他们仅接受(window HWND,a point)两个参数,即对a point的坐标在屏幕坐标和窗口坐标间转换,为程序所用

我贴出的图,背景是一张图片,为什么用图片?
如果不用图片,窗口焦点灰色区域无法直观的看到,用了背景图后,在窗口移动时,不设置刷新时,窗口的显示区域和焦点区域不一致的情况就能直观地看到了

我就是想把窗口显示区域在屏幕上移动到窗口焦点区域,仅移动屏幕显示区域层,因为如果是move窗口的话,两个层都移动,仍然是错为显示的。不知道我说明白没有?
vcTiro 2009-11-16
  • 打赏
  • 举报
回复
你的窗口是怎么来的?看样子有点像是位图中的一块?
那两个函数,是处理HWND窗口坐标时经常要用到的,也就是RECT是通过GetWindowRect……函数获取的,那你这个是怎么获取的呢?
ExtAspNet - ExtJS based ASP.NET Controls with Full AJAX Support ExtAspNet是一组专业的Asp.net控件库,拥有原生的AJAX支持和丰富的UI效果, 目标是创建没有ViewState,没有JavaScript,没有CSS,没有UpdatePanel,没有WebServices的Web应用程序。 支持的浏览器: IE 7.0+, Firefox 3.0+, Chrome 2.0+, Opera 9.5+, Safari 3.0+ 注:ExtAspNet基于一些开源的程序ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor。 示例: http://extasp.net/ 开源: http://extaspnet.codeplex.com/ 博客: http://sanshi.cnblogs.com/ 邮箱: sanshi.ustc@gmail.com 发布历史: +2010-09-29 v2.3.2 -不绑定任何数据到Grid时,确保页面不会出错。 -修正了Grid列属性DataFormatString的一个bug,比如设置{0:yy-MM-dd HH:mm}时没有效果。 -修正下拉列表控件不能绑定DataTable的BUG(feedback:RedOcean)。 -增加土耳其语言资料文件(feedback:abdullaharslan)。 -Grid的BoundField增加NullDisplayText属性,用于处理数据库中的null值,如果没有设置则默认为空字符串。 -修正DatePicker中的一个bug(31/01/2010将会返回NULL)使用DateFormatString来生成SelectedDate属性(feedback:OktaEndy)。 -修正extjs最新版本(v3.2.2)中的一个bug,如果下拉列表中存在两个相同的Text,则SelectedValue返回值永远是第一个Text的值(feedback:ben.zhou)。 -应用补丁#6593, #6621(feedback:vbelyaev)。 +修正IE7下Grid分页速度慢(feedback:youwei, StevenGuan, hazardvn, gavindou, ttjacky)。 -实际上IE7下所以的回发都慢,原因是客户端的Base64编码速度慢,已经使用encodeURIComponent来代替Base64编码。 -俄语翻译(feedback:vbelyaev)。 +2010-06-30 v2.3.1 -ExtAspNet控件将不在依赖ViewState,减少1/4左右的HTTP数据传输量。 -控件和示例的增强。 +2010-03-28 v2.2.1 +为TabStrip的GetAddTabReference函数增加重载方法,以便指定Tab的图标(feedback:mmdcup)。 -修正此函数通过PageContext.RegisterStartupScript调用时不能正确显示Icon的BUG(feedback:zhaowenke)。 -修正basic/hello.aspx示例在单独浏览器打开后,不能弹出对话框的BUG。 -隐藏示例首页最外层RegionPanel的边框ShowBorder="false"。 +集成Extjs最新版本v3.1.1。 -增加一个新的Theme - Access。 -修正了Firefox下Zoom In/Out时页面消失的BUG。 -删除Panel的EnableLightBackgroundColor属性,同时EnableBackgroundColor只支持Blue和Gray两种Theme。 +2010-01-31 v2.2.0 -使得Asp.net的控件ImageButton具有和Asp.net的Button控件类似的行为(Ajax提交)(feedback:261629698)。 +TabStrip增加GetAddTabReference和GetRemoveTabReference两个函数,用来向TabStrip控件动态增加删除Tab。 -增加示例tabstrip/tabstrip_addtab.aspx。 -重构了示例网站的架构,目前只有一层IFrame结构。 -为TabStrip增加EnableTabCloseMenu属性,是否启用右键菜单,可用来关闭当前Tab和所有其他Tab。 -为NumberBox增加DecimalPrecision属性,用来控制小数点后的位数(需要设置NoDecimal="false")(feedback:zqmars)。 -Window控件更新。 -关闭按钮默认直接关闭,不会弹出确认对话框。 -GetConfirmFormModifiedHideReference的函数中的ConfirmFormModified简化为Confirm,所以此函数更名为GetConfirmHideReference。 -增加两个属性EnableConfirmOnClose(默认false),CloseAction(Hide, HideRefresh, HidePostBack)。 -修正EnableMaximize属性不能使Window最大化的BUG,修正了双击标题栏不能最大化的BUG。 -删除Button控件的SystemIcon属性,比如以前这样定义SystemIcon="Close",现在需要这样定义Icon="SystemClose"。 -WindowPosition默认居中,而不是黄金分割位置。 +Button, Window等控件弹出位置属性的变化。 -Window的Target属性由字符串类型变为枚举类型,注意更新以前的代码:Target="_self" -> Target="Self", Target="_parent" -> Target="Parent"。 -MenuButton, LinkButton, Button, LinkButtonField的ConfirmTarget属性由字符串变为枚举类型,可以取三个枚举值Self, Parent, Top。 -Confirm.GetShowReference的最后一个参数target变为枚举类型。 -Alert.GetShowReference中的showInParent参数也变为Target枚举类型。 -MenuButton, LinkButton, Button, LinkButtonField增加ValidateTarget用来控制表单验证失败时提示对话框的显示位置。 +2010-01-06 v2.1.9 -集成Extjs最新版本v3.1.0。 -修正灰色皮肤的CSS问题。 -修正Grid的列名中不能包含中文字符的BUG(feedback:davidwen)。 -为Web.config和PageManager增加属性AjaxTimeout(单位秒,默认30秒)。 -修正了在Grid的PageIndexChange事件中不能获取SelectedRowIndexArray属性的BUG(feedback:Violet)。 -Button控件将不再自动拥有display:inline属性,如果希望两个按钮在一行显示,请为第一个按钮设置CssStyle="float:left;"属性。 -修正了弹出菜单的位置在Firefox下不正确的BUG(feedback:eroach)。 -为TriggerBox和TwinTriggerBox增加EnableEdit属性。 -使用Hidden来显示隐藏ExtAspNet控件,而不是使用Visible属性(Visible目前设置为只读属性)。 -使用Hidden控制Window控件的显示隐藏,Popup已经标记为Obsolete属性。 -Window的实例方法GetCloseReference等以及ActiveWindow的静态方法GetCloseReference等,其中的Close全部改为Hide。 -增加TabStrip中Tab控件可关闭属性EnableClose(默认为false)以及两个方法GetShowReference和GetHideReference(feedback:anson)。 -修正绑定到Tree的XMLDocument中Icon属性映射错误(feedback:nopnop9)。 -修正HtmlEditor不能编辑的BUG(feedback:TheBox)。 -修正IE下有时会出现空白页面的情况(feedback:olivia919)。 +2009-12-06 v2.1.8 -修正了使用IFrame的Window关闭后不能再次打开的BUG(feedback:alexa99)。 -修正了IE下Grid中的一个JS问题(feedback:lqm4108)。 -修正Alert消息中引号未编码导致的JS错误(feedback:sun1299shine)。 +集成extjs3.0.3。 -修正弹出对话框的宽度计算错误(会保持最小的状态)。 -增加新的皮肤Gray。 -为示例工程添加改变语言和皮肤的下拉列表。 -为PageContext增加静态函数Refresh,在切换语言和皮肤时使用。 +2009-12-01 v2.1.7 -增加示例(iframe/parent_postback_run3.aspx),如何通过简单的Javascript代码回发父页面(feedback:eroach)。 -修正一些书写错误(feedback:bmck)。 -从Region控件中删除SplitColor属性,增加CollapseMode, EnableSplitTip, SplitTip, CollapsibleSplitTip属性(feedback:bmck)。 -BorderPanel更名为RegionPanel。 -DropDownList拥有MarkInvalid方法(feedback:sun1299shine)。 -增加中国的省市县三级联动示例(data/shengshixian.aspx)(feedback:Blues T)。 -修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用AutoPostBack的Grid,其RowClick会覆盖LinkButtonField, HyperLinkField, CheckBoxField的点击事件(feedback:yymaoji)。 +2009-11-26 v2.1.6 +修正动态创建Grid列的BUG(feedback:gxpan)。 -增加示例(data/grid_dynamic_columns.aspx)。 -修正Form不能自适应浏览器大小的改变(feedback:kaywood)(WorkItem#6309)。 -增加重载方法Alert.Show(message, title, icon)(feedback:TheBox)(WorkItem#6353)。 -为容器控件(比如Panel,Region,Tab等)增加AJAX属性IFrameUrl(feedback:BluesT)。 -重新设计模拟树的下拉列表的实现,避免选中某项后的闪烁。 +2009-11-21 v2.1.5 +Tree优化。 -修正Expanded项和Checked项的状态在回发改变后不能保持的BUG。 -GetNodeById更名为FindNode,保持和FindControl一致命名。 -删除CheckedNodeIDArray属性,增加GetCheckedNodes和GetCheckedNodeIDs函数。 -删除ExpandedNodeIDArray属性,增加GetExpandedNodes和GetExpandedNodeIDs函数。 -增加示例(data/tree_select_run.aspx),如何选中当前节点的所有子节点(feedback:wjl_wjl520)。 +TreeNode的属性NodeId被重命名为NodeID,这是ExtAspNet中的一个命名约定。 -同时更名的还有GridColumn的ColumnId->ColumnID,GetColumnId->GetColumnID。 -Grid1.Columns.FindColumnById函数被Grid1.FindColumn所替代。 -为TreeCheckEventArgs,TreeExpandEventArgs,TreeCommandEventArgs增加Node属性。 -为所有控件增加Focus(覆盖Control默认的Focus函数)和GetFocusReference函数。 -增加示例(other/custom_postback.aspx)(feedback:thebox)。 -如何自定义Javascript脚本和C#处理函数来响应键盘事件。 -为Tree增加AutoLeafIdentification属性。 -增加示例(tree_auto_leaf_identification.aspx)(feedback:wdrabbit)。 +2009-11-17 v2.1.4 -修正Window的关闭按钮提示信息一直是中文的BUG(feedback:thebox)。 -部分ExtAspNet控件的设计时支持(会在后续版本中逐步完善)。 -v0.2beta2版本中关于PersistChildren(true)的描述有误,这个是设计时属性,和运行时是否保持状态没有关系。 -修正CheckBox控件的CheckedChanged事件会被触发两次的BUG(Data PostBack->AutoPostBack, Event PostBack->EnablePostBack)。 -为TextBox,TextArea,DatePicker,NumberBox,TriggerBox等控件增加AutoPostBack属性(feedback:dk3214)。 +为表单字段增加RequiredMessage,MaxLengthMessage,MinLengthMessage属性,用于指定验证失败时提示信息。 -为空则使用默认的提示信息,默认的提示信息支持多语言,建议一般情况下使用默认信息。 +为表单字段增加MarkInvalid和GetMarkInvalidReference函数(feedback:sun1299shine)。 -增加示例:form/form_validate.aspx +2009-10-19 v2.1.3 +增加支持在AJAX时改变的控件属性列表(/ajax.aspx)。 -ExtAspNet支持原生的AJAX,也就是说控件的属性改变在AJAX过程中会反映到页面中,但并不是所有的控件属性都支持AJAX改变。 -加载s.gif图片在本机进行,不会请求extjs.com远程资源(feedback:efrigate43,abaocoole)。 -在AJAX回发后确保Asp.net的按钮控件仍然具有AJAX的特性。 -更新/basic/login.aspx示例,使用验证图片(feedback:kedee)。 -为Grid增加AutoPostBack属性和RowClick事件,示例在/data/grid_autopostback.aspx(feedback:chenguizhu2006)。 -为所有的表单字段增加AJAX属性ReadOnly(feedback:skydb)。 -Grid中TemplateField生成到页面中控件具有唯一ID,例如Grid1_ct5_Label2,Grid1_ct6_Label2(feedback:geruger)。 +2009-09-27 v2.1.2 -为Tree控件增加GetExpandAllNodesReference和GetCollapseAllNodesReference两个函数。 -修正RELEASE版本下多语言加载的BUG(feedback:yigehaoren)。 -增加pt_BR语言,由Ujvari提供。 +为所有Panel(包括Grid,Tree,Form等)增加枚举类型Icon,其中包含1700多个小图标。 -如果Panel具有IconUrl属性,则IconUrl优先于Icon。 -所有Icon的列表在icon.aspx。 -为Button,MenuItem(MenuButton,MenuHyperLink),AccordionLink,TreeNode,Image(如果ImageUrl为空,则取Icon的值)增加Icon属性。 +2009-09-15 v2.1.1 -修正不能动态修改AccordionPane属性Items的BUG。 +为Button, MenuButton, LinkButton, LinkButtonField增加ConfirmTarget。 -如果需要在父页面弹出确认对话框,需要设置ConfirmTarget="_parent"(类似Window控件的Target="_parent")。 +为ExtAspNet.Alert.Show增加点击确定的JavaScript回调函数。 -一个典型应用,在Window控件中打开新页面,如果传递的参数不正确,则首先提示参数不对然后关闭此弹出窗口。 -ExtAspNet.Alert.Show("参数错误!", String.Empty, ExtAspNet.ActiveWindow.GetCloseReference()); +TreeNode的前面的多选框可以自动回发了。 -为TreeNode增加AutoPostBack属性,增加事件数据类TreeCheckEventArgs,为Tree增加事件NodeCheck。 -示例在:http://extasp.net/data/tree_run.aspx -Grid增加GetNoSelectionAlertInParentReference函数,用来表示没有选中任何一项时在父页面弹出对话框的JS代码。 -修正IE7下不能以下划线作为CSS中类名的前缀的BUG(feedback:Steve.Wei)。 -添加定时器控件Timer,用来定时发起AJAX请求。 +2009-09-06 v2.1.0 -Button的Pressed属性值能够正确的反映客户端的变化。 -优化Tree控件的AJAX实现。 +为页面的Form添加autocomplete="off"属性。 -参考http://www.cnblogs.com/sanshi/archive/2009/09/04/1560146.html#1635830 +添加对extjs3.0中所有语言的支持。 -ExtAspNet扩展的多语言包在js\languages\extaspnet目录下,目前只有en,zh_CN,zh_TW三种实现 -你可以向其中添加自己的语言版本,并执行js\languages下的pack.bat打包,最后编译工程。 +2009-09-01 v2.0.9 -为ExtAspNet.Alert添加两个静态方法ShowInParent和GetShowInParentReference,用于在父页面弹出窗口。 +在aspx页面中必须显示的声明控件的集合属性(比如Tabs(TabStrip), Items(PanelBase), Nodes(TreeNode))。 -这将会影响所有的aspx页面,所以要特别关注。 -重命名AccordionPanel为AccordionPane (这也是在Asp.net AJAX中使用的名称). +所有的面板默认有两个集合属性(Toolbars和Items). -尽管TabStrip, From, Tree, Accordion继承了Items属性,但是你并不能对其设置(此时Items是只读的). -这将会影响所有的aspx页面,一定要将工具条(Toolbars)和Items区分开来。 -祝你生日快乐 - 小师妹妹。 +2009-08-29 v2.0.8 -ExtAspNet支持多语言(en,zh_CN,zh_TW),可以在Web.config中修改。 -将所有的示例转化为英语版本。 -修正Tree控件的一个BUG(定义Mappings属性时)。 +PageManager.Instance应该存在于HttpContext.Current,而不是一个全局变量。 -这个BUG导致Asp.net compatibility中的示例无法完成,现在已经修正。 +去除PageManager中方法AddAjaxAspnetControls,增加属性AjaxAspnetControls。 -这个属性和Button得ValidateForms属性类似,可以查看Asp.net compatibility中的示例。 +2009-08-25 v2.0.7 -为按钮增加DisableControlBeforePostBack属性 - 回发之前是否禁用按钮,防止重复提交 - 默认为true。 -Grid的Values属性访问限制由internal改为public,这就意味这可以自由改变Grid中每个单元格的值了。 -增加示例-如何将Grid控件导出为Excel(data\grid_excel_run.aspx)(feedback:503684912)。 -如果TreeNode的属性Enabled="false",则此项变灰并且不会被选中(feedback:your568)。 -修正TreeNode的属性NavigateUrl不接受服务器端URL(以~/开头)的BUG。 -增加Accordion和Tree配合使用的示例(other\accordion_tree_run.aspx)。 -修正Panel图标不能显示的BUG(CSS中class名不能有$字符)。 +去除PageLayout控件,此控件可以使用BorderLayout和指定PageManager的AutoSizePanelID属性来代替。 -这样所有需要占据全屏的Panel(不管你是Accordion,Panel,ContentPanel,Form,GroupPanel,SimpleForm,Tree还是Grid,TabStrip)都可以通过这种方式全屏。 -简单方便,示例可以参考 default.aspx 或者 other\accordion_tree_run.aspx。 +2009-08-14 v2.0.6 -动态生成菜单实例(other\menu_dynamic_run.aspx和other\menu_dynamic2_run.aspx)(feedback:shguo)。 -优化AJAX的内部实现,每个页面保存的ViewState现在减少1/3左右(重要更新)。 -优化Tree节点的NodeId自动生成,减少ViewState占用。 +2009-08-09 v2.0 beta5 +ExtAspNet和Asp.net的提交按钮兼容问题(feedback:千帆)。 -在2009-03-03 v1.3.0曾经提到这个兼容问题,并有这样的规则,如果Asp.net的按钮AJAX提交,必须设置UseSubmitBehavior="false" --也就是说生成的input的type不能是"submit",而这个限制在有些情况下是不可原谅的。 --我们做了优化,现在要使一个Asp.net的按钮能够AJAX提交,你不需要做任何设置(PageManager的属性EnableAjax为true即可,这是默认属性)。 +PageManager的实例方法AddAjaxUpdateControl改名为AddAjaxAspnetControls,现在可以在Page_Load中设置需要在AJAX中需要更新的Asp.net控件了。 -在Page_Load中设置了哪些需要在AJAX中更新的Asp.net控件会在回发时保持状态,可以通过RemoveAjaxAspnetControls来去除不需要更新的控件。 -示例在aspnet\fckeditor_run.aspx和aspnet\aspnet_run.aspx。 -FCKEditor和上传控件兼容。示例在aspnet\fileupload_run.aspx。 -修正ToolbarText的文本在AJAX下更新的BUG。 -Button的Pressed属性在AJAX可更新(feedback:mgzhenhong)。 -更新所有示例。在IE7.0,IE8.0,Firefox3.5,Chrome2.0下测试通过。 +2009-08-02 v2.0 beta4 +和Asp.Net的Forms Authentication兼容[feedback:mgzhenhong]。 -采用和Asp.Net Ajax类似的处理方式,需要在配置文件Web.config增加一个httpModules。 -现在支持Response.Redirect,你可以选择Response.Redirect或者ExtAspNet.PageContext.Redirect重定向页面,两者效果一样。 -支持FormsAuthentication.RedirectFromLoginPage(accountID, false);这样的方法。 -Button增加Type属性(button,reset,submit)[feedback:mgzhenhong]。 -修正Alert.Show方法不能指定文本前图片的BUG[feedback:xmq&mgzhenhong]。 -修正IE下某些弹出窗口的IFrame第一次不能加载的BUG。 -增加Menu和Accordion的示例。 -修正Window控件的IconUrl有时不显示(Target="_parent")的BUG[feedback:xmq&mgzhenhong]。 +2009-07-22 v2.0 beta3 -兼容FCKEditor。 -在IE8.0,Firefox3.5下测试通过。以后ExtAspNet将不会对IE6.0提供支持。 +2009-07-13 v2.0 beta2 -集成extjs最新版本v3.0。 +兼容IE6.0-7.0-8.0。 -这应该是Extjs3.0的一个BUG,在IE6.0-7.0下面设置Ext.QuickTips.init();会导致button的click事件无法响应(IE8下无此问题)。 -目前先禁用IE6.0-7.0的QuickTips。 -优化底层JavaScript。 +2009-07-05 v2.0 beta1 -更新extjs库到最新版本v3.0 RC2; 目前只有一个缺省皮肤(Theme)。 -使用YUI Compressor压缩JavaScript和CSS文件。 -Release版本每个页面只包含一个JavaScript文件(语言文件除外)和一个CSS文件。 -ExtAspNet自身的CSS会紧挨着页面标签引入,这样在中自定义的样式可以覆盖ExtAspNet缺省样式。 +Alert对话框会遮挡所有的Window窗口。 -使用一个变通的方法解决,因为无法改变Ext.Message的默认z-index(9000)所以将box.window_default_group的zseed调整为6000。 -为所有按钮的左右增加5px的空白边距:.x-btn button { margin: 0 5px !important; }。 -因为下拉列表不可编辑,所以不能为空,如果不设置SelectedIndex或SelectedValue,则默认选中第一项。 -重新绑定模拟树的下拉列表后,选中项的前面有图片的HTML标签的BUG。 -更新自定义JavaScript组件Ext.ux.SimplePagingToolbar。 -更新示例工程。 +2009-03-25 v1.3.1 -Tree在AJAX回发展开节点时JS错误[feedback:xlli]。[fixed] -Window中的EnableIFrame==false,则点击关闭按钮时报JS错误。[fixed] -页面包含FileUpload控件,需要点击按钮回发并上传文件,则不能采用原生AJAX方式。(参见示例aspnet/fileupload.aspx)[fixed] -HtmlEditor显示隐藏工具栏按钮不起作用,HtmlEditor目前不支持Enabled和Readonly两个属性。[fixed] +2009-03-03 v1.3.0 -如果弹出的窗口(Ext-Window)含有ASP.NET控件FileUpload,则此弹出窗口在关闭时出现JS错误(http://extjs.com/forum/showthread.php?t=8129)[feedback:xlli]。[fixed] -如果页面中存在ASP.NET控件(TextBox),则第二次提交表单就会报错(视图状态不对,其实时没有更新EventValidation隐藏字段导致的问题)。[fixed] -页面上放置ExtAspNet-Button和ASP.NET-Button,则点击ExtAspNet-Button时激发的是ASP.NET-Button的事件,这个BUG和Extjs2.2.1中Ext.Ajax.serializeForm的实现有关。[fixed] -ExtAspNet内部包含HtmlAgilityPack和Nii.JSON两个开源的第三方类库。[added] +如果以前你听过不要在ExtAspNet工程中使用ASP.NET标准控件的忠告,那么从v1.3.0版本开始,你可以忘掉这个说法,现在ExtAspNet控件和ASP.NET标准控件和平共处了。[fixed] -如果一个ASP.NET按钮控件要使用ExtAspNet的原生AJAX,只需要设置属性 UseSubmitBehavior="false" 即可。 -如果要在一次ExtAspNet的原生AJAX回发时更新ASP.NET控件的值,只需要调用PageManager的公共方法AddAjaxUpdateControl即可(示例:aspnet/aspnet.aspx)。 +2009-02-27 v1.2 beta9 -网络连接出错时的“Ajax Error”改成更加友好的提示信息“本次连接失败!可能是网络连接出错,请刷新页面重试。”。[fixed] -自动测试功能会在以后版本中逐步完善。这个版本完成测试框架,采用Extjs中JS函数进行大部分的测试,对于一些难以测试的地方借助jQuery完成。[fixed] +系统底层代码优化(主要是Javascript的封装和BUG修复)。[fixed] -底层使用Javascript创建一个Window控件的代码由原来的2000字符减少为500个字符。 -PageContext静态类中的GetPageStateChangedFunction改名为GetConfirmFormModifiedReference,底层代码优化。表示“获取当前页面中表单修改的确认提示框的脚本”。 ---[updated]删除PageContext中的GetConfirmFormModifiedReference,使用CurrentActiveWindow中的GetConfirmFormModifiedCloseReference/GetConfirmFormModifiedCloseRefreshReference/GetConfirmFormModifiedClosePostBackReference三个方法代替。 -不会修改弹出页面的URL(Ext-Window中的IFrame),以前为了实现功能为每个弹出页面添加box_parent_client_id查询字符串 -去除PageManager的RegisterPageStateChangedScript属性,现在已经将这个功能实现为静态的JS方法。可以通过PageContext.GetFormModifiedConfirmReference获取此方法的客户端脚本。 ---注意:以前的项目需要在所有的ASPX页面中查找RegisterPageStateChangedScript属性,并删除,否则会运行错误! -A页面有Ext-Window控件弹出B页面,B页面有Ext-Window控件弹出C页面,B页面的Ext-Window控件设置Target='_parent',则弹出的Ext-Window(C页面)会覆盖整个A页面,这是正确的。 ---当时如果用户直接访问B页面,就会报JS错误,因为此时找不到B页面的父页面A了。现在的版本修正为如果找不到父页面,则就在当前页面弹出窗口,这样用户直接访问B页面也不会出错了。 -Window控件的GetIFramePageStateChangedFunction函数改名为GetConfirmFormModifiedCloseReference,表示“获取先确认IFrame的页面中表单改变,然后关闭弹出窗口的客户端脚本”。 ---为Window控件增加如下两个方法GetConfirmFormModifiedCloseRefreshReference和GetConfirmFormModifiedClosePostBackReference,表示“先确认表单改变,然后关闭弹出Ext-Window,再然后刷新父页面或回发父页面”。 ---Window控件的OnClientCloseButtonClick属性如果不设置,则默认采用GetConfirmFormModifiedCloseReference,也即是先判断表单是否更新,然后在关闭窗口。 ---现在可以很方便的为Window控件的关闭按钮添加关闭后刷新父页面或者关闭后回发父页面的行为。 -如果弹出窗口(Window控件)中IFrame的页面不能正常加载(网络暂时出错或页面抛出异常),则此时点击右上角的关闭按钮会报JS错误,因为此时页面尚未加载完毕。 ---此版本修正了这个BUG,即时页面不能加载完全,也能通过右上角的关闭按钮关闭弹出含IFrame的窗体。 -Window控件的IFrameName属性是自动生成的,只读属性。(因为有可能所有的Ext-Window最终都渲染到最外层的页面,为了保证这些IFrame的name不同,IFrameName使用的是GUID,内部处理)。 -CurrentActiveWindow改名为ActiveWindow。 -[特别注意]GetWriteBackValueReference(string controlClientIds, string value, params string[] values)函数现在的定义是GetWriteBackValueReference(params string[] values) ---所有调用GetWriteBackValueReference的地方,需要删除第一个参数(一般是ActiveWindow.GetLoadStateReference())。 +2009-02-23 v1.2 beta8 -ContentPanel中内容不能自动扩展高度的BUG[feedback:huihuang]。[fixed] -DropDownList在Ajax回发时不能计算模拟树的数据[feedback:huihuang]。[fixed] -DropDownList在页面第一次加载时没有不可选择项,则回发时也不会有不可选择项的BUG。[fixed] -升级底层ExtJS类库为v2.2.1(此版本主要是Chrome的支持和部分内存泄漏问题的修正)。[fixed] -页面加载过程中的时间信息保存在Javascript变量window.box.timeInfo中。[added] +增加部分自动测试支持(使用WatiN和NUnit),下个版本将会提供完整的自动测试支持。[fixed] +2008-10-28 v1.2 beta7 -DropDownList没有选中任何一项,回发时报错[feedback:huihuang]。[fixed] -Window显示位置不对,以及不能拖动的BUG[feedback:huihuang]。[fixed] +PageContext优化。[fixed] -去除RegisterExclusiveScript静态函数(这是没有原生ajax之前的产物),使用RegisterStartupScript替代。 -去除RegisterStartupScript的重载函数,只保留最简单的PageContext.RegisterStartupScript(string script)函数。 -Resirect增加重载函数Redirect(string url, string target),其中target可能的取值为_self,_parent,_top,分别表示在当前窗口,父窗口,顶级窗口重定向[feedback:jqpeng]。 -Image控件增加ImageWidth/ImageHeight/ImageCssStyle/ImageCssClass/ImageAlt属性[feedback:jqpeng]。[fixed] -发布包中增加一个Web.config.txt,这是一个空的Web.config文件,包含BOX基本的配置信息。[fixed] -ContentPanel的ShowHeader和ShowBorder属性默认也是true(注意更新以前的应用)。[fixed] -Row和Column布局时,修正IE下设置RowHeight="100%"时显示不正确的BUG。[fixed] -AccordionLink当鼠标移上和移开时,有背景色的变化效果[feedback:huihuang]。[fixed] +TabStrip的Tab控件的EnablePostBack属性会在回发时保持(也即是说如果EnablePostBack=true,回发时没改变EnablePostBack的值,则每次切换到此Tab都会回发)。[fixed] -有这样一个效果,如果Tab1默认显示,Tab1的EnablePostBack=true,则页面加载完毕后会回发Tab1一次。 +2008-10-20 v1.2 beta6 +使用控件的站点必须建立虚拟目录,否则会报JS错误(即是脚本资源没有加载),却原来是HTTPCompress组件的问题。[fixed] -需要替换新的blowery.Web.HttpCompress.dll,解决方案见http://pohee.com/it/http-compression-in-aspnet-20/。 +DropDownList优化。[fixed] -去除EnableFirstItem/FirstItemText/FirstItemValue,这个并不能带来很大的好处,反而容易让开发人员困惑。 现在可以方便的在后台DropDownList1.Items.Insert(0, new ExtAspNet.ListItem("全部", "-1"));来达到同样的效果。 +如果某项(ListItem)的Value为空字符串,则通过SelectedIndex和SelectedValue不能选中[feedback:jqpeng]。 -和Asp.net中的保持一致,ListItem的Value值可以为空字符串。 也就是可以这样写DropDownList1.SelectedValue = ""; -ListItemCollection增加重载函数Add(string text, string value),这样方便后台添加列表项。 -处于布局内的容器控件(Layout!=LayoutType.Container),AutoHeight会自动设置为false(避免开发人员发生此类错误)。[fixed] -注意,控件的高度指的是整个控件的高度,包含BodyPadding(这和CSS中的height不同,CSS中的height是指内容的高度,除去padding/border-width/margin)。[fixed] +为所有控件属性增加在VS中的智能提示。[fixed] -需要将ExtAspNet.XML和ExtAspNet.dll放在一起,这样引用dll时xml会被拷贝到bin目录下,提供VS的智能提示。 +控件的属性如果是枚举类型,如果此属性可以不取值,则默认为None。[fixed] -TriggerIconType.Default -> TriggerIconType.None -SystemIconType.Empty -> SystemIconType.None -RegexPattern.USER_DEFINED -> RegexPattern.None -表单验证属性名称变化(ValueToCompare->CompareValue,ControlToCompare->CompareControl)。[fixed] +注意:一个属性可以拥有多个值的情况。[fixed] -属性和CSS相关则用空格分隔(比如ColumnWidths,BodyPadding)。 -其他的都是逗号分隔(比如ValidateForms,DataKeyNames,DataNavigateUrlFields)。 +AccordionLink实现为控件。[fixed] -可以方便的在子页面(iframe)中通过js切换父页面中选中的菜单项(Accordion->AccordionLink)(示例在other/accordion_links_run.aspx,other/accordion_links_run_iframe_htm)[feedback:jima]。 +确认:可以方便的动态添加控件,并且可以给控件添加服务器端事件(示例在form/form_dynamic_run.aspx)。[fixed] +2008-10-15 v1.2 beta5 -验证表单字段的ValueToCompare属性,为字符串时会出错的BUG。[fixed] +优化下拉列表。[fixed] -验证下拉列表时,应该取ListItem的Value属性进行验证,而不是Text属性。 -DropDownList的Items增加Insert方法(可方便的下拉列表选项添加“全部”)。 -DropDownList不支持EmptyText属性。 -ListItem启用EnableSelect和SimulateTreeLevel属性,这样就可以直接在前台(ASPX)中设置哪些项不可选择,以及创建模拟下拉树。 -DropDownList增加EnableSimulateTree属性(默认为false),如果设置了DataSimulateTreeLevelField,则自动将EnableSimulateTree设置为true。 +2008-09-27 v1.2 beta4 +EnableLargeHeader属性对所有容器的效果一样,Accordion的属性EnableLargeHeader只会改变Accordion的标题大小,而不会对AccordionPanel起作用(示例见other/accordion_run.aspx)。[fixed] -Accordion去除EnableHightlight属性,AccordionPanel增加EnableHightlight属性。 -影响以前使用Box的应用,需要将Accordion的属性去掉,然后为每个AccordionPanel增加EnableLargeHeader和EnableHightlight属性。 -AccordionPanel鼠标移上去的样式调整(现在没有下面的一条白线了)。[fixed] +AccordionPanel增加Links属性,可以绑定列表数据到AccordionPanel,呈现的是链接的列表(示例在other/accordion_links_run.aspx)。[fixed] -原来放置在AccordionPanel中的容器,比如ContentPanel需要在外层加上标签。 -适当增大AccordionPanel中链接的高度20px->22px,同时对链接的样式也做了微调。 -通过BodyPadding控制链接列表的边距。 -这样能大大减少ASPX中HTML代码和Javascript代码的书写,可以在后台动态添加链接,效果很赞,此需求由马季提出。 +2008-09-25 v1.2 beta3 +代码优化与设计时支持(尚需要不断完善,目前可以在ASPX页切换到“设计时”,方便属性的更改和事件处理函数的添加)。[fixed] -Panel/GroupPanel/ContentPanel/Tree/HiddenField/PageLoading -TabStrip/Toolbar -TabStrip去除Plain属性,增加EnableTitleBackgroundColor(默认为true)。[fixed] -向Form中动态添加控件的BUG,现在form/form_dynamic_run.aspx示例已经能正确运行。[fixed] +大部分容器的子控件集合更正为Items(以前有些是Rows)。[fixed] -影响的控件包括Toolbar/Accordion/AccordionPanel/GroupPanel/Panel/SimpleForm/Window等。 -保留Form的Rows(FormRowCollection)属性和Grid的Rows属性(GridRowCollection)。 -保留TabStrip的Tabs(TabCollection)属性。 -保留PageLayout/BorderLayout的Regions(RegionCollection)属性。 -预祝今晚神七发射成功。 +2008-09-22 v1.2 beta2 +Grid选中项(SelectedRowIndexArray)在ajax回发过程中存在BUG [feedback:xmzhu]。[fixed] -表现为对Grid进行多次删除添加操作后,SelectedRowIndexArray选中项中会存在当前不存在的行序号,导致服务器端遍历选中项时数组越界。所有使用box控件的应用程序都受到此BUG的影响,需尽快更新到新版本。 +代码优化与设计时支持(示例中表单控件都已支持设计)。[fixed] -PageManager/SimpleForm/Button/HyperLink/Label/Image/LinkButton/TextBox -TriggerBox/TwinTriggerBox/Window/TextArea/HtmlEditor/DatePicker/NumberBox -CheckBox/RadioButton/RadioButtonList/DropDownList -Grid +2008-09-19 v1.2 beta1 -Image/LinkButton/HyperLink增加一些Ajax可更新属性。[fixed] +隐藏的方式由HideMode属性控制Visibility/Offsets/Display。[fixed] -修正Form/SimpleForm中隐藏一个表单字段(Hidden=false)会占据页面空间的BUG。 -ToolbarText/ToolbarFill/ToolbarSeparator在ASPX中设置Hidden=true不起作用的BUG [feedback:jbzhang]。[fixed] -Button去除MarginRight属性(可以通过CssStyle="margin-right:5px;"达到相同的效果)[fixed] +2008-09-09 v1.1 +Toolbar去除IsPageMenu属性,在网报中可以用自定义样式实现,而不应该写在控件中。[fixed] -网报:CssClass="toolbar-pagemenu" CssStyle="border:0px;",同时定义样式:.toolbar-pagemenu{ background: rgb(208, 222, 240) url(../images/pagemenu_toolbar_background.gif) repeat-x left top;}。 -Region去除默认的Layout=Fit,如果希望Region使用Fit/Anchor/Column/Row等布局的话,需要手工指定。[fixed] -ToolbarSeparator/ToolbarFill在Ajax更新Hidden属性的BUG。[fixed] +布局整理。[fixed] -新增Column/Absolute/Row三种布局,加上以前的Container/Fit/Anchor/Accordion/Border/Form六种布局,总共有9中布局可供使用。 -其中一些控件默认使用一种布局:SimpleForm(Form)/Form(Form)/Panel-GroupPanel(Container)/Accordion(Accordion)/PageLayout(Border)/BorderLayout(Border)/TabStrip(Card),所有布局控件默认的布局是Container。 -经常用到的布局控件:SimpleForm/Form/Accordion/TabStrip/BorderLayout,经常用到的布局:Fit/Row/Anchor +2008-09-08 v1.1 beta7 -MenuButton/MenuHyperLink增加HideOnClick属性,如果一个菜单项的作用仅仅为了弹出下级菜单,点击没反应,则可以这样设置HideOnClick="false" CssStyle="cursor:default;" [feedback:huayu]。[fixed] -MenuButton/MenuHyperLink/MenuSeparator/MenuText增加Hidden属性(此属性是Ajax可更新属性,如果需要在Ajax时显示隐藏菜单,请使用此属性而不是Visible属性)。[fixed] +大部分的ExtAspNet控件增加Hidden属性(少数几个控件没有此属性:Menu),这样在Ajax时可以显示隐藏控件。[fixed] -注意Visible和Hidden的区别:Visible=false的属性不会渲染到客户端,Hidden=true的控件渲染到客户端但是隐藏。 -US的ExtAspNet改造强烈依赖于此属性,这个版本发布后可以继续。 -网报中唯一没有用到ExtAspNetAjax的地方就是显示隐藏表单字段,现在也可以使用Ajax了。 +2008-09-04 v1.1 beta6 -PageContext.Redirect支持普通页面转向和ExtAspNetAjax下页面转向。[fixed] +模拟树的下拉列表的BUG(会使一些可选项变成不可选项)[feedback:xmzhu]。[fixed] -因为if("0,2,9,11,".indexOf('1,')>=0){ok},这显然是不对的,此BUG涉及很多控件(Grid,DropDownList,TabStrip)。 -解决方法:testValue += '';if(domValue.split(',').indexOf(testValue) >= 0){ok}。 -DropDownList在Ajax时应该先更新数据再设置选定项 [feedback:xmzhu]。[fixed] -Button/MenuButton增加Ajax可更新属性OnClientClick [feedback:xmzhu]。[fixed] -Tree的Ajax支持(尚需优化)。[fixed] +2008-09-02 v1.1 beta5 -DropDownList如果第一次没有绑定值,应该绑定到[[]](二维数组),而不是[](一维数组)。[fixed] -模拟树的DropDownList,在Ajax重新绑定DataSource后,保持项是否可选状态是最新的(页面第一次加载时,即使没有数据也需要设置DataTextField/DataValueField/DataSimulateTreeLevelField/DataEnableSelectField等属性的值,否则Ajax回发时会出错)。[fixed] -UserControlConnector导致的Ajax错误,去除UpdatePanelConnector控件(以后不会用AspnetAjax,这个控件已经完成使命)。[fixed] -不要使用Asp.net的控件HiddenField,而是使用ExtAspNet的HiddenField,因为Asp.net的控件在Ajax不会被更新,所以会导致视图状态不一致的错误。[fixed] -网报Ajax整合基本完成(除了待审批->下一步[审核/归档/出纳]操作,由于需要显示隐藏表单字段,目前Ajax不支持,使用的还是普通的PostBack)。[fixed] -IE下,RadioButtonList中项如果存在汉字,则会换行的BUG。[fixed] -增加两个Theme[Slate/Black](样式尚需完善)。[fixed] +2008-09-01 v1.1 beta4 -非当前Tab中如果有ContentPanel,则在页面上方会有空白(可以通过设置EnableDeferredRender=false解决,但会减慢页面的加载速度),现在已经解决这个问题。[fixed] -RadioButtonList去除EnableBackgroundColor/EnableLightBackgroundColor属性,背景色是透明的,也就是和父控件(SimpleForm/Form)的背景色一致。[fixed] -TwinTriggerBox的第一个Trigger图标不会先显示再隐藏,而是直接隐藏掉(如果用户设置ShowTrigger1=false)。[fixed] -Web.config中增加配置项FormLabelWidth="80"(默认为80),同时PageManager增加FormLabelWidth属性用来控制页面上所有SimpleForm/Form的表单字段标题的宽度。[fixed] +完善Ajax。[fixed] -RadioButtonList增加Ajax可更新属性SelectedIndex(SelectedValue/SelectedItem)。 -DropDownList增加Ajax可更新属性Enable/SelectedIndex(SelectedValue/SelectedItem)/DataSource。 -Grid增加Ajax可更新属性Columns(也就是说Grid列在回发时隐藏显示了一些,也能正确的Ajax)。 -ToolbarText增加Ajax可更新属性Text。 +2008-08-31 v1.1 beta3 -TabStrip增加EnableDeferredRender属性(是否启用延迟加载Tab,默认启用)。[fixed] -重定向页面,使用系统的方法 PageContext.Redirect(string url),使用Response.Redirect方法会出错。[fixed] +安全的Ajax设计。[fixed] -这个版本Ajax和上个版本(v1.1beta1)在设计思路上有很大区别,同时在速度上会有进一步的提升。 -基本思想:安全的Ajax交互,明确Ajax回发时支持控件哪些属性的改变,这将适合90%的应用场景(并且具有极快的反应速度),对于需要UI大改动的可采用常规回发,系统提供控件级别的EnableAjax属性。 -整理支持Ajax的控件属性改变列表(所有被支持的属性改变都是安全的、快速的,所有不被支持的属性改变不会对UI起作用,同时是安全的,不会有js错误)。 -网报Ajax整合(目前只支持所有的列表页面)(v0.8.1)。[fixed] +2008-08-29 v1.1 beta1 +Window控件是否弹出的状态在回发时维持。[fixed] -控件设计的一个原则,凡是可以在客户端改变的属性都应该在回发时保持属性的状态。 +完全抛弃Asp.NetAjax,ExtAspNet控件内置Ajax支持。[fixed] -这是一个值得骄傲的设计,可以明显提高页面回发的速度(相比普通的回发和Asp.netAjax的回发),对于IFrame框架的交互也起到很好的加速效果。 -不需要做任何配置,所有的回发都是Ajax(在Web.config和PageManager中有设置启用Ajax回发的属性-EnableAjax-默认为true)。 +在这种设计下,其实可以完全抛弃Javascript。 -比如简单的点击一个按钮弹出窗口,可以在Button的OnClick事件中设置Window1.Popup=true,也可以注册Button的OnClientClick=Window1.GetShowReference()。 -第一种方法需要回发,但是我们内置的Ajax支持能很快的返回需要的结果并解析,在网络速度很快的情况下和第二种方法差别不是很大。 -推荐的做法是尽量用客户端实现,客户端实现复杂的直接用服务器端实现。 +目前ExtAspNetAjax的限制。 -只对ExtAspNet控件起作用,对Asp.net控件不起作用。 -对容器控件(有子控件的控件)不起作用,只对最底层的控件起作用。 -对改变控件的Visible属性会有错误。 -Window控件的属性改变只有少数几个起作用(Popup,IFrameUrl)。 -PageManager增加属性EnablePageLoading和EnableAjaxLoading(启用页面第一次加载标示和Ajax加载标示,默认都为true),所以如果使用系统默认的加载标示就不必每个页面都添加PageLoading控件。[fixed] -Grid中的回发事件(主要是LinkButtonField和CheckBoxField(RenderAsStaticField=false))要延迟0ms执行,这样当前行被选中的状态在回发后会得到保持。[fixed] -Grid选中行的状态在第一次回发时不能保持的BUG。[fixed] +2008-08-26 v1.0 +已知问题:IE的ActiveX插件IE Developer Toolbar会对IFrame的加载造成0.5m左右的延迟。 -主要是父页面加载一个比较大的css文件(~100k),则每次打开iframe页面,onload事件的调用都会有500ms左右的延迟,在测试IE性能时要禁用此插件。 +优化弹出窗口中IFrame的显示速度。[fixed] -在当前页面弹出窗口需要~20ms,在父页面弹出窗口需要100~300ms。通过缓存弹出的窗口实例,从而第二次弹出窗口不再需要创建时间。 -PageLayout的Region增加SplitColor属性,默认的背景色是透明的。(在网报中需要设置SplitColor="#CADDF7",以便分隔符的颜色和Toolbar的颜色一致)[fixed] +PageManager增加属性Theme、Language、FormMessageTarget、FormOffsetRight等属性,这些属性可以在Web.config中设置(推荐方法),也可以为每个页面设置。[fixed] -一个典型的应用是为每个用户设置不同的皮肤(根据用户浏览器中Cookie设置的值)(示例在default.aspx)。 -TreeNode增加属性SingleClickExpand,表示点击可切换节点的折叠展开状态。[fixed] +TabStrip中非当前Tab会延迟渲染。[fixed] -这会明显加快页面的渲染速度,网报中一个典型的费用审批页面可以减少200ms的渲染时间。 -由于非当前Tab不会在页面加载时渲染,所以那些Tab中的节点在页面加载后也是不可见的,需要将相关的脚本移动到控件的render事件中。 -不能比较两个DataPicker大小的BUG。[fixed] -TabStrip延迟加载引起的BUG(非当前Tab中的ContentPanel会占据页面空间,已修正)。[fixed] -全新的ExtAspNet.Examples(基础知识/表单控件/数据绑定/容器布局/IFrame框架)。[fixed] +2008-08-19 v0.4 beta6 +PageManager增加两个属性(EnableInlineStyleJavascript/ApplyParentStyleJavascript),可以在IFrame页面中使用父页面的脚本和样式(示例在iframe/default.aspx和iframe/page3.aspx)。[fixed] -测试发现,IFrame页面的加载速度并没有明显加快,可以先不使用此属性。 -RadioButtonList放在在BorderLayout中显示不了的BUG [feedback:zgjiang2]。[fixed] +extjs的BUG,当页面中含有iframe时,Ext.onReady会被调用两次(IE6/IE7)(http://www.extjs.net/forum/showthread.php?t=43246)(示例在test.aspx)[fixed] -现在的解决方法是在初始化时:if(this.initialized){return;}this.initialized=true; +需要先回发页面再弹出IFrame窗口。[fixed] -在回发时设置窗口的Popup和IFrameUrl属性,因为这些属性是可以保持状态的,所以在关闭窗口时要注意设置Popup=false。 -另一种做法(推荐):PageContext.RegisterStartupScript(Window99.GetShowReference("./simpleform.aspx"));。 +2008-08-15 v0.4 beta5 -点击关闭窗口的按钮,在IE6下会有JS错误。[fixed] -增加BorderLayout控件,示例在iframe/borderlayout.aspx。[fixed] +Radiobuttonlist显示有重影(示例在radio.aspx)。[fixed] -全新的样式。 -去除Horizontal属性,增加ColumnNumber(可以设置渲染成几列)。 -GetValueReference取得的值不正确的BUG。 -动态向Form中添加FormRow,并动态的向FormRow中添加表单字段,以及如何取得表单字段的值。(示例在form_dynamic.aspx)[fixed] +IFrame弹出窗口关闭后回发父页面,则会多加载IFrame一次,再次打开窗口会重复加载IFrame2-3次[feedback:xmzhu]。[fixed] -这是一个重要的BUG,会严重影响页面的加载速度。原因是通过脚本改变的IFrameUrl会在回发时保持状态,从而回发父页面后Window中的IFrame被添加到页面,而这是不需要的。 -现在"是否弹出窗口窗口标题、IFrameUrl"在客户端的改变,不会影响服务器端的属性,也即是不保持状态。此问题解决。(示例在button_iframe.aspx) +2008-08-13 v0.4 beta4 -点击关闭窗口的按钮,在IE下会有JS错误。[fixed] -Window的右上角关闭图标增加提示,优化事件响应。[fixed] -Window的代码重构。[fixed] +修正一个的内存泄漏。[fixed] -IE7下测试,打开iframe/default.aspx页面,iexplorer占内存68.368M。 -内存存在泄漏时,点击iframe/page3.aspx页面8次后iexplorer占118.792M内存。 -修正后,点击iframe/page3.aspx页面8次后iexplorer占76.492M内存。 -IE窗口最小化时,IE会自动进行垃圾回收。 +2008-08-12 v0.4 beta3 -底层的javascript框架Extjs升级为v2.2,Grid的渲染速度有很大提升。[fixed] -Grid的EnableDelayRender默认为true(如果没有设置Grid的高度或通过布局间接设置高度,则行不可见,可以通过AutoHeight="true"解决)。[fixed] +页面正在加载的提示尽早的显示出来。[fixed] -首先在执行js来完成页面渲染之前延迟5ms,以便浏览器把当前页面内容显示出来。 -加载js脚本的script标签放置在页面的最后,放置加载js而阻塞PageLoading的显示。 +2008-08-08 v0.4 beta2 -TabStrip延时加载出错。[fixed] -Window的IFrameUrl处理的BUG,比如Pages_ExtAspNet目录下的页面应该为./FE_ApplyEditor.aspx或~/Pages_ExtAspNet/FE_ApplyEditor.aspx。[fixed] -Window的WindowPosition="Center"并且Target="_parent",则会JS错误。[fixed] -实现网报首页下拉菜单和左侧菜单的导航功能。[fixed] -Window的创建在页面显示后进行,不计算在js渲染时间内。[fixed] -优化费用申请页面(尽量减少不必要的层次嵌套)。[fixed] -button_iframe.aspx默认会加载form.aspx页面(Window控件的BUG)。[fixed] -Window中的保存并关闭按钮和Asp.netAjax冲突。[fixed] -优化关闭Window的js脚本,减少写到页面的js大小。[fixed] -加快“保存并关闭”按钮关闭窗口的速度,使用PageContext.RegisterExclusiveScript(CurrentActiveWindow.GetClosePostBackReference());,示例在(simpleform.aspx)。[fixed] +2008-08-05 v0.4 beta1 -DropDownList去除Traditional属性,和传统的Asp.net控件一样不可编辑。[fixed] -DropDownList增加SelectedText属性(去除了模拟树时通过SelectedItem.Text的多余html字符)。[fixed] -为了加快渲染速度,去掉一些特效(比如Panel的折叠效果,Grid的拖动列效果等)[feedback:dcding]。[fixed] -将生成的js对象的名称简单化,这样可以减少生成的js内容,加快页面加载速度(一个典型页面的js由原来的33.0k降低为21.4k)。[fixed] +弹出窗口中,点击按钮回发然后点击关闭按钮,出现js错误 [feedback:xmzhu]。[fixed] -因为在页面的Page_Load中,if (!IsPostBack){PageContext.RegisterPageStateChangedStartupScript();}通过这样方法向页面注册了一段脚本,但是这段脚本在回发时没有注册到页面,因为js调用此脚本时报错。 -一种解决方法是将向页面注册脚本的函数移动到if语句的外面,即每次都向页面注册此脚本。 -另一种办法就是在PageManager控件中增加RegisterPageStateChangedScript(向页面注册监视页面中表单内容改变的脚本)的属性(会在每次页面回发(包含ajax回发)时注册脚本)(示例在button_iframe.aspx/simpleform.aspx)。 +PageManager控件增加ExecuteOnReadyWhenPostBack属性(示例在onreadyscript.aspx)。[fixed] -这个手工添加onReady函数能够在每次页面回发时都注册脚本(包括Ajax局部回发),这就避免了手工去做的麻烦(已经在网报中遇到这种情况)。 -每个页面必须添加一个PageManager控件,否则会出错,同时去除DesignTimeStyle控件(作为PageManager的属性出现)。[fixed] -TextField等表单字段增加Readonly属性。[fixed] +全新设计的IFrame的架构(尽可能和基于MasterPage的架构保持兼容,和Asp.net Ajax保持兼容)。[fixed] -最大的好处是可以减少页面下载完毕后Javascript渲染时间(可以节约一般的渲染时间)。(所有示例在iframe文件夹下) +示例1,通过点击按钮弹出IFrame窗口,可直接关闭父页面,也可在关闭后刷新或回发父页面。(default.aspx/page2.aspx/simpleform.aspx) -虽然IFrame和Master两种架构差异迥然,或许你以为需要修改一堆代码来完成这种转换,起初我也是这么认为的,但是现在你所要做的仅仅是为Window控件增加一个属性(Target="_parent"),就完成了两种框架的转换,是不是很酷。 -显然,控件本身封装了大量的代码,简单来看现在有三个页面(default.aspx(A)/page2.aspx(B)/simpleform.aspx(C)),其中A包含B页面,当你在B中打开包含有页面C的窗口时,窗口不是在B中打开,而是在A中打开,这样才能保证窗口覆盖整个页面,当你从C中返回需要回发页面B时,却发现取得的是A页面,因为我们窗口是在A页面中创建的。我会通过一篇文章来揭示这一过程,敬请期待。 -示例2,Grid中弹出窗口。(default.aspx/page3.aspx/simpleform.aspx) +示例3,TriggerBox弹出窗口。(default.aspx/triggerbox.aspx/simpleform.aspx) -在整个页面弹出窗口或者在当前页面弹出窗口,仅仅设置Window的Target属性即可。 -示例4,弹出窗口中的弹出窗口。 -对整个Examples更新测试。[fixed] +2008-07-31 v0.3 beta12 -IE下TabStrip在Ajax回发后不会去掉x-hide-display样式,导致Tab显示为空的BUG。[fixed] -对TabStrip/Panel/Window中的IFrame重新设计,如果设置IFrameUrl="#"或者"about:blank",则不渲染iframe到页面节点,同时第二次打开Window中的IFrame不会有残影出现。[fixed] -如果TabStrip的Tab不是激活Tab并且设置了IFrameUrl,则会延迟加载(示例在tabstrip_iframe.aspx)。[fixed] -Tree控件,点击一个节点自动回发,则当前点击的那个节点的选中状态不会保持的BUG [feedback:zgjiang2]。[fixed] +规范关闭窗口时提示用户保存已经修改的内容提示的调用方式(包含iframe中关闭按钮和window右上角关闭图标的调用方式)(示例在grid_iframe.aspx/simpleform.aspx)。[fixed] -内部实现上,点击“保存并关闭按钮”,可以将关闭窗口的脚本更早的执行(在simpleform.aspx,PageContext.RegisterStartupScript增加重载函数),而不是原来的先创建整个页面UI,再关闭窗口。 -参照Yslow的评分规则,将JS文件引用由head移动到body中。[fixed] -Firefox下,如果页面太长会出滚动条,原来在ViewPort样式中有body{overflow:hidden;}。[fixed] +IFrame内的页面宽度和高度会自动设置(是不是还在为1px/2px的白边而烦恼,现在不用了:-)(示例在iframe_autosize.aspx/simpleform.aspx/simpleform2.aspx)[fixed] -增加PageManager控件(需要指定AutoSizePanelID,即需要设置宽度和高度为整个页面的宽度和高度的Panel),HideScrollbar属性用于隐藏滚动条(IE/Firefox)。 +2008-07-24 v0.3 beta11 -web.config配置信息中MessageTarget改名为FormMessageTarget,增加FormOffsetRight配置项,用来定义全局表单字段距离右边界的宽度,同时每个表单字段都增加OffsetRight属性 [feedback:jima]。[fixed] -Window在回发时设置的Title不起作用的BUG。[fixed] -增加Image控件 [feedback:jima]。[fixed] -Tree控件,如果一个节点不是叶子节点并且没有子节点,则应把它的Expanded设置为false,否则会引起页面死循环回发 [feedback:zgjiang2]。[fixed] -Image增加ToolTipTitle/ToolTipAutoHide两个属性,当提示信息特别长时,可以让用户阅读完毕之后手工关闭提示信息(示例在hyperlink.aspx)。[fixed] -去掉DropDownList控件的Text属性(强制性),可以通过设置SelectedValue来设置选中哪一项 [feedback:xmzhu]。[fixed] -过滤提示消息中的换行符(转换为),否则提示信息可能导致页面渲染错误 [feedback:dcding]。[fixed] +2008-07-23 v0.3 beta10 +完善Tree控件。[fixed] -如何将数据库中的数据绑定到Tree(示例在tree2_bind_database.aspx)。 -ajax加载树节点,放在UpdatePanel中才有ajax的效果(示例在tree2_ajax.aspx)。 -更改TreeNode的ID为NodeId,否则两个树中不能有相同ID的TreeNode,这是不合理的。 -Grid的GridColumn的ID改名成ColumnId,否则同一个页面放置两个Grid,它们的GridColumn的ID不能同名,这是不合理的。注意需要更新以前的代码![fixed] -Grid所有类型的列增加DataTooltipField/DataTooltipFormatString两个字段,以显示ToolTip(示例在grid.aspx)。[fixed] +2008-07-22 v0.3 beta9 +IE6下,左侧导航链接的选中样式,以及鼠标移上去和移开的样式不对。[fixed] -发现原来ie6不能正确解析li的高度,必须手工设置才行(style="height:20px;")。 +IE6/IE7下,模拟树的下拉列表如果文字长度太长,则显示的文字会换行,导致错位。[fixed] -虽然最后未能解决##差旅交通费在IE和Firefox下显示的不同效果。 -但是通过用来代替,从而实现FF和IE下样式的统一。 -刚看到old9的解决方案:把“差旅交通费”改成“差旅交通费”,在IE下和FF下的都不换行,:-) -LinkButton增加OnClick事件 [feedback:huihuang]。[fixed] -Window通过设置IFrameUrl和Popup不起作用的BUG。[feedback:xmzhu]。[fixed] +增加树控件(Tree)(示例在tree2.aspx)。[fixed] -可以在回发时维持树的状态(选中行,折叠/展开,CheckBox)。 -可以通过Inline的方式添加树节点,也可以绑定到XmlDocument/XmlDataSource/SiteMap。 -点击树节点可以链接到页面,也可以引发PostBack事件,可以添加自定义脚本。 +2008-07-16 v0.3 beta8 +ContentPanel中放置ExtAspNet控件,则渲染时会出现各种问题,比如下拉列表显示样式出错,Grid没了滚动条等等。[fixed] -隐蔽性非常强,原来在ContentPanel中渲染ExtAspNet控件,如果容器的display='none',则会出现各种问题(主要是大小不对)。 必须设置容器为visibility='hidden',然后在渲染完成后显示容器。 -现在Grid只要显示的设置高度和宽度,或者隐式的设定宽度高度(通过Anchor或Fit布局实现),只要超过Grid容器就会显示滚动条。 +IE6下,在应用Asp.NetAjax后,Form中字段的宽度渲染不正确。[fixed] -调试相当困难,如果你有过在IE下通过alert发现问题的经历,你就能明白。 -最后发现IE6下应用Asp.NetAjax后不仅Form中列的宽度设置不正确,而且主内容区域的宽度设置也不正确,不过最终我们还是顽强的修复了IE6下的这个BUG: 在MasterPage的onReady函数中,首先修正内容区域的宽度(region3.setWidth(pageLayout1.getSize().width - region2.getSize().width - 5);region3.doLayout();),然后修正页面中所有表单的宽度(box_fixFormWidthInIE6();): 示例在 Site.Master 页面。 +集成的AspNetAjax有一个很大的BUG,只要你在页面上进行过ajax操作,当改变窗口大小时你会惊讶的发现内容区域的内容全部为空了![fixed] -解决方法相当怪异,经过一个下午的不断尝试,终于用一个怪异的方法解决(box.{0}.setSize(box.{0}.getSize());box.{0}.doLayout();), 这样的代码让我想起刷新窗口时那个方法(window.location.href=window.location.href;),不管怎么说,我对能很好的解决这个重大的BUG很是欣喜。 +2008-07-14 v0.3 beta6 -增加FlashObject控件。[fixed] -PageLoading增加EnableFadeOut属性(默认false),可以启用淡出效果。[fixed] -Accordion选中样式微调。[fixed] -预加载Form表单出错时提示信息的背景图片。[fixed] +Grid增加EnableDelayRender属性(默认false),可以加快页面的渲染速度(一个典型的20个记录的页面,可提前0.7s-1s显示出来)。[fixed] -因为延迟加载数据不会改变Grid的大小,所以对于非布局内或不设定高度宽度的Grid,需要设置"EnableDelayRender=false"。 -改变Grid中静态的CheckBoxField图片。[fixed] -TabStrip增加TabIndexChanged事件,同时Tab增加EnablePostBack,可以在点击一个Tab时引起回发事件。这在延迟加载Tab的内容非常有用。(示例在tabstrip.aspx)[fixed] +2008-07-12 v0.3 beta5 -页面菜单Toolbar的分割符和背景不相融合。[fixed] -表单字段之间可以比较大小,比如NumberBox可以和Label比较大小,同时增加CompareType,来指定比较的类型(示例在form_compare.aspx)。[fixed] -如果是同种类型的表单字段,不需要指定CompareType,比如两个NumberBox比较值的大小不需要指定CompareType,而一个NumberBox和TextBox比较大小需要指定CompareType。 +如果在编辑页面使用AspNetAjax,则不能在回发时关闭当前窗口[feedback:huihuang](示例在ajax_editor_main.aspx/ajax_editor.aspx)。[fixed] -这是由于ajax后执行的javascript中不能有return false语句。 +在文本框失去焦点时,执行一些Javascript脚本(示例在textbox_blur.aspx) [feedback:xmzhu]。[fixed] -在页面添加onReady函数(会被系统调用),然后用javascript监视文本框值的改变。 -弹出Window默认显示的错误页面,解决方法在当前目录添加一个空的html页面,然后把Window控件的IFrameUrl指向这个页面而不是"#"。[fixed] +弹出的窗口中的弹出窗口的如果内容发生变化,则点击右上角的关闭按钮时会有提示用户先保存的对话框,但是这个对话框的被第二个弹出窗口覆盖了 [feedback:xmzhu]。[fixed] -原来的调用方法太麻烦(见示例中alert\alert_1.aspx和alert\alert_2.aspx,总计 6 行代码),现在只需要 3 行代码就OK了。 -点击提交按钮后变成灰色不可再次点击(示例在button_click_gray.aspx)[feedback:jima]。[fixed] +增加Menu、MenuText、MenuSeparator、MenuButton、MenuHyperLink控件,用于按钮的下拉菜单(示例在button_menu.aspx)。[fixed] -增加SplitButton控件。[fixed] +2008-07-09 v0.3 beta4 -DataPicker默认的日期格式为(yyyy-MM-dd)。[fixed] +Form表单字段(TextBox,DropDownList...)之间可以比较大小 [feedback:huihuang]。[fixed] -增加ControlToCompare/ValueToCompare/CompareOperator/CompareMessage四个属性,示例在form_compare.aspx。 +TabStrip中放置IFrame会出现渲染错误 (示例在tabstrip_iframe.aspx)[feedback:jima]。[fixed] -特殊处理,拥有IFrame的Tab如果不是激活Tab,则不设置Url,只有在激活时才设置Url。 -RadioButtonList增加AutoPostBack属性(示例在radio.aspx) [feedback:xmzhu]。[fixed] -FormRow可以设置各列的宽度百分比 (示例在form_columnwidths.aspx)[feedback:jima]。[fixed] +表单字段Enable=false时显示颜色太浅 [feedback:jima]。[fixed] -覆盖缺省样式的.x-item-disabled,设置不透明。 +2008-07-08 v0.3 beta3 -Grid没有数据,向后翻页按钮可以点击的BUG [feedback:huihuang]。[fixed] +增加HiddenField控件。[fixed] -其实用TextBox也能模拟HiddenField的行为,只需要设置CssStyle="display:none;"即可。 +TriggerBox 如果 EnableTextBox = true,则不能将Text回发(这是html的限制)。[fixed] -最后的解决方案居然是设置 readonly=true,同时更改属性为 Readonly(示例在textbox2.aspx)。 -模拟树的下拉列表在失去焦点显示的文字不对的BUG。[fixed] +控制下拉列表某些项不可以选择(示例在dropdownlist2.aspx)。[fixed] -增加 DataEnableSelectField 属性,不可选择的项变灰,并且鼠标经过时没有样式。 -LinkButton和Grid的LinkButtonField增加Enable属性(示例在hyperlink.aspx和grid.aspx)。[fixed] +2008-07-07 v0.3 beta2 +增加UpdatePanelConnector控件,支持在布局构建的页面使用Asp.net Ajax。[fixed] -使用UpdatePanelConnector有一个要求:ContentTemplate下只能有一个子节点,比如box:Panel。 -示例在ajax3.aspx/content_page4.aspx。 -示例content_page3.aspx中,点击“Ajax查询”按钮和关闭弹出的窗口(点击右上角的叉)都引发异步更新。 +2008-07-03 v0.3 beta1 +容器控件的AutoHeight/AutoWidth默认为false。[fixed] -使用GroupPanel的地方需要手工添加AutoHeight="true"属性。 +增加UserControlConnector,可以在其中放置用户控件(示例在page_usercontrol.aspx)。[fixed] -也可以在ContentPanel中放置用户控件,注意两者的区别。 +增加ContentPlaceHolderConnector,替换原来Region的ContentPlaceHolderId属性(示例在Site.master)。[fixed] +支持Asp.net ajax异步加载。[fixed] -有很大局限性,只能在ContentPanel中使用,示例在ajax1.aspx/content_ajax2.aspx中。 -对于使用布局构建的页面(比如content_page1.aspx)还不能使用Asp.net ajax,因为页面是整体渲染的,先放弃。 +2008-07-02 v0.2 beta12 +关闭前提示当前页面已经被修改(示例在content_page1.aspx/simpleform.aspx)[fixed] -支持Iframe内按钮和window右上角关闭按钮。 -删除CloseAction属性,可以在后台通过OnClientCloseButtonClick属性指定(为了和iframe中做法一致)。 +iframe中的alert/confirm要覆盖整个父页面,而不仅仅是iframe页面。[fixed] -在Firefox下还有问题。[fix pending] +排序时在标题栏显示排序箭头,可以排序的列标题光标为手形(示例在grid_sorting.aspx)。[fixed] -可以通过设置Grid1.CurrentSortColumnIndex = 0;来强制某列显示排序箭头。 -可以通过 Grid1.Columns[Grid1.CurrentSortColumnIndex].SortExpression 的方式取得当前Grid的排序表达式。 +HyperLinkField/WindowField的链接地址支持服务器端格式(即是~/alert.aspx)。[fixed] -TabStrip的Tab中如果放置ContentPanel,则内容渲染位置不正确。[fixed] -可以在ContentPanel中放置用户控件(示例在page_usercontrol.aspx)。[fixed] +2008-06-30 v0.2 beta11 -增加TwinTriggerBox控件(示例在twintriggerbox.aspx)。[fixed] -Grid的数据库分页需要增加属性IsDatabasePaging=true,以便普通分页和数据库分页,否则在添加删除记录时总记录数不会变化 [feedback:zgjiang2]。[fixed] -关闭Window时PostBack事件OnClose可以指定参数,来区分是哪些操作引发的PostBack事件 [feedback:zgjiang2](示例在window_postback.aspx)。[fixed] -如果表单验证不通过,则需要弹出对话框提示(第一个没通过验证的字段)(目前还不能切换到相应的tab)。[fixed] +页面中任意可输入表单字段发生变化,可提示先保存。(示例在content_page1.aspx/simpleform.aspx)[fixed] -目前还不支持Window右上角关闭按钮的提示保存功能。 -Master/Content的内容页中Grid的Sort事件不起作用的BUG [feedback:zgjiang2]。[fixed] -Grid中的LinkButtonField设置ConfirmText会出错 [feedback:huihuang]。[fixed] -增加静态类Confirm。[fixed] +2008-06-27 v0.2 beta10 +Grid完善。[fixed] -CheckBoxField在回发时不能保持状态的BUG (已经更新了grid_checkboxfield.aspx示例)。 -Grid中模拟树显示,GridColumn增加DataSimulateTreeLevelField属性(一个Grid只能有一个Column指定此属性),指定此列模拟树显示时的层次字段(0,1,2,...)(示例在grid_simulate_tree.aspx)。 -切换分页时清空选中的值 [feedback:jqpeng]。 -增加PreRowDataBound事件,可以在数据绑定之前设置某列的属性 [feedback:xmzhu] (示例在grid_prerowdatabound.aspx)。 -DropDownList模拟树的方式显示,增加DataSimulateTreeLevelField属性,使用方法和Grid的类似(示例在dropdownlist_simulate_tree.aspx)。 +2008-06-25 v0.2 beta9 +Window窗体中的
易语言5.1 相对于易语言5.0更新说明:   支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。   使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib或.obj为后缀的将被视为静态库,可使用绝对路径或相对路径(相对当前源代码所在目录),如依赖多个静态库请分别列出并以逗号分隔;“在库中的对应命令名”请务必准确填写静态库中公开导出的符号名称(C函数(cdecl)编译后,符号名称通常是在函数名称前加下划线(_));“在库中的对应命令名”以@开头表示以cdecl方式调用,否则表示以默认的stdcall方式调用;各参数声明要与其定义一致。   请参考易语言安装目录内的例程:samples\静态编译\调用LIB和OBJ 1. 静态编译方面的改进和优化。 2. 符号重命名程序(resym.exe)增加对.obj文件的支持,并更新了文档(sdk\static_docs)。 3. 编译生成安装软件时已支持打包静态编译后的程序,但需事先静态编译出该程序。 4. 升级加密狗驱动程序,增加了对 Windows 7, Vista 等操作系统的支持。 5. 操作系统界面功能支持库(shell.fne)中的“执行()”命令增加一个参数“窗口显示方式”,作用与核心库“运行()”命令的同名参数一致。 6. 数据库操作支持库增加读写长整数字段的功能,但受限于系统接口暂不能读写超出整数范围的数值。 7. 修改高级表格支持库,通过鼠标调整行高列宽时不改变当前光标行列号。 8. 修改BUG:在IDE中打开源代码文件(.e)后,高级选择夹组件不能正确切换到“现行子夹”属性设定的子夹。 9. 修改BUG:矢量动画支持库中的“矢量编辑框”组件在光标位于组件右下角时按右光标键进入下一行会导致显示错误。 10. 修改BUG:矢量动画支持库中的“矢量编辑框”组件在光标位于组件左上角时按左光标键进入前一行可能会导致显示错误或内存申请失败。 11. 修改BUG:网络传送支持库在使用代理下载时可能会导致程序崩溃。 12. 修改BUG:超级列表框.置列图片()有时功能不正常或导致随机错误。 13. 修改BUG:Sqlite3数据库支持库中的“Sqlite记录集.绑定参数()”命令不支持汉字/UTF-8。 14. 修改BUG:VCL相关支持库部分组件在修改个别属性或调用个别方法后不可见,并改进了Delphi版本的支持库SDK。 15. 修改BUG:高级表格在列类型为数值型时,添加新行且省略标题的情况下,会导致程序异常。 16. 修改BUG:数值计算支持库“大数.四舍五入()”命令在最高位进位时,会导致程序异常。 17. 修改BUG:办公组件支持库打印进度对话框的标题和用户设置的内容不一致。 18. 修改BUG:办公组件静态编译后无法正常销毁。 19. 修改BUG:应用接口支持库“取内存容量信息()”命令不能正常处理大于2G的内存。 20. 修改BUG:超级列表框在属性“整行选择”为真时,鼠标单击第一列右面也会导致第一列中的选择框被选中或取消选中。 21. 修改BUG:Sqlite3数据库支持库中“Sqlite数据库.取错误文本()”返回的文本是UTF-8编码(应是GB18030编码)。 -------------------------------------------------------------------------------- 易语言5.0 相对于易语言4.x更新说明(2010/02/01):   增加静态编译功能,支持挂接第三方链接器(比如VC6中的link.exe)。   静态编译后的易语言可执行程序(exe)和动态链接库(dll),运行时不再依赖任何支持库文件,文件尺寸更小(相对以前的独立编译),PE结构更合理(取消了“易格式体”),加载速度更快,而且有效解决了“病毒误报”和“易被脱壳”的难题。   为实现静态编译,易语言编译器、核心支持库、集成开发环境(IDE)等均有重大更新,支持库开发架框有扩展性调整,绝大多数官方支持库都已针对静态编译完成自身改造并提供静态库。   目前绝大多数官方支持库均已支持静态编译,只有极少数不支持静态编译:vclbase.fne, jedi.fne, com.run/cominf.run/ocx.run。   第三方支持库,由源代码作者按照静态编译技术文档(参见sdk\static_docs)完成自身改造并提供静态库后,可支持静态编译。外部OCX组件和COM组件,不支持静态编译。   此次重大版本升级不影响以前的源代码(.e)和模块(.ec)。只要代码或模块中未用到“不支持静态编译”的支持库、COM/OCX等,都可以静态编译。以前编译好的模块(.ec)甚至不需要重新编译即可直接支持静态编译。   支持库开发框架调整是扩展性调整,比较好的做到了向前向后兼容。即,新版支持库可被旧版易语言或易程序使用,旧版支持库也可被新版易语言或易程序使用(只是不支持静态编译)。   静态编译后的易语言EXE/DLL之间不能再共享譬如窗口窗口组件等类似资源,对于已经静态连接到一个EXE/DLL中的支持库,该支持库中的数据或资源将不能再被其它EXE/DLL中所使用的同名支持库访问。这是因为代码被分别静态链接接到各个独立模块(EXE/DLL)中。 版权所有 (C) 2009 - 2010,保留所有权利。 大连大有吴涛易语言软件开发有限公司 http://www.eyuyan.com -------------------------------------------------------------------------------- 易语言5.0测试版3相对于测试版2更新内容: 1. 支持设置程序(EXE)图标 2. 支持设置使用通用组件库6.0 3. 支持“链接后动作(post_link_action)”(参见tools\link.ini中注释) 4. 重新整理所有官方支持库的静态库,有望彻底解决链接时可能出现的符号冲突 5. 全面取消静态编译中的人为功能限制(此前有最多5个支持库同时参与静态链接等功能限制) 6. 公开易语言静态编译技术文档(参见sdk\static_docs),便于第三方支持库作者针对静态编译进行支持库改造 7. 修改以下多个BUG: 1) 修改在静态编译的DLL中调用其它DLL失败的BUG 2) 修改静态编译后“选择列表框”在“单选”属性为真时不显示项目内容的BUG 3) 修改核心库中“播放音乐”命令在没有声卡或声卡被禁用时未正确释放资源的BUG 4) 修改静态编译后“读配置项”命令在第三个参数“配置项名称”为空文本时导致程序崩溃的BUG 5) 修改高级选择夹中的组件在窗口载入后强制得到焦点的BUG 6) 修改MYSQL支持库跨静态编译的EXE和DLL传递连接句柄和记录集句柄无效的BUG(改动较大,可能会产生兼容性问题,我们已经仔细测试,也请使用到此库的用户帮助我们多多测试,以便及早发现问题,谢谢) 7) 其它修改 注意:静态编译后的易语言EXE和DLL之间不能再共享“某些”句柄或资源,这一点和原动态连接时的程序行为不能保持一致,使用时请务必设法避免此类用法(MYSQL支持库我们作了特别处理)。 注意:静态编译后常量数据位于PE文件的.rdata段中,只可读不可写,编程时请避免修改它们。譬如以下的代码,静态编译后就可能会出现问题: a = " " GetWindowTextA(hWnd, a, 20) 正确的代码为: a = 取空白文本 (20) GetWindowTextA(hWnd, a, 20) 易语言5.0测试版2相对于测试版1的更新内容: 1. 修改了很多由于符号冲突而导致无法完成静态编译的BUG 易语言5.0测试版1发布于2009/12/28,是易语言5.0静态编译版第一个公开测试版本 ******************************************************************************** ** 以下是易语言4.x及以前版本的升级信息 ******************************************************************************** 易语言4.14版相对于4.13更新说明: 对易语言核心支持库、编译器、开发环境的更新: 1. 修复了打印机对象的自定义纸张尺寸的支持问题 2. 修复了打印机对象的打印份数的支持问题 3. 修复了滑块条的选择长度不能到最大的问题 对其它支持库的更新: 1. 修改XML解析支持库,解决“XML树.取节点值文本()”返回的文本会失效的BUG。 2. 修改高级表格支持库,解决在鼠标按下和抬起之间收到时钟周期事件的情况下,无法收到“被单击”事件的BUG。 3. 修改扩展界面支持库三,解决单击卷帘菜单后导致日期框不能弹出下拉窗口的BUG。 4. 修改XP风格支持库,解决GDI资源泄露,以及在使用通用组件库六时组合框标题出现重影的BUG。 5. 修改扩展界面支持库一,解决树形框项目无法通过鼠标点击进入编辑状态的BUG。 6. 修改高级表格支持库,解决插入行/插入列在未指定行号/列号的情况下插入位置不正确的BUG。 7. 修改文本语音转换支持库,增加“机读文本.重新创建并初始化()”方法。 8. 修改应用接口支持库,增强“取快捷方式目标”命令功能,可以获取目标、参数、启始位置、图标、运行方式、快捷键、备注等信息。 9. 修改扩展界面支持库三,解决高级选择夹会导致所在窗口的收不到“首次激活”事件的BUG,相应地修改了核心库和开发环境。 10. 为所有支持库文件统一添加了版本信息。 -------------------------------------------------------------------------------- 易语言4.13版相对于4.12更新说明(2009/4/13): 对易语言编译器、开发环境、核心支持库的更新: 1. 修改核心支持库,为窗口增加一个“窗口类名”属性。 2. 修改核心支持库,为外部数据库的连接类命令增加参数“不显示ODBC连接对话框”。 3. 修改核心支持库,解决用“播放音乐()”播放“音频采样大小为24位”的WAV文件时产生噪音的BUG。 4. 修改编译器,可以为编译出的EXE、DLL添加版本信息(通过“程序配置”设定)。 5. 修改集成开发环境,自动记忆非独立编译时是否写出依赖文件的选项。 6. 大幅提高编译速度。 对其它支持库的更新: 1. 修改高级表格支持库,在双击单元格进入编辑状态后,不能收到第一个“字符输入”事件的BUG。 2. OpenGL支持库中的部分英文名称常量已改为中文,并统一在所有常量名称之前加前缀“GL_”,以减少与其它库的冲突机率。 3. 互联网支持库中的“FTP目录列表”命令返回的文件时间改为FTP服务器返回的原始时间,不做任何时区转换。 4. 互联网支持库中的“置代理服务器”命令增加了参数,用于支持代理服务器用户认证。 5. 修改控制台操作支持库中“控制台对象.取显示区大小”的参数名称及其说明。 6. 修改外部数据库在4.12版中导致的不兼容问题,并增加了对MS SQL Server数据库中image和text字段类型的说明。 7. 修改扩展界面支持库一,禁止透明标签在父窗口刷新时自动刷新,以解决其导致窗口刷新缓冲的问题。 8. 改进应用接口支持库中“设置屏幕分辨率”命令。 9. 修改外部数据库在“表中记录数为零”时可能导致程序崩溃的BUG。 10. 修改扩展界面支持库一,修改“超级列表框.取标题()”不能返回长度大于256的包含汉字的文本。 11. 修改扩展界面支持库一,为“超级列表框.查找表项()”增加可空参数“列索引”,以指定查找哪一列。 12. 修改扩展界面支持库一,添加“工具条.置标题()”方法。 13. 修改高级表格支持库在表格空白处(所有单元格之外)单击鼠标导致当前光标处单元格自动进入编辑状态的BUG。 14. 修改扩展界面支持库一,为“超级列表框”增加“检查框状态被改变”事件。 15. 修改扩展界面支持库一,为“树形框”增加“是否已加粗()”方法。 16. 修改扩展界面支持库一,为“树形框”增加多态检查框功能,相应地添加了多个与检查框相关的属性、方法和事件。 17. 修改高级表格支持库,允许“复制选定文本()”“剪切选定文本()”在“允许选择块”属性为假时复制剪切当前单元格中的文本。 18. 修改扩展界面支持库三,为“高级选择夹”增加“不点燃选中子夹”属性。 19. 修改XML解析支持库,增加写出CDATA数据功能,解决解析XML时错误的丢弃换行和TAB字符的BUG,解决读取节点值时对CDATA数据进行转义处理的BUG。 20. 修改扩展界面支持库一,超级列表框“置列图片()”导致列图片被强行设置到标题左边的BUG。 21. 修改通用对象支持库,“快速字节集对象.倒找字节集()”的一个BUG。 22. 修改扩展界面支持库一,“超级列表框.取标题()”在表项标题为空的情况下可能会返回乱码文本的BUG。 23. 修改农历日期支持库,内部农历数据错误(2013年四五月份大小进错位)的BUG。 24. 修改远程服务支持库,“远程服务.启动()”第三个参数的描述与实际不符的BUG。 25. 修改应用接口支持库,“取硬盘信息()”命令,将尽量获取能够获取的信息(有时只能获取部分信息)。 26. 修改文本语音转换支持库,为数据类型“机读文本”的方法“文本到语音()”增加超时等待和事件反馈功能,并增加方法“是否可用()”,并在该对象创建时,自动选择一个“可能”为中文的语音库(通过名称猜测)。 27. 修改MySql支持库,第二次连接失败会导致前一次连接句柄无法使用的BUG。 28. 修改VCLBase支持库,解决VCL组件“对齐”属性和VCL滚动框失效的BUG。 其它更新: 1. 修改“树型框操作类.e”例程,加入项目时检查索引数组下标越界的BUG -------------------------------------------------------------------------------- 易语言4.12版相对于4.11更新说明: 对易语言编译器、开发环境、核心支持库的更新: 1. 修改“文件是否存在”命令不支持“路径字符大于127的文件”的BUG,感谢易友企达软件。 2. 修改“到全角”命令对“~”转全角字符结果不对的BUG,感谢易友叮咚茶。 3. 修改窗口“位置”属性和“可视”属性在特定情况下相互冲突的BUG,感谢易友牛非牛。 4. 修改核心支持库,窗口的“销毁()”命令,在销毁窗口后,不能再次载入窗口的BUG,感谢易友hsy_jj,上上签。 5. 修改核心支持库,窗口底图方式增加“图片缩放”功能,感谢易友世恒。 6. 修改核心支持库“组合框.可有焦点()”命令,在组合框获得焦点后,还是返回“假”的BUG,感谢易友lilho_e。 7. 修改核心支持库“销毁”方法增加了一个参数“立即销毁”。 8. 修改核心支持库,画板在调整尺寸后,不能重画的BUG,感谢易友浮云缭绕。   9. 修改编辑框在字体变大,编辑框高度自动调整后,原来的编辑框仍然会留在窗口上的BUG,感谢易友水影。   10. 修改核心支持库“插入字节集”命令的帮助说明,感谢易友低调生存。   11. 修改“变体型”对数值型数组数据支持不完善的BUG,感谢易友神2。   12. 修改核心支持库,“横向滚动条”和“纵向滚动条”位置被改变后,禁止由“真”变为“假”的BUG,感谢易友ming1228。   13. 修改窗口“在任务条中显示”属性和“总在最前”属性在特定情况下相互冲突的BUG,感谢易友ok5168。   14. 修改易语言开发环境,为自定义数据类型时,粘贴代码,数据类型为“”的BUG,感谢易友叮咚茶。   15. 修改核心支持库“组合框.禁止=真”,在给“组合框.列表项目”属性赋值后,“组合框.禁止=真”失效的BUG,感谢易友子涵。 16. 修改易语言编译器,可以指定独立编译的程序运行时的支持库释放目录,感谢易友西风。 17. 修改核心支持库,“其它”类别增加了六个命令(“取组件名称”“寻找组件”等),用作支持窗口组件反查。 18. 修改核心支持库“播放音乐()”命令,个别WAV文件不能播放的BUG,感谢易友破天一箭,流川枫,别康桥,得心应手,一帆风,z284949127,上等兵,yanshi810,xushushun。 19. “特殊功能支持库”中的“置入代码”命令已移入核心库,原有命令已被隐藏。 20. 在开发环境中打开被调用命令的参数引导(Alt+→)后,对每个参数的说明已可体现出是否为数组类型。 21. 修改“取配置节名”在节名个数超过一定数量时可能会导致返回值出错的BUG。 22. 修改“取对象类型”命令取不到FNR支持库中窗口组件类型名称的BUG。 对其它支持库的更新: 1. 修改应用接口支持库“取窗口标题”命令在指定窗口标题为空的情况下返回窗口类名称的BUG,感谢易友叮咚茶。 2. 修改应用接口支持库“取文件版本信息”在失败的情况下返回上次结束的BUG,同时添加逻辑型返回值,感谢易友yhan。 3. 修改应用接口支持库“取窗口类名”命令在指定窗口不存在的情况下取出窗口类名为乱码的BUG。 4. 修改通用对象支持库中“快速文本对象”“快速字节集对象”没有复制构造函数的BUG,感谢易友wentianxin。 5. 修改应用接口支持库“截取屏幕区域”命令未及时释放GDI资源的BUG,感谢易友醉。 6. 修改数值计算支持库“大数.导入文本()”,允许参数文本以一个或多个0开头,感谢易友王军。 7. 修改应用接口支持库“取窗口标题”在窗口标题以汉字开头的情况下可能返回空文本的BUG,感谢易友叮咚茶。 8. 修改数据结构支持库,为数据类型“表”添加方法“删除键值对”“删除所有键值对”,感谢易友.end。 9. 修改VCLBase支持库,因为设置数据类型“键值编辑器”的“可调整列位置”属性时会引发异常“可调整列位置 是不支持的选项”,所以将其删除,感谢易友MMiao79,nfh_china。 10. 修改应用接口支持库“取窗口标题”最多只能返回511个字符的BUG,感谢易友叮咚茶。 11. 修改数据结构支持库中数据类型“表”未及时释放内存的BUG,感谢易友.end。 12. 修改应用接口支持库“取窗口标题”命令取得的标题比实际标题少1到2个字符的BUG,感谢易友叮咚茶,wentianxin。 13. 修改高级表格在表头列类型为非文本的情况下“取数据()”返回结果不对的BUG,感谢易友小熊。 14. 修改应用接口支持库“取窗口标题”命令在取其它进程中的窗口标题时取出的文本不完整的BUG,感谢易友叮咚茶。 15. 修改扩展界面支持库一“工具条.取状态()”命令说明中的笔误。   16. 修改windows媒体播放器“鼠标按键被按下”事件中,第一个参数“鼠标按键”说明中的笔误,感谢易友xyx20021129。   17. 修改热键框“功能键”的属性名称,感谢易友mingriver。 18. 修改高级表格支持库,解决在部分打印机中打印不出图片的BUG,感谢易友97998。 19. 修改数据图表支持库,解决“柱状图控件”与“曲线图控件”在第一个X轴标注文字为空文本的情况下,导致X轴其它标注文字显示不完整的BUG,感谢易友wentianxin。 20. 修改高级表格,“回车键功能”属性增加“3.无”,感谢易友hswad。 21. 修改数据库支持库在记录集未置数据库连接的情况下调用“删除(3)”导致程序异常退出的BUG,感谢易友王庆。 22. 修改外部数据库组件不支持MS SQL Server中的nvarchar类型的BUG,感谢易友见易思迁。 23. 修改外部数据库组件无法读取MSSQL中binary类型字段的BUG,感谢易友NightCAT。   24. 修改外数数据库.查询()之后自动定位到首记录,感谢易友见易思迁。 25. 修改远程服务支持库在客户端连接失败的情况下出现socket句柄泄露的BUG,感谢易友readyisme。 26. 修改数据库支持库“记录集.写字段”在字段名称不存在的情况下也返回真的BUG,感谢易友liyunxing。 27. 修改高级表格,置图片多次GDI资源泄露问题,感谢易友borisc。   28. 修改超级菜单,当菜单条不可见时在代码中修改菜单的可视属时,弹出菜单的子菜单标题不可见的BUG,感谢易友搞怪。 29. 修改数值运算支持库大数除法的一处BUG,感谢易友zhen。 30. 修改MySql支持库,添加了“取影响行数” 方法,感谢易友浮云缭绕。 31. 修改高级表格调整行列数时未正确处理现有合并单元格的BUG,感谢易友wentianxin。   32. 修改互联网支持库,“HTTP读文件”命令支持读取HTTPS协议文件,感谢易友季翔。 33. 修改XML解析支持库,在连续两个自结束节点()存在时可能导致导入失败的BUG,感谢易友.end。 34. 修改XML解析支持库,允许XML文件中双引号之间的属性文本中存在任意字符,包括,感谢易友技术支持部、user190。 35. 完善XML解析支持库,增加对CDATA的支持,和XML文本格式化功能,感谢易友goomoo。 36. 完善XML解析支持库,导出到文本或字节集时必要的时候使用自结束节点格式,感谢易友goomoo。 37. 修改应用接口支持库,完善了“是否与互联网连接”和“是否登入网络”的命令说明,并隐藏了后者,感谢易友mijac。   38. 修改数值计算支持库,“曲线拟合.三次样条插值()”的第二个参数“三次样条方程系数”可以直接接受“曲线拟合.三次多项式方程()”的计算结果作为参数,感谢易友搞怪。 39. 修改高级表格支持库,增加“表头被单击”“表头被双击”事件。 40. 修改高级表格支持库,将属性“表头可单击”更名为“响应表头被单击”。 41. 修改扩展界面支持库一,在主窗口刷新时透明标签没有及时刷新的BUG,感谢易友地球销售代表。 42. 修改VCLBase支持库,高级分隔条“高亮渐变起始颜色”属性名称重复的BUG。 其它更新: 1. 更新了易语言知识库(ESDN)(仅在完全安装版中提供)。 2. 增加了“硬件操作精解-精简版”教程(仅在完全安装版中提供) 3. 在“行业控件”类例程中新增“Grid++report报表控件”。 4. 在“行业控件”类例程中新增“滴答报表控件”。 5. 在“行业控件”类例程中新增“skinsharp皮肤控件”。 6. 在“硬件控制”类“加密锁”例程中新增“ET199”。 7. 修改易语言安装制作程序,允许在开始菜单生成多级程序组(目录),感谢易友银戒指、电子商务。 8. 修改远程服务支持库例程“网络数据库中间件.e”中删除意外断开连接客户的BUG,感谢易友雨纷飞。   9. 修改了购买易语言的说明信息,由学习版50元,改为免费,感谢易友majiyunsea。 -------------------------------------------------------------------------------- 易语言4.11版相对于4.10更新说明: 对易语言编译器、开发环境、核心支持库的更新: 1. 修改易语言编译器“‘调用外部DLL命令的程序’执行结束后未释放该DLL”的BUG,感谢易友企达软件。 2. 修改易语言编译器编译动态链接库时提示“寻找指定库命令失败”的BUG。 3. 修改易语言开发环境,在调试状态下允许通过双击设计窗口中的组件跳转到对应的事件处理子程序。 4. 修改易语言开发环境“在窗体设计器中拖动组件导致GDI资源泄漏”的BUG。 5. 修改易语言开发环境,解决了程序集名称过长不显示程序集名称选择夹的BUG。 6. 修改核心支持库,窗口的“销毁()”命令改为通过PostMessage间接实现。 对其他支持库和相关例程的更新: 1. 修改支持库例程“INI手术室.e”,在勾选“是否使用Windows通用组件库6.0版”后编译,工具栏上的图标无法显示的BUG。 2. 修改扩展功能支持库一“当窗口总在最前时,气球提示框会被窗口挡在后面”的BUG。 3. 修改扩展功能支持库一“设置文件拖放”的错误,感谢易友叮咚茶。 4. 修改MySql支持库“读字段值”,当参数“字段索引”被传入类型为小数的参数值后,读取失败的BUG。 5. 更新多线程支持库:启动线程() 增加一个可选参数,用于接收线程句柄;并增加以下命令:等待线程,强制结束线程,关闭线程句柄。感谢易友zhe001。 6. 修改保密通讯支持库可能导致程序异常退出的BUG。 7. 修改高级表格预览时表格线不显示的BUG,感谢易友一帆风。 8. 修改高级表格选择块时鼠标回到首选择单元格致使该单元格自动进入编辑状态的BUG,感谢易友民政,wanwan5。 9. 修改农历日期框被禁止后文本和按钮不变灰的BUG,感谢易友p_anch;修改农历日期框控件默认大小为200*24。 10. 修改XP风格支持库“应用XP风格后令单选框文本颜色与选择框文本颜色失效”的BUG,感谢易友yulimate。 11. 修改VCLBase支持库中“单一实例”组件,“标识文本”属性为空文本时组件功能失效的BUG。 12. 修改数据操作支持库“记录集.读字节集()”读取失败的BUG,感谢易友rsrs168,xuejsh。 13. 修改DirectX支持库“输入设备.置鼠标边界()”命令说明中的笔误。 14. 修改高级表格累加公式功能可能累加其它列的BUG,并允许结果列小于开始列,感谢易友浮云缭绕。 15. 修改高级表格在粘贴“类CSV”格式文本时错误处理连续分隔符的BUG,感谢易友风精灵。 16. 修改高级表格在列类型为选择型时取不出表头文本的BUG,感谢易友恶人磨。 17. 修改可执行数据转换支持库令转换后的正则表达式支持库无法载入的BUG。 18. 修改高级表格,增加了“可否被编辑”事件,可在此事件中返回假以阻止当前选中单元格进入编辑状态,感谢易友123yizheng123。 19. 增加超级列表框状态图片组及其索引的说明,索引不能大于14(Windows的局限),感谢易友企达软件。 20. 优化调整Java支持库中JVM的查找及加载策略。 21. 修改XP风格支持库令分组框文本颜色无效的BUG,感谢易友破天一箭。 22. 修改易语言下载快车例程在程序已启动情况下新建下载任务时获取的URL缺少最后一个字符的BUG,感谢易友520zone。 23. 修改数据操作支持库中“记录集.删除(3)”不能删除所有记录的BUG,感谢易友rsrs168。 24. 修改数据库操作支持库有时取不到记录集记录数量的BUG,感谢易友h179635532。 25. 修改树形框“图片组被重新赋值后导致之前动态加入的项目丢失”的BUG,感谢易友菜鸟老大。 26. 修改高级表格“修改单元格数值时导致计算列无穷递归计算”的BUG,感谢易友一帆风。 27. 修改数值计算支持库“计算大数相乘时存在递归进位的情况下导致结果出错”的BUG,感谢易友chegjigfg。 28. 修改网络通讯支持库“网络服务器.断开连接()”导致CPU使用率100%的BUG,感谢易友尘土.飞扬,.end。 29. 修改数值计算支持库求实矩阵逆的BUG(注意不再返回矩阵行列式),感谢易友wuestuary。 30. 修改MySql支持库写入空字节集失败的BUG,感谢易友angelye。 31. 修改高级表格最后一行(或行)只显示半行(或列)而没有出现滚动条的BUG,感谢易友cbw,liweiyong和zye7504。 32. 修改高级表格,用鼠标或键盘选中高级表格某单元格时使其尽量完整显示(而不是只显示单元格上边或左边一部分),感谢易友 esir。 33. 修改易语言完整版安装程序“未选中安装多媒体教程的情况下仍然安装了多媒体教程”的BUG,感谢易友秋风下的落叶。 34. 网络通讯支持库网络服务器、网络客户端和网络数据报的“接收”方法均增加一个参数,用于返回是否接收成功。感谢易友.end。 35. 修改WORD2000支持库Word程序的文档即将保存事件的第二个参数修改无效的BUG,感谢易友97998。 36. 修改DirectX支持库“MIDI音乐.播放()”不支持含空格的文件名的BUG,感谢易友张飞,klasp。 37. 修改应用接口支持库“取网卡信息列表()”命令消耗大量内存且不释放的BUG,感谢易友伟业,花无心。 38. 修改农历日期支持库内部取节气的一处数据错误,感谢易友净莲。 39. 修改超级列表框不能通过对“现行选中项”属性赋值-1从而取消选中现行选中项的BUG,感谢易友zye7504。 40. 修改超级菜单支持库,在没有菜单条的窗口上放置一个超级菜单组件,运行时在标题栏点右键导致程序异常退出的bug,感谢易友狼性本色。 41. 修改超级列表框多次调用“置列图片(-1)”导致程序无故退出的BUG,感谢易友redxblue。 42. 修改应用接口支持库“是否与互联网链接()”未及时关闭网络连接句柄的BUG,感谢易友zzy90。 43. 修改超级列表框表项编辑对话框删除表项时未同时删除子表项的BUG,感谢易友TLSWR。 44. 修改MySql支持库"取字段属性"方法返回的字段属性值与字段类型常量无法对应的BUG,感谢易友gaoheran。 45. 修改互联网支持库“HTTP读文件”命令不能读取非80端口URL的BUG,感谢易友goomoo。 46. 修改超级列表框刷新问题和图标显示问题。 47. 增加超级列表框插入表项的帮助说明,“类型”属性为“大图标列表框”或“小图标列表框”的情况下,将始终在所有表项的最后插入新的表项,感谢易友redsleaf。 48. 修改超文本浏览框,补充完善了对事件“已就绪”和“载入完毕”的说明,感谢易友qq136013347。 49. 修改超文本浏览框未释放BSTR指针的BUG,感谢易友东灿。 50. 扩展界面支持库二“提取加入图片”命令增加一个参数以提取小图标,感谢易友redxblue。 51. 修改超级编辑框“最大允许长度”属性为0时最大允许输入长度仍被限制为64K的BUG,感谢易友红花。 52. 修改扩展界面支持库二“RTF到纯文本”命令无法处理\emdash\lquote\rquote等殊符号的BUG,感谢易友zjc2008。 53. 修改扩展界面支持库二超级编辑框设定字符格式为“#禁止更改”后无法取消“禁止更改”的BUG。 54. 修改超文本浏览框的逻辑型属性或逻辑型方法返回值可能有误的BUG,感谢易友wincom1。 55. 修改IP编辑框无法得到“获得焦点”和“失去焦点”事件的BUG,感谢易友hedogn,poplarshine。 56. 修改IP编辑框的默认窗口尺寸为104*20。 57. 为IP编辑框增加“地址被改变”事件,感谢易友zjzqs。 58. 修改压缩解压支持库“生成的压缩包内文件日期和解压缩后文件日期与原被压缩文件日期不符”的BUG,感谢易友wanwan5。 59. 修改易语言知识库中办公组件帮助文档中的笔误,感谢易友sxfxx。 60. 修改易语言知识库中“取网卡信息列表”命令例程有重复的程序集名称导致程序无法编译的错误,感谢易友cjdn。 61. 修改VCL相关支持库中在组件事件中销毁窗口可能导致程序非法访问内存的错误,感谢易友redxblue,nfh_china。 62. 修改VclBase支持库中位图按钮类型为“确认”、“是”时修改按钮标题后在运行时不显示按钮图片的BUG,感谢易友redxblue。 63. 扩展功能支持库一增加“拖放树型框项目”命令。 其它更新: 1. 在“行业控件”类例程中新增“Grid++report报表控件”。 -------------------------------------------------------------------------------- 易语言4.10版相对于4.06版(修订版1)更新说明: 1. 更新易语言开发环境和核心支持库,提供对VCL控件的更好支持。 2. 增加了易语言支持库开发包(SDK),目前有C++版本和Delphi版本。 3. 增加了两个用Delphi开发的支持库,VCLBase 和 JEDI,含大约20个封装自VCL的易语言窗口组件。 4. 增加了“硬件控制”方面的多个例程。 5. 增加了“网友优秀作品”例程。 6. 修改开发环境主程序,独立编译前提示,修改整体搜索的BUG。 7. 修改了通过右键菜单新建的.e文件不能直接保存的问题。 8. 修改了日期框自动跳转日期的问题。 9. 修改了MySQL支持库“执行SQL语句”的问题。 10. 修改了特殊功能支持库中“调用子程序”的问题。 11. 修改了“数据库语言转换器.e”转换出现乱码的错误。 12. 修改了“数据库管理器.e”有密码打开失败的错误。 13. 修改了“MIDI测试.e”音乐文件在桌面不能播放的错误。 14. 修改了多媒体支持库“CD播放.是否有CD”的BUG。 15. 修改了Excel支持库设置字体下划线无效的BUG。 16. 修改了“气球提示框”单击鼠标或按键导致提示框关闭未发送“提示框即将隐藏”事件的BUG。 17. 修改了“shellEx支持库”注册热键的BUG。 18. 修改了“网络通讯支持库”内存泄露的BUG。 19. 修改了小数型数据到文本函数多次执行出错的问题。 20. 修改了正则表达式“搜索全部”时假死的问题,和程序中多次频繁调用正则容易出错的问题。 21. 修改了多个支持库例程。 22. “可执行文件数据转换”支持库的代码打乱功能得到了较大的提升,不同的打乱码将得到差异性很大的结果,因此用户可以尝试使用不同的打乱码来从技术上应对杀毒软件的误报。 关于可执行文件数据转换,说明如下: 1、多次重复转换可能会导致转换后的可执行文件或易语言支持库无法使用,请确保只转换一次; 2、对于非易语言编译的可执行文件或DLL,不保证转换后能够正常使用; 3、如果想转换易语言独立编译可执行文件,应该在易语言的系统设置里面直接设置打乱码后进行编译转换,而不能在独立编译后再使用本命令来转换; 4、尽量在易语言系统设置里面设置打乱码后进行编译转换,在这种情况下,所编译出来的可执行文件将得到最好的打乱效果。 -------------------------------------------------------------------------------- 易语言4.06版(修订版1)相对于4.06版更新说明: 1. 未注册情况下,除不提供编译功能外,不再有其它任何限制,即等同于以前的学习版功能。 2. 核心库中播放音乐功能已支持多个音乐同时播放(混音)。 3. 修改了扩展界面支持库二中动画框PNG图片透明的问题。 4. 修改了可执行文件数据转换支持库,在Win98下转换的支持库存在载入失败的问题。 5. 修改了数据库支持库不能正常读写双精度小数的问题。 6. 修改了mysql支持库“读字段值”、“查找记录”、“创建表”、“修改表”的问题。 7. 修改了编码转换支持库部分情况下不能正常进行编码转换的问题。 8. 修改了远程服务支持库不能同时启动两个服务器的问题。 9. 对以往支持库的相关例程做了修正更新。 10. 对安装包中的部分执行文件(.exe)进行了重新编译。 -------------------------------------------------------------------------------- 易语言4.06版相对于4.05版(修订版1)更新说明: 1. 扩展界面支持库二中增加了动画框组件 2. 增加了可执行文件数据转换支持库,以应付一些使用落后的特征码查毒技术的杀毒软件,使其不再或很难对易语言编译出来的程序和易语言本身支持库误报. 3. "工具->系统配置->目的程序安全"选项中增加了编译结果打乱码设置,设置此选项后将会自动对"编译"、"独立编译"、"编译生成安装软件"菜单功能所产生的结果进行自动打乱。 4. 远程服务支持库修改了服务端和客户端线程句柄泄露的错误. 5. 高级表格支持库,在类型为“选择型”的单元格中按下空格键前后,将分别触发“将被编辑”“结束编辑”事件. -------------------------------------------------------------------------------- 易语言4.05版(修订版1)相对于4.05版更新说明: 1. 编译器,更正了“对全局数组变量和局部变量多次赋值可能无效”的BUG。 2. 核心库,更正了“取时间间隔”命令的BUG。 3. 扩展界面支持库三,更正了高级选择夹“无法删除表头字体”和“‘竖排子夹名称’属性为‘真’时子夹名称显示不完整”的BUG;外加一项改进:编辑“子夹管理”时可预览字体和字体颜色。 -------------------------------------------------------------------------------- 易语言4.05版相对于4.04版更新说明: 1. 对以往支持库和相关例程发现的问题做了修正更新。 2. 开发环境新增了剪辑历史处理和展开全部代码功能 -------------------------------------------------------------------------------- 易语言4.04版相对于4.03版更新说明: 1. 对以往支持库和相关例程发现的问题做了修正更新。 2. 增加了3个支持库: 自定义图形支持库 编码转换支持库 矢量动画支持库 -------------------------------------------------------------------------------- 易语言4.03版相对于4.02版更新说明: 编程环境新增快速跳转夹和书签支持。 系统新增长文本常量支持。 新增“代码编辑框”支持库 新增“通用对象支持库”,内含“快速文本对象”“快速字节集对象”等数据类型。 特殊功能支持库:新增“取文本”等三个命令。 Sqlite数据库支持库:“Sqlite表”新增“查找”方法;将Sqlite版本升级至目前最新的3.3.4版。 扩展界面支持库三:改进卷帘式菜单控件,允许修改非选中菜单中的项目属性;改进高级选择夹控件在表头样式为梯形时的外观显示;改进部分属性和方法的说明信息。 扩展界面支持库五:修改气球提示框控件在Windows98系统下字体不清晰的BUG;新增对的支持。 扩展界面支持库六:对多功能条控件进行的小的改进。 农历日期支持库:修改农历日期框控件调用“增减日期”“置农历日期”“置公历日期”等方法后未及时更新显示文本的BUG。 数据结构支持库:修改"链表.加入节点"方法有时不能按键值正确排序的BUG。 其它一些支持库的改进和修正 -------------------------------------------------------------------------------- 易语言4.02版相对于4.0版更新说明: 1、DLL命令调用功能全面增强,具体请参见核心支持库手册里面的“调用API.e”例程和相关文档。 2、新增位图操作和易LOGO两个支持库。 3. 核心库中的外部数据库组件被修正。 4、以下支持库被修正或增加新功能: 互联网服务支持库 网络传送支持库 mysql支持库 Sqlite数据库支持库:增加了20个命令以直接返回相关数据(而不是写入到参数变量中)。 扩展界面支持库三:增加了提示文本功能,同时更新了卷帘式菜单和高级选择夹的属性编辑对话框并增加了相关方法;在卷帘式菜单控件的“项目”属性编辑对话框中,如果项目名称为空文本,则显示为“未命名”,以便于用户以鼠标点击选中。 扩展界面支持库五:“汽球提示框”更名为“气球提示框”并增加“批量关联组件”方法,以方便用户动态指定提示文本;修改其“提示框即将弹出”事件的参数“手柄横向坐标”“手柄纵向坐标”,由屏幕坐标改为客户坐标,以方便用户处理。 数据图表支持库:曲线图和柱状图增加了“显示标注”和“提示文本”属性;鼠标指向曲线图和柱状图的相应区域时会有提示框弹出并显示当前数据值。 XML解析支持库:增加导入导出字节集功能,另外增加了9个命令以直接返回相关数据(而不是写入到参数变量中)。 -------------------------------------------------------------------------------- 易语言4.0版相对于易语言3.8正式版更新说明: 1、“新建”对话框布局改变,将一些新建项目进行了分类,大家可以在Samples和Wizard目录中组织目录,“新建”对话框会自动列出。 2、新的“文本代码编辑器”工具。 代码编辑方式是以文本方式编辑,在每一行程序编辑完成后不必回车确认,直接下移光标继续输入。或按[Shift+回车]可代替原单键[回车]形式。 可以将代码以文本方式复制到记事本,或从记事本将文本代码粘贴回来,系统自动恢复为程序代码。 “系统配置”中可以设置改变编辑区字体及字号。 “系统配置”中的“输入新语句后自动检查语法错误”项选中时,当光标在代码行末时回车,就可以编译当前行检查是否有语法错误,并在提示面板中提示出来。默认为选中。 若“系统配置”的“输入新语句后自动检查语法错误”项未勾选,代码编辑时将不会弹出错误提示,代码编辑后的运算符号不会规范整理,而会在调试或编译时给出错误提示,或使用全程提示工具检查,或通过按[Shift+回车]编译当前行进行检查。 3、新的“全程提示”工具,当用户将鼠标移至常量、变量、属性表等名称上停留片刻,会显示当前名称的相关信息。对未事先声明的变量不作任何提示。 4、新的“寻找替换管理器”工具。可以在当前程序集中进行寻找与替换。 5、新的“程序调试管理器”工具。新设计的“调用表”面板与“监视表”面板代替了原调试面板,具体使用与原来的调试方法类似,可用“查看表达式/变量”菜单查看当前子程序变量值。 6、新的“整体搜寻管理器”工具。提示夹中增加“搜寻1”、“搜寻2”两个面板。使用“整体搜寻”菜单命令可将搜寻结果显示在其中,并且可以对比查看。 7、新的“条件断点管理器”工具。新增“条件断点”菜单,可以设置断点时给定一组条件,方便调试,如果断点不是条件公式,就会自动转换为普通断点。 8、新的“组件排列管理器”工具。当没有安装扩展组件、OCX组件或COM组件时,不显示分类,当组件排列拥挤时,自动增加分类。 9、新的“配色方案管理器”工具。编辑代码区与属性表的配色方案已合并,且支持任意颜色自由定制,大家可将自定义的配色方案拷贝到Clr目录中,就可在列表中看到。 请使用菜单“工具”→“系统配置”→“程序显示”→“颜色配置”,在下拉列表中选择本Clr目录中的颜色配置文件。 10、“提示”面板中显示命令帮助内容时,将会显示当前命令所处的上级支持库分类信息,以利于用户查询所在支持库。 11、调试中断后回到代码编译界面,可将鼠标移到变量上查看变量值提示。 12、备注直接使用单引号标注,并兼容打开以前版本的代码自动改为单引号标注形式。 13、热键调整:如原直接使用键盘的方向键可展开命令,现在需要使用[ALT+方向键]才可以展开,“单步跟踪”热键有所改动。 编辑时原[F1]热键插入文件名称路径现改为[F2]热键插入。[F10]可删除一行,[CTRL+K]可屏蔽一行。 14、菜单调整:如“配置”子菜单移至“程序”菜单下,增加“条件断点”菜单,原“易向导”菜单改为“执行易向导”菜单.....具体请自行对比。 15、Samples目录中增加大量的经典例程,供大家学习交流。 16、Ecom易模块目录中新增若干易模块及例程。 17、易向导中增加“通用密码登录管理向导”及“OpenGL向导”。 18、系统配置对话框的“编译选项”中新增“是否使用Windows通用组件库6.0版”选项,默认不选中。如果选中,编译后的程序将使用6.0版风格的组件。 19、推出了以下新的支持库: 农历月历支持库中新增“农历月历”组件 拖放支持库 正则表达式支持库 进程通讯支持库 BT下载支持库 网络通讯支持库二 扩展界面支持库三中增加“高级选择夹”组件(本库必须在易语言4.0以上版本中使用) 应用接口支持库 OpenGL支持库 DirectX发支持库 SQLite数据库支持库 控制台操作支持库 扩展界面支持库五 20、办公组件支持库已升级,推荐大家使用该升级后的支持库。 21、新表格组件改名为高级表格以区分基本支持库中的表格,方便大家定义数据类型。 22、网络传送支持库更新及易语言下载快车已更新。 23、基本组件中的打印机组件已支持自定义纸张,“开始打印”方法中当“纸张”参数为-1时,可以自定纸张宽高。 24、“打印机”对象和“打印设置信息”数据类型中的打印纸类型新增了100多种扩展打印纸类型。 25、系统核心支持库中的“寻找字节集”和“倒找字节集”命令各增加一个参数。 26、窗口组件的基本事件中加入了“滚轮被滚动”事件,以支持鼠标滚轮编程。 27、核心库“其它”类别中增加了“DLL命令调用转向”命令,以支持程序中对非固定文件名DLL中的输出命令进行调用。 28、编辑组件的文本型属性时可以编辑多行文本。 29、组件箱右上角增加一个按钮,可以在组件图标排列与组件名列表中切换。 30、“输出调试文本”命令支持通用数据类型。 31、编译使用了易模块的易程序时,由过去仅在易语言安装目录ECOM下寻找所需要的易模块文件改为首先在易程序所处目录下寻找,然后再去ECOM目录下寻找。 32、易模块管理对话框中新增了“创建指定易模块文件的接口程序集”按钮。 33、为规范编程,多个易语言打开同一个源代码时,将会提示切换到打开的程序中,否则请另存为新文件名后再打开,以保护程序。但如果你用新建方式打开程序时,不受此保护。 34、修改了用户程序当支持库不存在时弹出的出错信息。 35、所有带图片组属性的组件选索引时支持直接通过选取图片组的方式输入。在索引项目后多了一个按钮,点击按钮后弹出图片组预选窗口,直接选中图片即可。 36、扩展界面库一中的树型框增加了“右键单击项目”事件。 37、系统颜色配置里面新增了“窗体设计器背景”项。 38、编译时实施了严格的重复名称检查,编译选项中新增“严格的重复名称检查”选项,为了兼容以前的程序,默认为不选中,建议将其选中。 39、支持库列表中增加排序功能,可按拼音顺序排列支持库。具体是支持库面板的鼠标右键菜单中增加“排序”子菜单。 40、核心支持库中的“窗口”数据类型增加了“置父窗口”方法。 41、核心库中的“数值转换”类中新增了“到字节”、“到短整数”、“到整数”、“到长整数”、“到小数”命令。 42、核心库中的“位运算”类中新增了“左移”、“右移”、“合并整数”、“合并短整数”命令。 43、核心库中的“变体型”数据类型新增“取字节集”方法,并且其“赋值”方法支持置入字节集类型数据。 44、核心库中的“载入”命令被改进,当以对话框方式载入不可视窗口时,不再强制显示并等待,而直接返回, 然后可以通过设置该窗口的可视属性为真来显示该对话框。此改进后,可以进行以下操作: 载入 (窗口1, , 真) 窗口1.标题 = "演示" 窗口1.可视 = 真 45、核心库中的“从字节集转换”命令更名为“取字节集数据”,并增加一个参数,以支持从字节集中随意取出部分数据。 46、核心库中的“打印机”对象有所改进,并且增加了四个方法用作在Windows2000/NT/XP下设置自定义纸张类型。 47、“支持库配置”对话框上方加入了查找功能。 48、“支持库配置”对话框下方增加了删除支持库按钮。 49、“系统配置”对话框内“颜色配置”部分增加了“导入”按钮。 50、左侧支持库列表中数据类型部分列入了成员事件并加入了全面的提示。 51、属性表下方的事件组合框内对已有事件子程序的事件进行了标记,并将自有事件和固定事件分开。 52、鼠标指针属性新增“手型”类型。 53、对列表式组件箱进行了排序。 54、窗口设计器中右键单击组件后所弹出的菜单内新增了“查看数据类型定义”菜单项。 55、组件右键菜单中加入“锁定”和“解除锁定”菜单,锁定组件时只能使用键盘的光标键移动或使用SHIFT的组合改变大小。 56、当前系统正在编辑一份易程序时,双击打开新易程序时,会弹出询问对话框,用户可以选择重新启动一份易语言系统打开程序。 57、输入备注时不再有提示框出现。 58、单行编辑框文字垂直居中。 59、恢复了调试变量表。 60、恢复了在行尾回车时自动询问增加未定义的变量、子程序、常量名(仅当“输入新语句后自动检查语法错误”系统设置被选中时有效)。 61、打印机对象改正了默认纸张的设置问题。 62、核心支持库增加“置错误提示管理”命令,用作支持用户自行提示严重错误信息。 63、核心支持库中的“选择夹”组件增加了“是否填充背景”、“背景颜色”两个属性,用作解决“隐藏自身”属性为真时选择夹内 一些子组件的刷新问题。 64、系统的“程序”菜单中新增“重新名称关联”菜单项。 65、加入了源代码加密功能。 66、核心库中“服务器”组件的“取回客户”方法支持在“数据到达”事件中使用。 67、核心库中“媒体播放”类别中增强了对MP3播放的支持。 68、核心库中“系统处理”类别中增加了“多文件对话框 ”命令。 69、编译器所支持语法格式改进,返回值支持直接引用其成员,如“a.方法1 ().a1.方法2 ()”语句格式现在已经可以使用。 70、系统的“工具->系统配置”菜单中新增“目的程序安全”选项夹。 71、系统的“编辑”菜单中新增“到最近修改处”菜单项。 72、改进了各种编程语言对易语言DLL的调用支持。 73、新增扩展界面支持库六、DirectX3D支持库。 74、自定义鼠标指针支持彩色。 75、易模块管理功能被去除,支持新的易模块引入功能,且易模块公开支持项目增多。 76、系统自带易模块中新增3D图形引擎支持易模块。 -------------------------------------------------------------------------------- 易语言3.8正式版(修正第二版)相对于3.8测试版的改动部分: 1、支持开发并使用易语言向导程序,具体例程请见lib\ewizard\samples目录下的“应用程序向导.e”及“API助手.e”文件。 2、源程序编辑窗口右键菜单中新增“收缩屏蔽”功能,可以用作一次性屏蔽大段代码。 3、系统不再默认载入所有支持库,而必须在支持库配置中指定。 4、源程序的载入速度得到提高。 5、推出了以下新的支持库: 易向导支持库 农历日期支持库 远程服务支持库 扩展界面支持库三 互联网服务支持库 邮件接受支持库 多媒体支持库 表格支持库 超级菜单支持库 保密通讯支持库 办公组件支持库 另外,图表支持库和表格支持库现在支持和打印机对象合作打印。 -------------------------------------------------------------------------------- 易语言3.8测试版相对于3.7正式版的改动部分: 1、支持完全的面向对象编程,可以在程序中定义并使用对象。 2、编写DLL时其中的公开子程序可以接受文本数据类型参数,且可以返回文本和字节集型数据。 3、支持源程序代码的收缩和展开(操作方法:选中程序块后单击右键选“收缩”菜单项,在子程序头上可以直接左键单击子程序名左边的减号)。 附,易语言面向对象开发特性简要说明: 1、易语言支持类的构造、析构、继承、虚拟方法、多态、封装特性。 2、对象的构造: 构造顺序为:先构造基类对象,再构造其继承类对象,如果类中具有对象成员,则先于其所处对象构造。 3、对象的析构: 析构顺序为:先析构继承类对象,再析构基类对象,如果类中具有对象成员,则在其所处对象后析构。 4、继承: 任何类均可以指定另外一类作为其基类,继承层数不限。 5、虚拟方法: 在基类中的方法可以被其继承类中的同名方法覆盖,当调用此方法时,系统自动根据所调用的对象 实体去调用对应的方法。 6、多态性: 可以将一个继承类对象赋予到其基类数据类型变量中,此时对此基类对象变量进行操作,将反映出继承类对象的特性。 7、类的封装: A、类的所有成员数据变量只能由该类本身的方法代码所访问,属于私有性质。 B、在继承类中可以以“类名.方法名”的方式指定访问基础类中的方法。 C、只有标记为“公开”的方法才能在类代码外部通过该类的对象实体来访问。 -------------------------------------------------------------------------------- 易语言3.7正式版相对于3.7测试版的改动部分: 1、编辑环境可以打开未安装对应支持库的易语言源程序。 2、“内码转换”支持GBK与日文内码SJIS之间的转换。 3、核心支持库中的“对象”数据类型增加了“取接口”方法。 4、“到字节集”、“到文本”命令被增强。 5、“数值到人民币”改名为“数值到金额”。 6、“取系统语言”命令支持linux,并增加日文类别。 7、“取操作系统类别”命令支持linux。 8、所有COM封装对象的“取子对象”方法更改为“取接口”,并增加一参数以取出指定接口。 9、改进后的packcom工具,用3.7测试版中的packcom生成的npk请使用本版本中的packcom打开后保存,以进行转换。 10、对测试过程中发现的所有问题都已经纠正。 -------------------------------------------------------------------------------- 易语言3.7测试版 相对于 3.6 正式版的新增功能: 1、对微软COM技术的全面支持,包括ActiveX组件、OLE自动机、COM类型库等等,详细说明请见ESDN帮助 2、跨平台的网络通讯支持库 3、跨平台的Mysql数据库支持库,且功能全面加强 4、跨平台的多线程支持库 5、EXCEL2000支持库(直接操作Excel) 6、WORD2000支持库(直接操作Word) 7、PowerPoint2000支持库(直接操作PowerPoint) 8、数据图表支持库(柱形图,饼形图、曲线图) 9、脚本语言支持库(可以运行VB script Jave script等脚本) 10、文本语音支持库(提供对文本转语音输出以及语音识别的支持) 11、易语言支持库在运行时支持动态加载 12、枚举常量的支持(详细说明见ESDN帮助) 13、更新了setup安装程序(即菜单"编译生成安装软件"的功能改进,解决了反安装时删除全部目录的问题,添加额外文件时增加了批量添加,还有更多安装功能的增强!) 14、部分功能的加强(如:树型框可以高速批量加入项目、标准输入命令支持密码输入、启动多线程支持参数等等) 15、其他很多地方改进。 -------------------------------------------------------------------------------- 易语言 3.6 公司成立纪念版 相对于 3.5 正式版的新增功能: 1、增加了对Linux平台的支持,可以用易语言在Windows环境下编写Linux控制台程序 2、增加了Windows动态链接库(DLL)的编写,用易语言能编写出DLL供自己以及其他编程语言(VB,VC,Delphi等)调用。 3、增加了控制台操作的2个命令“标准输出”、“标准输入”, 4、增加了3个命令:“指针到文本”(文本操作),“指针到字节集”(字节集操作)、“写到内存”(其他),最佳使用场合在易语言回调子程序和易语言DLL公开子程序中用作对外输出数据。 5、增加了图形图像支持库 - 格式1.0版,支持多种图片格式的转换。 6、增加了XP风格界面库1.1版,支持部分控件的4种风格类型的转换。 7、增加了文件压缩/解压缩支持库1.0版,支持.zip格式的压缩解压,同时用本库压缩的.zip文件也可以被其他压缩软件使用 8、增加了多线程支持库1.1版,供对多线程的支持,并通过实现进入许可证机制以避免多线程冲突。 9、增加了数据库操作支持库1.0版,本支持库用来访问各种类型数据库。 10、增加了MySql支持库1.1版,本支持库实现对MySql的支持。 11、扩展界面支持库二1.1版中增加了“IP编辑框”窗口组件,支持对IP地址的输入和编辑。 12、修改了易模块的接口结构,在支持原有结构的基础上,增加了新的接口创建方式。 13、开发环境增加了即时输入提示。 14、全面增补帮助文档(esdn.chm),增订图片及例程。 15、其他很多地方改进。 以上新增功能详细情况请看易语言新版esdn帮助文档(esdn.chm),均有详细说明及例程。 -------------------------------------------------------------------------------- 易语言 3.5 正式版 相对于 3.39 版的新增功能: 1、增加了扩展界面支持库二,包含超级按钮、高级影像框、分隔条、 超级编辑框等窗口单元,包含图片组处理、文档格式转换等分类命令。 2、增加了端口访问支持库,以支持对计算机端口的直接访问。 3、图片组支持真彩且制作工具性能提升。 4、表格拖动选择闪烁的问题已经解决。 5、系统配置中可以设置不显示程序备注。 6、数据源支持设置基于单元格的只读属性。 7、组合框和列表框的数据绑定实现方式改变。 8、其他很多地方改进。 -------------------------------------------------------------------------------- 易语言 3.39 正式版相对 3.38 版的新增功能: 1、可以读取繁体版易语言编写的程序。 2、增加了 cncnv 内码转换支持库。 3、增加了树型框的事件和方法。 4、改进了打印预览。 5、运行时树型框的“项目”属性可以读出当前项目数据。 6、可以在“程序设置”对话框中设置程序版本号。 7、改正了读取SQL SERVER数据库出现的问题。 8、改正了xp下托盘图标弹出菜单单击桌面不消失的问题。 -------------------------------------------------------------------------------- 易语言 3.38 正式版相对 3.36 版的新增功能: 1、支持加密狗。 2、操作系统界面功能支持库中增加了“关闭系统”命令,支持重启、关机、注销、休眠、冬眠。 3、改进了扩展界面支持库中的透明标签单元。 4、其他改进。 -------------------------------------------------------------------------------- 易语言 3.36 正式版相对 3.3 版的新增功能: 1、开发环境支持源代码打印。 2、开发环境窗口单元箱增加了滚动按钮。 3、改进了安装卸载子系统。 4、改进了端口组件,添加了方法和属性。 5、改进了“操作系统界面功能支持库”中的“创建快捷方式”命令。 6、改进了OCX支持。 -------------------------------------------------------------------------------- 易语言 3.3 正式版相对 3.2 版的新增功能: 1、新增了“操作系统界面功能支持库”,支持Windows外壳功能。 2、试用限次在各版本之间不再累加。 3、支持数据库加密。系统核心支持库数据库类别中增加了“是否已加密”、 “置数据库密码”、“密码输入框”、“复制密码”命令。“打开”命令 的数据库密码参数已经启用,改进了数据库管理器和易之表以支持加密 数据库; 4、数据操作支持库一中增加了对RSA数字签名和验证的支持(提供了“数字 签名钥匙测试.e”例程),并增加了对RC4加密算法的支持; 5、系统核心支持库中的“文件读写”类别中增加了“打开加密文件”命令, 用作保存加密文件数据,并提供了“加解密工具.e”例程; 6、改进了安装程序的卸载功能。 -------------------------------------------------------------------------------- 易语言 3.2 正式版相对 3.1 版的新增功能: 1、增加了对OCX组件(即ActiveX组件)的支持。 易语言 3.1 正式版相对 3.0 版的新增功能: 1、支持独立编译,独立编译后的易语言程序可以脱离易语言系统单独运行。 易语言3.0 正式版相对测试五版的新增功能: 1、增加电子注册支持。 易语言3.0 测试五版本相对于测试版三新增功能: 1、“系统处理”命令类别中加入了对配置文件进行操作及取操作系统类别的命令。 2、改进了调试过程中查改容器的功能(移到了工具条上)。 3、完成了安装制作工具的开发,具体请见系统setup目录中的readme.txt文件说明。 只是由于目前编译功能尚未开放,所以暂时不能被使用。 易语言3.0 测试三版本相对于测试版二新增功能: 1、加入了程序调试支持系统。 易语言3.0 Beta版本相对于2.51版本新增加的功能和需要注意点: 一、新增功能: 建立了完全的易程序编译器系统,支持全编译,可以直接将程序编译为CPU指令码 运行,从而突破了长期以来的速度瓶颈。 二、新增特性: 1、子程序指针值为该子程序的内存代码地址,可以直接传递给DLL命令用作回调。 2、只有被使用到的代码和数据才会被编译到可执行文件中。 3、如果需要屏蔽子程序中的某段程序使之不会被编译输出,直接使用类似: “判断循环首(假)”或 “如果真(假)”括住该语句块即可。 4、程序配置中允许设置任
Javascript小技巧一箩筐 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode event.shiftKey event.altKey event.ctrlKey 事件返回值 event.returnValue 鼠标位置 event.x event.y 窗体活动元素 document.activeElement 绑定事件 document.captureEvents(Event.KEYDOWN); 访问窗体元素 document.all("txt").focus(); document.all("txt").select(); 窗体命令 document.execCommand 窗体COOKIE document.cookie 菜单事件 document.oncontextmenu 创建元素 document.createElement("SPAN"); 根据鼠标获得元素: document.elementFromPoint(event.x,event.y).tagName=="TD document.elementFromPoint(event.x,event.y).appendChild(ms) 窗体图片 document.images[索引] 窗体事件绑定 document.onmousedown=scrollwindow; 元素 document.窗体.elements[索引] 对象绑定事件 document.all.xxx.detachEvent("onclick",a); 插件数目 navigator.plugins 取变量类型 typeof($js_libpath) == "undefined" 下拉框 下拉框.options[索引] 下拉框.options.length 查找对象 document.getElementsByName("r1"); document.getElementById(id); 定时 timer=setInterval("scrollwindow()",delay); clearInterval(timer); UNCODE编码 escape() ,unescape 父对象 obj.parentElement(dhtml) obj.parentNode(dom) 交换表的行 TableID.moveRow(2,1) 替换CSS document.all.csss.href = "a.css"; 并排显示 display:inline 隐藏焦点 hidefocus=true 根据宽度换行 style="word-break:break-all" 自动刷新 简单邮件 快速转到位置 obj.scrollIntoView(true) 锚 anchors 网页传递参数 location.search(); 可编辑 obj.contenteditable=true 执行菜单命令 obj.execCommand 双字节字符 /[^x00-xff]/ 汉字 /[u4e00-u9fa5]/ 让英文字符串超出表格宽度自动换行 word-wrap: break-word; word-break: break-all; 透明背景 获得style内容 obj.style.cssText HTML标签 document.documentElement.innerHTML 第一个style标签 document.styleSheets[0] style标签里的第一个样式 document.styleSheets[0].rules[0] 防止点击空链接时,页面往往重置到页首端。 word 上一网页源 asp: request.servervariables("HTTP_REFERER") javascript: document.referrer 释放内存 CollectGarbage(); 禁止右键 document.oncontextmenu = function() { return false;} 禁止保存 地址栏图标 favicon.ico 名字最好不变16*16的16色,放虚拟目录根目录下 收藏栏图标 查看源码 关闭输入法 自动全选 ENTER键可以让光标移到下一个输入框 文本框的默认值 title换行 obj.title = "123 sdfs " 获得时间所代表的微秒 var n1 = new Date("2004-10-10".replace(/-/g, "/")).getTime() 窗口是否关闭 win.closed checkbox扁平
获取选中内容 document.selection.createRange().duplicate().text 自动完成功能 打开该功能 关闭该功能 窗口最大化 无关闭按钮IE window.open("aa.htm", "meizz", "fullscreen=7"); 统一编码/解码 alert(decodeURIComponent(encodeURIComponent("http://你好.com?as= hehe"))) encodeURIComponent对":"、"/"、";" 和 "?"也编码 表格行指示 //各种尺寸 s += " 网页可见区域宽:"+ document.body.clientWidth; s += " 网页可见区域高:"+ document.body.clientHeight; s += " 网页可见区域高:"+ document.body.offsetWeight +" (包括边线的宽)"; s += " 网页可见区域高:"+ document.body.offsetHeight +" (包括边线的宽)"; s += " 网页正文全文宽:"+ document.body.scrollWidth; s += " 网页正文全文高:"+ document.body.scrollHeight; s += " 网页被卷去的高:"+ document.body.scrollTop; s += " 网页被卷去的左:"+ document.body.scrollLeft; s += " 网页正文部分上:"+ window.screenTop; s += " 网页正文部分左:"+ window.screenLeft; s += " 屏幕分辨率的高:"+ window.screen.height; s += " 屏幕分辨率的宽:"+ window.screen.width; s += " 屏幕可用工作区高度:"+ window.screen.availHeight; s += " 屏幕可用工作区宽度:"+ window.screen.availWidth; //过滤数字 //特殊用途 //不缓存 //正则匹配匹配中文字符的正则表达式: [u4e00-u9fa5] 匹配双字节字符(包括汉字在内):[^x00-xff] 匹配空行的正则表达式: [s| ]* 匹配HTML标记的正则表达式:/<(.*)>.*|<(.*) />/ 匹配首尾空格的正则表达式:(^s*)|(s*$)(像vbscript那样的trim函数) 匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)* 匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)? 以下是例子: 利用正则表达式限制网页表单里的文本框输入内容: 用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,"")" onbeforepaste="clipboardData.setData("text",clipboardData.getData("text").replace(/[^u4E00-u9FA5]/g,""))" 1.用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,"")" onbeforepaste="clipboardData.setData("text",clipboardData.getData("text").replace(/[^uFF00-uFFFF]/g,""))" 2.用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^d]/g,"") "onbeforepaste="clipboardData.setData("text",clipboardData.getData("text").replace(/[^d]/g,""))" 3.用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[W]/g,"") "onbeforepaste="clipboardData.setData("text",clipboardData.getData("text").replace(/[^d]/g,""))" //消除图像工具栏 or //无提示关闭 function Close() { var ua=navigator.userAgent var ie=navigator.appName=="Microsoft Internet Explorer"?true:false if(ie) { var IEversion=parseFloat(ua.substring(ua.indexOf("MSIE ")+5,ua.indexOf(";",ua.indexOf("MSIE ")))) if(IEversion< 5.5) { var str = "" str += ""; document.body.insertAdjacentHTML("beforeEnd", str); document.all.noTipClose.Click(); } else { window.opener =null; window.close(); } } else { window.close() } } //取得控件得绝对位置(1) <script language="javascript"> function getoffset(e) { var t=e.offsetTop; var l=e.offsetLeft; while(e=e.offsetParent) { t+=e.offsetTop; l+=e.offsetLeft; } var rec = new Array(1); rec[0] = t; rec[1] = l; return rec } //光标停在文字最后 <script language="javascript"> function cc() { var e = event.srcElement; var r =e.createTextRange(); r.moveStart("character",e.value.length); r.collapse(true); r.select(); } //页面进入和退出的特效 进入页面 推出页面 这个是页面被载入和调出时的一些特效。duration表示特效的持续时间,以秒为单位。transition表示使 用哪种特效,取值为1-23:   0 矩形缩小   1 矩形扩大   2 圆形缩小   3 圆形扩大   4 下到上刷新   5 上到下刷新   6 左到右刷新   7 右到左刷新   8 竖百叶窗   9 横百叶窗   10 错位横百叶窗   11 错位竖百叶窗   12 点扩散   13 左右到中间刷新   14 中间到左右刷新   15 中间到上下   16 上下到中间   17 右下到左上   18 右上到左下   19 左上到右下   20 左下到右上   21 横条   22 竖条   23 //网页是否被检索   其中属性值有以下一些:   属性值为"all": 文件将被检索,且页上链接可被查询;   属性值为"none": 文件不被检索,而且不查询页上的链接;   属性值为"index": 文件将被检索;   属性值为"follow": 查询页上的链接;   属性值为"noindex": 文件不检索,但可被查询链接;   属性值为"nofollow": //打印分页

page1

page2

//设置打印 <script language=javascript> function window.onload() { // -- advanced features factory.printing.SetMarginMeasure(2) // measure margins in inches factory.printing.SetPageRange(false, 1, 3) // need pages from 1 to 3 factory.printing.printer = "HP DeskJet 870C" factory.printing.copies = 2 factory.printing.collate = true factory.printing.paperSize = "A4" factory.printing.paperSource = "Manual feed" // -- basic features factory.printing.header = "居左显示&b居中显示&b居右显示页码,第&p页/共&P页" factory.printing.footer = "(自定义页脚)" factory.printing.portrait = false factory.printing.leftMargin = 0.75 factory.printing.topMargin = 1.5 factory.printing.rightMargin = 0.75 factory.printing.bottomMargin = 1.5 } function Print(frame) { factory.printing.Print(true, frame) // print with prompt }
具体使用手册,更多信息,点这里 //自带的打印预览 WebBrowser.ExecWB(1,1) 打开 Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口 Web.ExecWB(4,1) 保存网页 Web.ExecWB(6,1) 打印 Web.ExecWB(7,1) 打印预览 Web.ExecWB(8,1) 打印页面设置 Web.ExecWB(10,1) 查看页面属性 Web.ExecWB(15,1) 好像是撤销,有待确认 Web.ExecWB(17,1) 全选 Web.ExecWB(22,1) 刷新 Web.ExecWB(45,1) 关闭窗体无提示

//去掉打印时的页眉页脚 <script language="JavaScript"> var HKEY_Root,HKEY_Path,HKEY_Key; HKEY_Root="HKEY_CURRENT_USER"; HKEY_Path="\Software\Microsoft\Internet Explorer\PageSetup\"; //设置网页打印的页眉页脚为空 function PageSetup_Null() { try { var Wsh=new ActiveXObject("WScript.Shell"); HKEY_Key="header"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,""); HKEY_Key="footer"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,""); } catch(e){} } //设置网页打印的页眉页脚为默认值 function PageSetup_Default() { try { var Wsh=new ActiveXObject("WScript.Shell"); HKEY_Key="header"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&w&b页码,&p/&P"); HKEY_Key="footer"; Wsh.RegWrite(HKEY_Root+HKEY_Path+HKEY_Key,"&u&b&d"); } catch(e){} } //浏览器验证 function checkBrowser() { this.ver=navigator.appVersion this.dom=document.getElementById?1:0 this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom)?1:0; this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0; this.ie4=(document.all && !this.dom)?1:0; this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0; this.ns4=(document.layers && !this.dom)?1:0; this.mac=(this.ver.indexOf("Mac") > -1) ?1:0; this.ope=(navigator.userAgent.indexOf("Opera")>-1); this.ie=(this.ie6 || this.ie5 || this.ie4) this.ns=(this.ns4 || this.ns5) this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns5 || this.ns4 || this.mac || this.ope) this.nbw=(!this.bw) return this; } //计算内容宽和高 //无模式的提示框 function modelessAlert(Msg) { window.showModelessDialog("javascript:alert(""+escape(Msg)+"");window.close();","","status:no;resizable:no;help:no;dialogHeight:height:30px;dialogHeight:40px;"); } //屏蔽按键 屏蔽鼠标右键、Ctrl+N、Shift+F10、Alt+F4、F11、F5刷新、退格键 <script language="Javascript"> //可编辑SELECT //设置光标位置 function getCaret(textbox) { var control = document.activeElement; textbox.focus(); var rang = document.selection.createRange(); rang.setEndPoint("StartToStart",textbox.createTextRange()) control.focus(); return rang.text.length; } function setCaret(textbox,pos) { try { var r =textbox.createTextRange(); r.moveStart("character",pos); r.collapse(true); r.select(); } catch(e) {} } function selectLength(textbox,start,len) { try { var r =textbox.createTextRange(); r.moveEnd("character",len-(textbox.value.length-start)); r.moveStart("character",start); r.select(); } catch(e) {//alert(e.description)} } function insertAtCaret(textbox,text) { textbox.focus(); document.selection.createRange().text = text; } //页内查找 function findInPage(str) { var txt, i, found,n = 0; if (str == "") { return false; } txt = document.body.createTextRange(); for (i = 0; i <= n && (found = txt.findText(str)) != false; i++) { txt.moveStart("character", 1); txt.moveEnd("textedit"); } if (found) { txt.moveStart("character", -1); txt.findText(str); txt.select(); txt.scrollIntoView(); n++; } else { if (n > 0) { n = 0; findInPage(str); } else { alert(str + "... 您要找的文字不存在。 请试着输入页面中的关键字再次查找!"); } } return false; } //书 http://www.itpub.net/attachment.php?s=&postid=1894598 http://www.wrclub.net/down/listdown.aspx?id=1341//操作EXECL <script language="javascript"> function jStartExcel() { var xls = new ActiveXObject ( "Excel.Application" ); xls.visible = true; var newBook = xls.Workbooks.Add; newBook.Worksheets.Add; newBook.Worksheets(1).Activate; xls.ActiveWorkBook.ActiveSheet.PageSetup.Orientation = 2; xls.ActiveWorkBook.ActiveSheet.PageSetup.PaperSize = 5; newBook.Worksheets(1).Columns("A").columnwidth=50; newBook.Worksheets(1).Columns("A").WrapText = true; newBook.Worksheets(1).Columns("B").columnwidth=50; newBook.Worksheets(1).Columns("B").WrapText = true; newBook.Worksheets(1).Range("A1:B1000").NumberFormat = "0"; newBook.Worksheets(1).Range("A1:B1000").HorizontalAlignment = -4131; newBook.Worksheets(1).Cells(1,1).Interior.ColorIndex="15"; newBook.Worksheets(1).Cells(1,1).value="First Column, First Cell"; newBook.Worksheets(1).Cells(2,1).value="First Column, Second Cell"; newBook.Worksheets(1).Cells(1,2).value="Second Column, First Cell"; newBook.Worksheets(1).Cells(2,2).value="Second Column, Second Cell"; newBook.Worksheets(1).Name="My First WorkSheet"; } tip <script Language="JavaScript"> //***********默认设置定义.********************* tPopWait=50;//停留tWait豪秒后显示提示。 tPopShow=5000;//显示tShow豪秒后关闭提示 showPopStep=20; popOpacity=99; //***************内部变量定义***************** sPop=null; curShow=null; tFadeOut=null; tFadeIn=null; tFadeWaiting=null; document.write(""); document.write("
"); function showPopupText(){ var o=event.srcElement; MouseX=event.x; MouseY=event.y; if(o.alt!=null && o.alt!=""){o.dypop=o.alt;o.alt=""}; if(o.title!=null && o.title!=""){o.dypop=o.title;o.title=""}; if(o.dypop!=sPop) { sPop=o.dypop; clearTimeout(curShow); clearTimeout(tFadeOut); clearTimeout(tFadeIn); clearTimeout(tFadeWaiting); if(sPop==null || sPop=="") { dypopLayer.innerHTML=""; dypopLayer.style.filter="Alpha()"; dypopLayer.filters.Alpha.opacity=0; } else { if(o.dyclass!=null) popStyle=o.dyclass else popStyle="cPopText"; curShow=setTimeout("showIt()",tPopWait); } } } function showIt(){ dypopLayer.className=popStyle; dypopLayer.innerHTML=sPop; popWidth=dypopLayer.clientWidth; popHeight=dypopLayer.clientHeight; if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24 else popLeftAdjust=0; if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24 else popTopAdjust=0; dypopLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust; dypopLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust; dypopLayer.style.filter="Alpha(Opacity=0)"; fadeOut(); } function fadeOut(){ if(dypopLayer.filters.Alpha.opacity0) { dypopLayer.filters.Alpha.opacity-=1; tFadeIn=setTimeout("fadeIn()",1); } } document.onmouseover=showPopupText; 插入文字"); } } //netscapte下操作xml doc = new ActiveXObject("Msxml2.DOMDocument"); doc = new ActiveXObject("Microsoft.XMLDOM") ->> doc = (new DOMParser()).parseFromString(sXML,"text/xml") //判断键值 <script language="javascript"> var ie =navigator.appName=="Microsoft Internet Explorer"?true:false; function keyDown(e) { if(!ie) { var nkey=e.which; var iekey="现在是ns浏览器"; var realkey=String.fromCharCode(e.which); } if(ie) { var iekey=event.keyCode; var nkey="现在是ie浏览器"; var realkey=String.fromCharCode(event.keyCode); if(event.keyCode==32){realkey="" 空格""} if(event.keyCode==13){realkey="" 回车""} if(event.keyCode==27){realkey="" Esc""} if(event.keyCode==16){realkey="" Shift""} if(event.keyCode==17){realkey="" Ctrl""} if(event.keyCode==18){realkey="" Alt""} } alert("ns浏览器中键值:"+nkey+" "+"ie浏览器中键值:"+iekey+" "+"实际键为"+realkey); } document.onkeydown = keyDown; //Javascript Document.

请按任意一个键。。。。

//禁止FSO 1.注销组件 regsvr32 /u scrrun.dll 2.修改PROGID HKEY_CLASSES_ROOTScripting.FileSystemObject Scripting.FileSystemObject 3.对于使用object的用户,修改HKEY_CLASSES_ROOTScripting. //省略号
就是比如有一行文字,很长,表格内一行显示不下.
//检测media play版本 //图象按比例 <script language="JavaScript"> //细线SELECT function getComputerName() { var objWMIService = GetObject("Winmgmts:rootcimv2"); for(e = new Enumerator(objWMIService) ; !e.atEnd() ; e.moveNext()) { var getComputer = e.item(); return getComputer.Name; } } //条件编译 <script language=javascript> /*@cc_on @*/ /*@if (@_win32 && @_jscript_version>5) function window.confirm(str) { execScript("n = msgbox(""+ str +"", 257)", "vbscript"); return(n == 1); } @end @*/ //mergeAttributes 复制所有读/写标签属性到指定元素。
This is a sample DIV element.
This is another sample DIV element.
以上内容可以随意转载,转载后请注名来源和出处! 原文链接:http://ttyp.cnblogs.com/archive/2004/11/15/63900.aspx //Import function Import() { for( var i=0; i"); else document.write(""); } }; //js枚举 function getComputerName() { var objWMIService = GetObject("Winmgmts:rootcimv2"); for(e = new Enumerator(objWMIService) ; !e.atEnd() ; e.moveNext()) { var getComputer = e.item(); return getComputer.Name; } } //条件编译 <script language=javascript> /*@cc_on @*/ /*@if (@_win32 && @_jscript_version>5) function window.confirm(str) { execScript("n = msgbox(""+ str +"", 257)", "vbscript"); return(n == 1); } @end @*/ //mergeAttributes 复制所有读/写标签属性到指定元素。
This is a sample DIV element.
This is another sample DIV element.
电子书制作:源码爱好者

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧