七月网

treeview控件(treeview控件怎么写添加节点)

七月网2530

一、c++builder中的treeview控件

海争霸的地图编辑器最难的部份是Trigger,这个大家都知道吧!所以这主要向大家说明Trigger的原理和用法.至於其他部份就请玩家自行研究了!第一部份:Trigger的原理首先,Triggers可以决定电脑的行动,同时Triggers系统让你设定当完成某条件后便执行某行动.故你可透过Trigger安排任务或特别事件,创造出像故事模式中的任务. Trigger包含叁样东西,分别是pLayer,Conditions(条件),Action(行动).以下是一个最简单的例子. pLayer: pLayer 1 Conditions: pLayer 1 killS at least 10 ANY UnitS Action: END SCENARIO IN VICTORY FOR pLayer 1这个Trigger很简单,大家一看就会明白.第一项:pLayer: pLayer 1代表该Trigger是设定给pLayer1.整个意思是当pLayer1完成条件(Conditions)杀掉10个或以上的敌人(包括建物)后,执行(Action),取得胜利,完成任务.所有Trigger都是由这叁个东西组成,复杂的任务可以由无数个Triggers组成,当然所需的编辑时间也较长.侍会为大家说明如何使用Trigger,勿切留意!!!第二部份:Condition-条件说明只要进入Triggers的设定画面,你便可以开始设定Triggers,同时你必须先设定好Triggers由那个pLayer执行,才可开始设定Conditions(条件).设定Conditions时,就是替事件设定条件,而条件可以多过一个,例如要设定一个过关条件,需要持有10000矿及拥有20个工兵.那麽设定时就是...随了设定过关条件外,其他事件,都是由这些设定完成.所以我在这为大家说明一些主要的Conditions的意思.首先,我想大家明白,每当要设定和数字有关的Triggers时,都会遇见叁个额外设定,就是at least,at most和exactly.他们的意思分别是最少(多过或等如),最多(少过或等如)和相等.还有game seconds,正常游戏速度时每秒都是和实际时间相同的.以下是Conditions的意思说明. always-不须任何条件便执行Action,通常用来设定电脑ai和开始时的资源设定. bring-和文字意思一样,当某pLayer带领某数量的单位到某地点时,便执行Action. command-当拥有特定数量的单位时,便执行Action. accumulate-当拥有特定数量的资源时,便执行Action. countdown timer-当计时器倒数到特定时间时,便执行Action. deaths-当玩家失去特定数量的单位时,便执行Action. elapsed-当游戏开始后经过你所指定的时间,便执行Action. kill-当玩家杀掉某数量的敌人或指定目标时,便执行Action. never-这个和always相反,意思是永不执行你所指定的Action.以上的Conditions,都是最常用到的,另外,你最好先弄懂location Layer的用法,才开始写Triggers.跟着来的部份是说明各Layer.各位要留意了.第叁部份:Layer说明甚麽是Layer呢?就是编辑画面中的Layer工具,它是用来设定地图的地形,单位的配置和location的设定. Terrain Layer:设定地形. Dooded Layer:放置一些特别的装饰用的建(例如树木). Unit Layer:放置或移去单位会用到. location Layer:设定一个区域,每个location都有一个自己的名字.需要配合Triggers一起用的.甚麽时候会用到这个Layer呢?以上图为例,我想人类玩家的部队进入这桥时,执行某些特别事件,例如电脑开始进攻或甚麽等等,就会用到. Fog of war Layer:用来设定玩家一开始便可看到的地形.以上的Layer使用方法很简单吧?下一部份会说明有关Action的设定,要留意了.第四部份:Action-行动说明 Action就是当乎合条件Conditions,所作出的行动,设定Action和设定Condition一样,同样可以设定多个动作.图中所见的move up和move down是用来设定各行动的先后次序.现在我替大家说明各Action的意思: center view-把画面移到你所指定的location. create Units-和字的意思一样,在指定的location中出现指定的单位. create Units with properties-和上面的一样,不过加入了出现单位的属性设定,例如生命值. defeat-任务失败. display text message-在画面上显示你所指定的文字,多用来提示玩者. draw-游戏以打和完结. give Units to Layer-在指定的location中,把某pLayer的部队送给某pLayer. kill Units-杀掉你所指定的单位. kill Units at location-在指定的location杀掉你所指定的单位. minimap ping-在小地图上指示方位. modify Unit energy-修改你所指定的单位的能量值. modify Unit hangar count-修改你所指定的单位的载弹量(圣甲). modify Unit hit point-修改你所指定的单位的生命值. modify Unit resource amount-修改你所指定的资源的数量. modify Unit shield points-修改你所指定的单位的护盾值. move location-移动你所指定的location到某单位上. move Units-把指定的单位从一个地点传送到另一个地点. order-命令指定的单位进行移动,巡逻或进攻到目的location. pause-一看就知道吧? pause timer-把计时器停下来. play wav-播放音效,要在任务中加入音效,你需先执行sound file manager. preserve Trigger-重复执行这个Trigger. remove Unit-把指定的单位从任务中消失(和kill不同). run ai script-设定电脑的ai,我会在下部份再加说明. run ai script at location-设定电脑的ai,我会在下部份再加说明. set alliance status-修改同盟状态. set deaths-修改某单位的死亡数字,看上去这Action用途不大,不过它是用来和Conditions的deaths一起用的. set doodad state-用来控制门的开关时会用到. set invincibility-把某指定单位变成无敌. set mission objectives-修改任务目的指示. set next scenario-必须和draw,defeat和victory一起用,完成任务自动跳到下一个任务. set resources-修改玩家所持有的资源数量. talking portrait-显示单位的对话画面. transmission-和上面的Action一起用,显示单位所说的话及播放声音. unpause-pause的相反. unpause timer-pause timer的相反. victory-以胜利来完成任务. wait-通常放在Action与Action之间,替它们加入时间差.注意,每1000milliseconds=1秒.基本上的你明白以上Action的意思,便可以开始制作任务地图了,下一部份我会说明ai的设定.第五部份:电脑AI设定即使你在地图配置了电脑单位,如果不替它们设定,它们都只会被动防守,不会作任何行动的.所以我们必须替它们设定行动.要设定ai,便要在电脑玩家建立Trigger,Conditions须用always,及Action使用run at script.现在说明各script的意思: run ai script: Send all Units on Strategic suicide Missions:命令电脑所有部队进行攻击,进攻方法较醒目,直至所有人类玩家死去. Send all Units on Random suicide Missions:和上面一样,但电脑进攻方法有点不同,只会狂攻. Switch Computer pLayer to Rescuable:使电玩变成Rescuable. run ai script at location:[Expansion] Custom Level:电脑会在你指定的location建立基地,扩张及进攻.(这script是假设电脑在游戏开始时是没有任何基地的)[Expansion] Campaign Easy:电脑会在你指定的location内的基地建设最基本的建和军队,也会有少形进攻.[Expansion] Campaign Medium:电脑会在你指定的location内的基地建设大部份的建和军队及进行研究,也会有中形进攻.[Expansion] Campaign Difficult:电脑会在你指定的location内的基地建设所有的建和军队及进行研究,也会有大形进攻. Campaign Area Town:电脑会在你指定的location内的基地进行防守,但不会进攻.[Expansion] Campaign Insane:这个我都不明白.... Value this Area Higher:电脑会视你所指定的location为重要地区,会派兵到该location防守. Set pLayer To Enemy/Ally:没有甚麽用途的script,因为Action的set alliance status可做到相同效果. Enter Closest Bunker:命令location中的部队进入碉堡,就像下图那样. Enter Transport:命令location中的部队进入运输机. Exit Transport:命令location中的部队离开运输机.注意:上面Enter closest bunker和enter transport, exit transport叁个script是可以用在人类玩家上的.配合以上的script,便可以开始制作会动的电脑了,下一部份我会说明任务简报的制作.第六部份:任务简报制作这是最后一个部份,教大家如何做任务简报.做任务简报时记紧要注意人物的说话时间与文字显示的配合.设定任务简报和设定Triggers不同,它只含briefing Action一个部份,所以原理很简单,你只不过在做人物出埸和说话的编排罢了.现在说明各briefing Action的意思:首先有一点要大家注意,briefing Action是可以给不同的玩家予不同的简报,在你按下new(在briefing视窗中)键时,便要设定给那个玩家看到特定的简报.不过当你设计一人玩的地图时,设定all pLayer就行了.但如果设计的是多人(合作)玩的地图时,便可能需要给予他们个别的任务简报,给他们不同的任务目的. MISSION OBJECTIVES:这个就是用来设定平时大家在简报画面的左下方的那个文字box中的文字,是用来说明任务目的(胜利条件). TEXT MESSAGE:设定在画面中间所显示的文字的内容和显示时间的长度,这个要配合人物出场设定. PLAY WAV:播放出指定的音效(例如人物说话,音效声等等),当然,要有人物说话的音效是不太可能做到的. SHOW PORTRAIT:这个很重要,显示人物的样子在画面上的格子中.就是设定人物出场哩. DISPLAY SPEAKING PORTRAIT:这个也很重要,令格子中的人物做出说话的动态,注意设定说话动作的长度和文字显示的时间要配合得自然才行!这个可要花不少时间... HIDE PORTRAIT:这个和SHOW PORTRAIT相反,移去在格子中的人物. TRANsmISSION:这个可以说是DISPLAY SPEAKING PORTRAIT,PLAY WAV和TEXT MESSAGE叁个指令的组合,你可利用TRANsmISSION做上这叁个工作(你可用这个指令直接做到人物说话和显示文字的动作). WAIT:暂停指令,在每个briefing Action之间有一个间距.注意时间的设定是用milliseconds作单位的,每1000milliseconds=1秒.如果你需要例子,你可看看starcraft游戏目录中的maps\\campaign,开启头的地图档,看看那些briefing Action,你会很易明白的.配合以上的script,便可简单的制作任务简报了.第五部份:电脑AI设定即使你在地图配置了电脑单位,如果不替它们设定,它们都只会被动防守,不会作任何行动的.所以我们必须替它们设定行动.要设定ai,便要在电脑玩家建立Trigger,Conditions须用always,及Action使用run at script.现在说明各script的意思: run ai script: Send all Units on Strategic suicide Missions:命令电脑所有部队进行攻击,进攻方法较醒目,直至所有人类玩家死去. Send all Units on Random suicide Missions:和上面一样,但电脑进攻方法有点不同,只会狂攻. Switch Computer pLayer to Rescuable:使电玩变成Rescuable. run ai script at location:[Expansion] Custom Level:电脑会在你指定的location建立基地,扩张及进攻.(这script是假设电脑在游戏开始时是没有任何基地的)[Expansion] Campaign Easy:电脑会在你指定的location内的基地建设最基本的建和军队,也会有少形进攻.[Expansion] Campaign Medium:电脑会在你指定的location内的基地建设大部份的建和军队及进行研究,也会有中形进攻.[Expansion] Campaign Difficult:电脑会在你指定的location内的基地建设所有的建和军队及进行研究,也会有大形进攻. Campaign Area Town:电脑会在你指定的location内的基地进行防守,但不会进攻.[Expansion] Campaign Insane:这个我都不明白.... Value this Area Higher:电脑会视你所指定的location为重要地区,会派兵到该location防守. Set pLayer To Enemy/Ally:没有甚麽用途的script,因为Action的set alliance status可做到相同效果. Enter Closest Bunker:命令location中的部队进入碉堡,就像下图那样. Enter Transport:命令location中的部队进入运输机. Exit Transport:命令location中的部队离开运输机.注意:上面Enter closest bunker和enter transport, exit transport叁个script是可以用在人类玩家上的.配合以上的script,便可以开始制作会动的电脑了,下一部份我会说明任务简报的制作.第六部份:任务简报制作这是最后一个部份,教大家如何做任务简报.做任务简报时记紧要注意人物的说话时间与文字显示的配合.设定任务简报和设定Triggers不同,它只含briefing Action一个部份,所以原理很简单,你只不过在做人物出埸和说话的编排罢了.现在说明各briefing Action的意思:首先有一点要大家注意,briefing Action是可以给不同的玩家予不同的简报,在你按下new(在briefing视窗中)键时,便要设定给那个玩家看到特定的简报.不过当你设计一人玩的地图时,设定all pLayer就行了.但如果设计的是多人(合作)玩的地图时,便可能需要给予他们个别的任务简报,给他们不同的任务目的. MISSION OBJECTIVES:这个就是用来设定平时大家在简报画面的左下方的那个文字box中的文字,是用来说明任务目的(胜利条件). TEXT MESSAGE:设定在画面中间所显示的文字的内容和显示时间的长度,这个要配合人物出场设定. PLAY WAV:播放出指定的音效(例如人物说话,音效声等等),当然,要有人物说话的音效是不太可能做到的. SHOW PORTRAIT:这个很重要,显示人物的样子在画面上的格子中.就是设定人物出场哩. DISPLAY SPEAKING PORTRAIT:这个也很重要,令格子中的人物做出说话的动态,注意设定说话动作的长度和文字显示的时间要配合得自然才行!这个可要花不少时间... HIDE PORTRAIT:这个和SHOW PORTRAIT相反,移去在格子中的人物. TRANsmISSION:这个可以说是DISPLAY SPEAKING PORTRAIT,PLAY WAV和TEXT MESSAGE叁个指令的组合,你可利用TRANsmISSION做上这叁个工作(你可用这个指令直接做到人物说话和显示文字的动作). WAIT:暂停指令,在每个briefing Action之间有一个间距.注意时间的设定是用milliseconds作单位的,每1000milliseconds=1秒.如果你需要例子,你可看看starcraft游戏目录中的maps\\campaign,开启头的地图档,看看那些briefing Action,你会很易明白的.配合以上的script,便可简单的制作任务简报了.

treeview控件(treeview控件怎么写添加节点)

二、TreeView控件的常用属性

1、Nodes属性返回对TreeView控件的Node对象的集合的引用。

object所在处代表一个对象表达式,其值是“应用于”列表中的一个对象。

说明:可以使用标准的集合方法(例如:Add和Remove方法)操作Node对象。可以按其索引或存储在Key属性中的唯一键来访问集合中的每个元素。

2、Style属性返回或设置图形类型(图象、文本、+/-号、直线)以及出现在 TreeView控件中每一Node对象上的文本的类型。

语法:object.Style[= number]

Style语法包含下面部分:部分描述 object对象表达式,其值是“应用于”列表中的一个对象。 number指定图形类型的整数,请参阅“设置值”中的描述。设置值

number的设置值是:设置值描述 0仅为文本。 1图象和文本。 2+/-号和文本。 3+/-号,图象和文本。 4直线和文本。 5直线,图象和文本。 6直线,+/-号和文本。 7(缺省)直线,+/-号,图象和文本。说明:若Style属性设置为包含直线的值,则LineStyle属性就确定了直线的外观。如果Style属性设置为不含直线的值,则LineStyle属性将被忽略。

3、Sorted属性返回或设置一值,此值确定Node对象的子节点是否按字母顺序排列;返回或设置一值,此值确定TreeView控件的根层节点是否按字母顺序排列。

语法:object.Sorted[= boolean]

Sorted属性语法包含下面部分:部分描述 object对象表达式,其值是“应用于”列表中的一个对象。 boolean布尔表达式,表示 Node对象是否已被排序如“设置值”中描述。 boolean的设置值是:设置值描述 True Node对象根据它们的 Text属性按字母顺序排列。其 Text属性由数字开始的 Node对象也作为字符串排序,第一个数字确定在排序中的初始位置,后面的数字确定以后的排序。 False Node对象不排序。说明:Sorted属性有两种用法,第一,在TreeView控件的根(顶)层排列Node对象,第二,对任何单个Node对象的立即子节点排序。

例如,下面的代码是对TreeView控件的根节点排序:

TreeView1.Sorted= True顶层Node对象被排序。

下面的例子表示创建Node对象时如何设置Sorted属性:

Set nodX= TreeView1.Nodes.Add(,,,Parent Node)

设置 Sorted属性为True仅对当前Nodes集合排序。在TreeView控件中添加新的Node对象时,必须再次设置 Sorted属性为 True,以便对添加的 Node对象排列。

三、怎样使用C#TreeView控件

1、打开Microsoft Visual Studio 2010,新建名字为【treeView】的程序。

2、在界面上添加【treeView】的控件,并调整为合适大小。

3、在程序界面上加入其它需要的控件:包括,

4、用于输入父节点个数和子节点个数的2个输入框;

5、生成节点的按钮、删除节点的按钮、清除所有节点的按钮;

6、编辑代码,输入【生成节点】的代码;

7、获取子节点和父节点的个数,使用循环添加父节点和子节点。

8、点击【treeview】控件,在属性中选择行为,从行为列表中选择【afterselect】双击,在代码编辑页面,添加节点被选择后的代码。

9、编辑输出日志的output方法的代码。

10、输入父节点和子节点数量分别为2和4,生成树结构。确认生成成功。

11、点击【清除所有节点】,可以看到所有节点都已经被清空。

12、输入父节点和子节点数量分别为3和3,生成树结构。确认生成成功。

13、点击【父节点3】的【子节点2】,点击【删除节点】。

14、可以看到该子节点已经被清空。再点击【父节点2】。

15、点击【删除节点】,可以看到该父节点已经被清空。

16、点击各个节点时,可以看到日志中输入对应的节点信息。

关于treeview控件的内容到此结束,希望对大家有所帮助。