/**
last modify 2007.3.01
*/
Tab = Class.create();//(Component);
Tab.construct = function(){//($self, $class) {
var that = this;
var _num = 1;
this.initialize = function() {
//$self.super0.initialize.call(this);
};
this.objEvent = function(div,child) {
child.ondblclick = that.dblclick;
child.onclick = that.click;
//div.onclick = that.clickit;
};
this.objParam = function() {
};
this.Create = function(element) {
this.div = document.createElement("div");
for(i=0;i<_num;i++) {
var child = _createElement();
that.div.appendChild(child);
that.objParam();
that.objEvent(this.div,child);
if(0 == i)
child.style.borderBottom = 0;
}
try {
element.appendChild(this.div);
}catch(e) { alert("tab组件父节点不正确"); }
//$self.super0.html = that.div;
};
this.clickit = function(){
that.select();
return false;
};
this.setPosition = function(x,y) {
var o = that.getHTML();
with(o.style){
left = x;
top = y;
}
};
this.getPosition = function() {
var o = that.getHTML();
var x = parseInt(o.style.left) || 0;
var y = parseInt(o.style.top) || 0;
return {x:x, y:y};
};
this.getHTML = function() {
return this.div;
};
//设置创建tab页个数,初始值为1,在create前调用
this.setNum = function(num) {
_num = parseInt(num) || 1;
};
//创建圆角div
var _createElement = function() {
var div = document.createElement("div");
var div_1 = document.createElement("div");
var div_2 = document.createElement("div");
var div_3 = document.createElement("div");
var div_4 = document.createElement("div");
var div_5 = document.createElement("div");
div_5.innerText = "标签名";
div.appendChild(div_1);
div.appendChild(div_2);
div.appendChild(div_3);
div.appendChild(div_4);
div.appendChild(div_5);
_elementParam(div,div_1,div_2,div_3,div_4,div_5);
return div;
};
//设置圆角div属性
var _elementParam = function(div,div_1,div_2,div_3,div_4,div_5) {
div.style.overflow = "hidden";
div_1.style.overflow = "hidden";
div_2.style.overflow = "hidden";
div_3.style.overflow = "hidden";
div_4.style.overflow = "hidden";
div_1.style.height = "1px";
div_2.style.height = "1px";
div_3.style.height = "1px";
div_4.style.height = "2px";
div_5.style.height = "1px";
div.style.borderBottom = "1px #999 solid";
div_1.style.borderTop = "1px #999 solid";
div_1.style.borderLeft = "1px #999 solid";
div_1.style.borderRight = "1px #999 solid";
div_2.style.borderLeft = "1px #999 solid";
div_2.style.borderRight = "1px #999 solid";
div_3.style.borderLeft = "1px #999 solid";
div_3.style.borderRight = "1px #999 solid";
div_4.style.borderLeft = "1px #999 solid";
div_4.style.borderRight = "1px #999 solid";
div_5.style.borderLeft = "1px #999 solid";
div_5.style.borderRight = "1px #999 solid";
div_1.style.margin = "0 5px";
div_2.style.margin = "0 3px";
div_3.style.margin = "0 2px";
div_4.style.margin = "0 1px";
div_2.style.borderWidth = 2;
div_5.style.display = "inline";
div_5.style.fontSize = "12px";
div_5.style.textAlign = "center";
div_5.style.whiteSpace = "nowrap";
div_5.style.width = "80px";
div.style.width = "80px";
div.style.display = "inline";
};
//双击事件
this.dblclick = function() {
var div_5 = this.lastChild;
var inp = document.createElement("input");
div_5.appendChild(inp);
inp.style.position = "absolute";
inp.style.left = 1;
inp.style.top = 4;
inp.style.fontSize = div_5.style.fontSize;
inp.style.height = div_5.offsetHeight;
inp.style.width = div_5.offsetWidth - 2;
inp.style.border = "none";
inp.style.textAlign = "center";
inp.value = div_5.innerText;
inp.maxLength = 6;
inp.select();
inp.onblur = function() {
div_5.innerText = ("" == this.value ? " ":this.value);
this.removeNode(true);
};
};
//点击事件,调用click_operate操作
this.click = function() {
var child = that.div.childNodes;
for(var i=0;i<child.length;i++)
child[i].style.borderBottom = "1 #999 solid";
this.style.borderBottom = 0;
that.click_operate();
};
this.click_operate = function() {
//未实现
};
//设置尺寸大小
this.setDimension = function(dimension) {
if(!isNaN(dimension)) {
var child = this.div.childNodes;
for(var i=0;i<child.length;i++) {
child[i].style.width = dimension;
child[i].lastChild.style.width = dimension;
}
}
};
//设置字体大小
this.setFontSize = function(size) {
var child = this.div.childNodes;
for(var i=0;i<child.length;i++)
child[i].lastChild.style.fontSize = size;
};
this.data = {};
this.setData = function() {
this.data.__p = {};
this.data.__p.name = "Tab";
this.data.parentId = this.div.parentNode.id;
this.data.left = this.div.offsetLeft;
this.data.top = this.div.offsetTop;
this.data.property = {};
this.data.property.value = [];
for(var i=0;i<_num;i++) {
this.div.property.value[i] = this.div.childNodes[i].lastChild.innerText;
}
this.data.property.fontSize = this.div.firstChild.lastChild.style.fontSize;
this.data.property.width = this.div.firstChild.offsetWidth;
};
this.load = function(data) {
var obj = document.getElementById(data.parentId);
var _num = data.property.value.length;
this.create(obj);
this.div.style.left = data.left;
this.div.style.top = data.top;
for(var i=0;i<_num;i++) {
this.div.childNodes[i].lastChild.innerText = data.property.value[i];
this.div.childNodes[i].lastChild.fontSize = data.property.fontSize;
this.div.childNodes[i].lastChild.style.width = data.property.width;
this.div.childNodes[i].style.width = data.property.width;
}
//$self.super0.html = that.div;
};
}
使用的modello.js包,需要配合的一些js父类已经被屏蔽,闭包未处理,使用的时候
var tab = new Tab();
tab.setNum('tab个数');
tab.Create('父节点元素');
分享到:
相关推荐
在书中,作者可能详细讲解了如何利用这些特性来构建类的表示,并实现继承、多态和封装等OOP核心概念。 1. **继承**:在C中,可以通过结构体嵌套和指针的方式实现类的层次结构,模拟继承。子类可以包含一个指向父类...
在这个"C#计算器"项目中,OOP技术被充分利用,展示了如何在C# WinForm应用程序中有效地组织代码并实现功能模块化。 首先,让我们深入理解一下C#中的OOP概念。OOP有四个核心原则:封装、继承、多态和抽象。封装是将...
可以定义一个函数指针类型,然后在结构体中存储这种类型的指针,使得不同的结构体实例可以通过相同的接口调用不同的实现。这被称为“虚函数”或“回调函数”。 4. 抽象:抽象在C中通常通过接口(即函数原型)来实现...
即在一个结构体中包含另一个结构体的实例,从而实现部分继承的功能。 ```c typedef struct { // 基类属性 char base_attribute[50]; } Base; typedef struct { Base base; // 派生类特有的属性 int derived_...
比如,你可以创建一个名为“IActuator”的接口,规定所有实现此接口的类必须包含启动、停止和状态查询等方法。这样,无论实际使用哪种类型的执行器(如电机或气缸),都可以通过统一的接口进行控制,提高了代码的...
封装是将数据和操作数据的函数捆绑在一起形成一个类的过程,这样可以隐藏对象的内部状态和实现细节,只暴露接口。在C语言中,可以通过结构体(struct)和函数指针来实现封装。 继承(Inheritance): 继承是基于...
- `core`:可能是一个库或者核心代码的目录,包含实现OOP的关键结构和函数。 - `src`:源代码目录,存放所有的C源文件,每个文件可能对应一个类或功能模块。 - `doc`:文档目录,可能包含设计文档、API参考、用户...
Java支持单一继承,即一个子类只能有一个父类,但可以通过接口实现多重继承的效果。 3. 多态:多态是指同一种行为在不同的对象上有不同的表现形式。在Java中,多态主要通过方法重写(Override)和方法重载...
本篇将深入探讨如何利用OOP来实现计算机的基本计算功能,我们将以一个简单的计算器为例进行详细讲解。 首先,我们来理解OOP的核心概念: 1. 类(Class):类是对象的模板或蓝图,定义了对象的属性(数据成员)和...
我们可以利用结构体来模拟对象,其中每个结构体变量代表一个对象,结构体中的成员代表对象的属性或状态。 2. **函数指针**:C语言中的函数指针可以用来模拟方法。将函数指针作为结构体的成员,可以使得这些函数与...
3. 继承:通过指针或结构嵌套来实现一个类从另一个类继承属性和行为。 4. 封装:使用汇编语言的寄存器和内存管理来隐藏对象的内部细节,只暴露必要的接口。 5. 多态性:通过函数指针或虚拟方法表实现,使得子类可以...
C# 是一个支持OOP的现代编程语言,非常适合用来实现面向对象的设计。 在C#中,对象是OOP的基础,它们包含了属性(数据)和方法(行为)。例如,我们可以创建一个名为`Car`的类来表示汽车,该类可能有`Weight`和`...
多态是OOP的另一个核心特性,它允许我们通过一个接口引用多个不同的实现,即同一个行为具有多种状态。多态可以分为编译时多态和运行时多态。编译时多态是通过方法重载(overload)实现的,它依赖于参数的不同来区分...
接口分离原则主张,一个类不应该被迫实现它不使用的接口方法。将大的、宽泛的接口拆分为小而具体的接口,可以让客户端只依赖它们真正需要的方法。这样既减少了冗余,也提高了代码的可读性和可维护性。例如,通过将一...
类是OOP的基础,它是一个模板或者蓝图,定义了一组属性(数据成员)和行为(方法)。对象是类的实例,它们通过类来创建,具有类所定义的特性和功能。例如,你可以定义一个名为“Person”的类,包含属性如姓名、年龄...
用c实现oop.PDF
继承允许一个类(子类)继承另一个类(父类)的属性和行为,从而实现代码重用。组合是指一个类包含其他类的对象,实现更复杂结构的构建。多态性允许不同类的对象对同一消息作出不同的响应,增强了代码的灵活性。 ...
10. 综合应用:给出一个实际问题,要求设计并实现一个完整的OOP系统,综合运用以上知识点。 通过解答这些题目,考生不仅可以检验自己对OOP理论知识的掌握程度,还能提升实际编程能力,为未来的职业生涯打下坚实基础...
总的来说,利用PHP的OOP特性实现数据保护,可以提高代码的封装性和安全性,防止不必要的外部干扰,同时也能让代码结构更清晰,易于维护。在实际项目中,开发者应当谨慎选择合适的可见性,以确保数据的正确管理和使用...
3. **继承**:Java支持单继承,一个类可以继承另一个类的属性和方法,从而实现代码的复用。学习者会接触到extends关键字,并学习如何使用super引用父类的成员。 4. **多态**:多态允许不同的对象对同一消息作出不同...