item方法(itemstatechanged方法作用)
excel的vba中,workbooks和worksheets既然都是集合,可为什么没有item方法呢
看了你对其他回答的提问
Collection,workbooks,worksheets都有Item,无论把他叫做方法还是叫做属性
如果你熟悉面向对象编程,用过VB中类模块,就不会有这样的疑问
简单说来,无论属性还是方法,都是类模块中的函数(这里不区分过程和函数的区别,这是VB特别的区分,在其他编程语言中他们都是函数)
但是对于类模块来说,除了可以用sub和function来写函数以外,为了使对象具有逻辑上的完整性又定义了所谓的属性,其实属性本质上任然是类模块中的一段函数
Property get
End Property 对应 function
Property let/set
End Property 对应 sub
除了名称上的不同,他们的功能几乎完全一样,但是从外部表现来看一个叫做方法一个叫做属性
其实他们都是一个东西,只是为了更好的描述对象所采用的不同叫法而已
vba中,item为什么在collection集合中是方法,而在worksheets集合中却成了属性
选择属性还是方法【MSDN】
一般来说,属性是关于某个对象的数据,而方法则是该对象可能被要求去执行的动作。有些的属性比较明显,比如?Color?和?Name,而另一些则明显的是方法,比如?Move?和?Show。
不过,就跟人类行为的各个方面一样,这里也存在一个界限不清的区域,在该区域一个参数可作为二者之中的任一个。
例如,为什么?Visual?Basic?的?Collection?类的?Item?方法是一种方法而不是一种索引属性呢?该集合中的这些项不恰恰是数据吗?一个设想的?Widgets?集合类的?Item?方法可能以任一种方式实现,如下所示:
'?Widgets?集合中对象的私有存储(这对于两种实现方法来说是相同的)。
Private?mcol?As?New?Collection
Public?Property?Get?Item(Index?As?Variant)?As?Widget
???Set?Item?=?mcol.Item(Index)
End?Function
-?或?-
Public?Function?Item(Index?As?Variant)?As?Widget
???Set?Item?=?mcol.Item(Index)
End?Function
这两种实现并非完全大相径庭。二者都是只读的,因此为了把?Widget?对象放到集合中,二者都依赖于?Widgets?类的?Add?方法。二者都将每一件事情委派给?
Collection?对象去做—甚至它们的错误也都由该?Collection?产生的!
详细信息???关于委派,在本章的后面的“代码重用的许多(内部)方面”和“创建自己的集合类”中作了解释。
在想方设法搞清某个成员是对象的数据,还是对象的行为的过程中,可能会真地变得吹毛求疵。例如,可能会争辩说那个?Item?是一种方法,因为该集合的确是在做什么事—浏览所需要的?
Widget。不过,这种论点通常对任何一种实现来说,都是有道理的。
可能会发现将这种论点转向其头部,并问问自己想怎样看待这些成员,这样会更有用一些。如果希望人们把它当作关于对象的数据来看待,就使之成为一种属性。如果希望人们把它作为对象所做的什么事情来看待,就使之成为一种方法。
从语法的角度
用属性过程来实现成员的一个很强的理由,依赖于想要在代码中使用该成员的方式。也就是说,允许?Widgets?集合的用户象下面这样编写代码吗?
Set?Widgets.Item(4)?=?wdgMyNewWidget
如果允许的话,那么就以读写属性来实现该成员(用“Property?Get”和“Property?Set”),因为方法不支持这种语法。
注意???在所碰到的大多数集合实现中,这种语法是不允许的。为集合实现?Property?Set?并不象看起来那么容易。
从“属性”窗口的角度
也可以暂时假定对象象一个控件。能想象到成员在“属性”窗口中,或者在某个属性页上显示吗?如果那样做并没有任何意义的话,就不要作为一种属性来实现该成员。
从可以感觉到错误的角度
已经将某个?Item?设置为只读的属性后,如果忘记了这一点,并试图将一个值赋给它,很可能就会发现?Visual?Basic?为某个?Property?
Get?所产生的错误信息—“不能给只读属性赋值”,这跟为某个?Function?
过程所产生的错误信息-“赋值号左边的函数调用必须返回变体或对象”相比较,理解起来要更容易一些。
作为最后一招
作为最后一招,往上抛硬币来作出决定。如果在本节主题中的其它参数看起来都不是那么让人确信的话,那么它就可能没有多大意义。
详细信息???属性过程是在本章前面的“向类中添加属性”引入的。而方法则在“向类中添加方法”作了讨论。
c++中item是定义什么型量的?
item 方法
返回集合中的当前项。
enumObj.item()
必选项 myEnum 参数为任意 Enumerator 对象。
说明
item 方法返回当前项。 如果集合为空或者当前项没有定义,那么将返回undefined 。
示例
在下面的代码中,使用了 item 方法返回 Drives 集合中的一个成员。
function ShowDriveList(){
var fso, s, n, e, x;
fso = new ActiveXObject("Scripting.FileSystemObject");
e = new Enumerator(fso.Drives);
s = "";
for (; !e.atEnd(); e.moveNext())
{
x = e.item();
s = s + x.DriveLetter;
s += " - ";
if (x.DriveType == 3)
n = x.ShareName;
else if (x.IsReady)
n = x.VolumeName;
else
n = "[驱动器未就绪]";
s += n + "br";
}
return(s);
}
传奇使用item1物品方法
1、首先打开电脑,在电脑上找到《传奇》这款游戏,并打开。
2、其次打开游戏以后在其主页面点击背包。
3、最后在背包内往下滑找到item1物品,点击该物品即可进行使用。
如何在QML应用中得到一个Item的所有属性,信号及方法
Item是QML语言中最基本的元素。有时为了方便,我们可以列出它里面的所有的属性,信号及方法。我们可以通过这个方法来修改我们的属性等。在QML语言中,所有的可视的控件都是继承于Item的。
下面我们来通过一个例子来展示如何这么做。我们可以设计一个简单的QML应用如下:
[html] view plain copy
在CODE上查看代码片派生到我的代码片
import QtQuick 2.0
import Ubuntu.Components 1.1
/*!
\brief MainView with a Label and Button elements.
*/
MainView {
// objectName for functional testing purposes (autopilot-qt5)
objectName: "mainView"
// Note! applicationName needs to match the "name" field of the click manifest
applicationName: "properties.liu-xiao-guo"
/*
This property enables the application to change orientation
when the device is rotated. The default is false.
*/
//automaticOrientation: true
// Removes the old toolbar and enables new features of the new header.
useDeprecatedToolbar: false
width: units.gu(100)
height: units.gu(75)
Page {
title: i18n.tr("properties")
Rectangle {
id: rect
x: 0; y: 0
width: 100; height: 100
color: "blue"
Component.onCompleted: {
var keys = Object.keys(rect);
for(var i = 0; i keys.length; i++) {
var key = keys[i];
// prints all properties, signals, functions from object
console.log(key + ' : ' + rect[key]);
if (key === "x") {
rect[key] = 100;
}
}
}
}
}
}
这里rect最初的坐标为(0,0)。在Component.onCompleted中,我们遍历所有的属性,信号及方法。我们把x的值修改为100。最后运行的结果如下:
在Qt Creator的“Application Output”窗口中,我们可以看到:
[html] view plain copy
在CODE上查看代码片派生到我的代码片
qml: objectName :
qml: parent : Page11_QMLTYPE_42(0x1a55340)
qml: data : [object Object]
qml: resources : [object Object]
qml: children : [object Object]
qml: x : 0
qml: y : 0
qml: z : 0
qml: width : 100
qml: height : 100
qml: opacity : 1
qml: enabled : true
qml: visible : true
qml: visibleChildren : [object Object]
qml: states : [object Object]
qml: transitions : [object Object]
qml: state :
qml: childrenRect : QRectF(0, 0, 0, 0)
qml: anchors : QQuickAnchors(0x1a49840)
qml: left : QVariant(QQuickAnchorLine)
qml: right : QVariant(QQuickAnchorLine)
qml: horizontalCenter : QVariant(QQuickAnchorLine)
qml: top : QVariant(QQuickAnchorLine)
qml: bottom : QVariant(QQuickAnchorLine)
qml: verticalCenter : QVariant(QQuickAnchorLine)
qml: baseline : QVariant(QQuickAnchorLine)
qml: baselineOffset : 0
qml: clip : false
qml: focus : false
qml: activeFocus : false
qml: activeFocusOnTab : false
qml: rotation : 0
qml: scale : 1
qml: transformOrigin : 4
qml: transformOriginPoint : QPointF(50, 50)
qml: transform : [object Object]
qml: smooth : true
qml: antialiasing : false
qml: implicitWidth : 0
qml: implicitHeight : 0
qml: layer : QQuickItemLayer(0x1b90010)
qml: color : #0000ff
qml: gradient : null
qml: border : QQuickPen(0x1b8bd50)
qml: radius : 0
qml: objectNameChanged : function() { [code] }
qml: childrenRectChanged : function() { [code] }
qml: baselineOffsetChanged : function() { [code] }
qml: stateChanged : function() { [code] }
qml: focusChanged : function() { [code] }
qml: activeFocusChanged : function() { [code] }
qml: activeFocusOnTabChanged : function() { [code] }
qml: parentChanged : function() { [code] }
qml: transformOriginChanged : function() { [code] }
qml: smoothChanged : function() { [code] }
qml: antialiasingChanged : function() { [code] }
qml: clipChanged : function() { [code] }
qml: windowChanged : function() { [code] }
qml: childrenChanged : function() { [code] }
qml: opacityChanged : function() { [code] }
qml: enabledChanged : function() { [code] }
qml: visibleChanged : function() { [code] }
qml: visibleChildrenChanged : function() { [code] }
qml: rotationChanged : function() { [code] }
qml: scaleChanged : function() { [code] }
qml: xChanged : function() { [code] }
qml: yChanged : function() { [code] }
qml: widthChanged : function() { [code] }
qml: heightChanged : function() { [code] }
qml: zChanged : function() { [code] }
qml: implicitWidthChanged : function() { [code] }
qml: implicitHeightChanged : function() { [code] }
qml: update : function() { [code] }
qml: grabToImage : function() { [code] }
qml: grabToImage : function() { [code] }
qml: contains : function() { [code] }
qml: mapFromItem : function() { [code] }
qml: mapToItem : function() { [code] }
qml: forceActiveFocus : function() { [code] }
qml: forceActiveFocus : function() { [code] }
qml: nextItemInFocusChain : function() { [code] }
qml: nextItemInFocusChain : function() { [code] }
qml: childAt : function() { [code] }
qml: colorChanged : function() { [code] }
qml: radiusChanged : function() { [code] }
这些都是我们可以用到的。通过这个方法,我们可以全面地了解rect的所有属性。特别适用于一些动态生产的控件。我们可以用来修改它们的一些属性等。