C#的ToolTip(delphi叫Hint)机制非常怪,不是像delphi的元件一样,每个TControl有一个Hint属性,C#有一个ToolTip元件,当把这个元件从工具箱拉到form上后,选中form上的任何control元件,在属性窗体(Object Inspector)上就会多出一个属性“toolTip1上的ToolTip”,如果多拉几个ToolTip元件到form上,就会多出现几个这样的属性“toolTip2上的ToolTip”,“toolTip3上的ToolTip”.......怪异,实在是怪异,不知道叫什么设计模式。查看ToolTip的函数,有两个GetTooTip(Control AControl),SetTooTip(Control AControl,string AToolTip),感觉TooTip元件就是一个Dictionary,但是没有属性来知道某个ToolTip元件为多少个Control设定了ToolTip字串。
另一个奇怪的是,ToolStripStatusLabel/ToolStripDropDownButton等元件比较特殊,他们却有一个ToolTipText属性,他们实现Hint的机制又不靠ToolTip元件。 ......
C#的ToolTip(delphi叫Hint)机制非常怪,不是像delphi的元件一样,每个TControl有一个Hint属性,C#有一个ToolTip元件,当把这个元件从工具箱拉到form上后,选中form上的任何control元件,在属性窗体(Object Inspector)上就会多出一个属性“toolTip1上的ToolTip”,如果多拉几个ToolTip元件到form上,就会多出现几个这样的属性“toolTip2上的ToolTip”,“toolTip3上的ToolTip”.......怪异,实在是怪异,不知道叫什么设计模式。查看ToolTip的函数,有两个GetTooTip(Control AControl),SetTooTip(Control AControl,string AToolTip),感觉TooTip元件就是一个Dictionary,但是没有属性来知道某个ToolTip元件为多少个Control设定了ToolTip字串。
另一个奇怪的是,ToolStripStatusLabel/ToolStripDropDownButton等元件比较特殊,他们却有一个ToolTipText属性,他们实现Hint的机制又不靠ToolTip元件。 ......
一、类与对象
1、 类(Class)是用户定义的数据类型
2、 对象(Object)是类(Class)的一个实例,或由类定义数据类型的一个变量;
3、 类有一种状态(内部数据),操作(行为或方法),属性;
4、 对象是一个实体,程序运行时会为其内部表现分配一些内存;
5、 类与对象之间的关系和变量与类型之间一样的;
6、创建一个类 类型名(class name) =class
成员
方法
属性
7、对象用完之后应该释放内存;
二、创建一个类
1、一个类的变量不会为对象提供内存,只是在内存中提供一个引用或指针;
实例1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, ......
网页可见区域宽:document.body.clientWidth;
网页可见区域高:document.body.clientHeight;
网页可见区域高:document.body.offsetWidth (包括边线的宽);
网页可见区域高:document.body.offsetHeight (包括边线的宽);
网页正文全文宽:document.body.scrollWidth;
网页正文全文高:document.body.scrollHeight;
网页被卷去的高:document.body.scrollTop;
网页被卷去的左:document.body.scrollLeft;
网页正文部分上:window.screenTop;
网页正文部分左:window.screenLeft;
屏幕分辨率的高:window.screen.height;
屏幕分辨率的宽:window.screen.width;
屏幕可用工作区高度:window.screen.availHeight;
屏幕可用工作区宽度:window.screen.availWidth ......
首先是我们熟悉的extend函数
/**
* 扩展函数
* @param target 扩展对象
* @param params 扩展参数
*/
function extend(target, params) {
if (!target) {
target = {};
}
for (var prop in params) {
target[prop] = params[prop];
}
return target;
}
接下来继承函数
/**
* 继承函数
* @param SuperClass 父类
* @param overrides 重写方法
*/
function extendClass(SuperClass, overrides) {
var SubClass = function() {
// 自动调用构造函数
this.initialize.apply(this, arguments);
};
SubClass.prototype = new SuperClass();
extend(SubClass.prototype, overrides);
SubClass.superclass = SuperClass;
return SubClass;
}
测试代码
var Animal = extendClass(Object, {
initialize: function(name){
this.name = name;
},
showName: function(){
alert(this.name) ......
自从 Google 推出含 V8 JavaScript 引擎的 Chrome 以来,公众对 JavaScript
引擎执行效率的胃口又一次被提高,众多浏览器的开发者们绞尽脑汁提升他们的 JavaScript 性能,Opera 最新的10.50 版的 Carakan
引擎据称已经超过 V8,而 Firefox 的开发者们也不甘示弱。
最近升级到 Firefox 3.6 的用户已经发现他们的 JavaScript 速度有了非常明显的改善,虽然Firefox 的
TraceMonkey 引擎和 Googel V8 比仍有差距,不过,这个状况即将改变,Mozilla 团队正在开发一个新的
JavaScript 引擎,JägerMonkey,期待将 Firefox 的 JavaScript 性能提升到一个新的水平。
当前,Firefox TraceMonkey 引擎之所以性能不佳的一个原因是,它的追踪(trace)算法仍存在问题,Trace
是一种可以将 JavaScript
中的循环语句进行快速编译执行的算法,但这个算法在遇到复杂的,嵌套的,尤其是递归的循环语句时,并不能正确执行(详见这篇文章
),Firefox
因此会退回解释执行方式,而解释执行的效率是很低的。
Mozilla 团队正在解决这一问题,新的 JägerMonkey 引擎在测试中已经显露出非常积极的结果,最终的性能提高可能高达 30% ~
40%。Mozilla
的 Dave Mandelin ......
var greeting_w = {
c:['你好!', '欢迎回来', '欢迎回到组织', '祝你好心情!', 'Hi~', 'Hello!', '*^o^*', ':D', '没事多喝水', 'CR=ChinaRen', '又见面了!', '多运动少生病', '欢迎来地球~', '欢迎来火星~', '你太有才了!', 'hoho', '没事吃个水果', '来哼个歌儿', '拆纳仁欢迎你!', '想ta了吗?', '啥时同学会?', '保护好眼睛', '要常来啊!', '起来活动活动~','去校友录看看','来校友录转转','今天你校友录了吗','校友录想你了','和同学打个招呼','来次班级聚会','给同学去留言','多久没见同学了','你有几个校友录','别忘了校友录哦','访校友录看同学','找同学上校友录','爱上CR校友录','班级聚会上校友录','校友录,我来了','校友录相册频道','上校友录挣积分','校友录积分换礼品','上校友录点火炬','上校友录传火炬','上校友录加油奥运','和同学一起看奥运','型男索女美女多','爱中国人社区','回帖为奥运加油','上社区要回帖','社区派对等着你','CR社区很靠谱','CR社区内容好','图片频道看着爽','生命不息回帖不止','CR社区生活圣地','没事视频胡同','麻辣婆媳齐上阵','玩转社区不求人','上CR社区抢沙发','海外游子的故乡','上校友论坛找校友','不争精华争口气','五月鹊桥 ......