主题:  关于winctrls的问题,很费解

lilyxi

职务:普通成员
等级:1
金币:0.0
发贴:49
#12003/7/16 16:18:51
我在看袁海东的#Aw6.5经典范例教程#15章#范例73-——使用WINDOWS常用控制时,他获得当前用户单击的文件名时使用条件响应,其条件为filechange,其匹配操作为currentfilename:=wcgetpropertyvalue(lid,"text")
[附:lid:=wcdisplaycontrol(0,260,180,"filelistbox","filechange")]
运行后,在variables 窗口中currentfilename的值确实是当前文件名,但是我在主流程线上单独设了一个计算图标,里面的语句是m:=currentfilename,但是在variables 窗口中,m的值始终是0,想了很久,??????
我怎样才能得到当前文件名,并让它以变量的形式可以正确运用在任何地方呢?
先谢谢各位拉,帮我想想 :confused:

编辑历史:[这消息被Rock编辑过(编辑时间2003-07-16 16:51:37)]


dreamexpress_5d

职务:普通成员
等级:1
金币:10.0
发贴:2229
#22003/7/16 18:22:52
m:=currentfilename的位置是否放在了currentfilename被赋值成“当前文件名”之后了??估计你是放在了赋值前了吧?要不然如何还会是初始值0呢?

编辑历史:[这消息被dreamexpress编辑过(编辑时间2003-07-16 18:23:14)]


lilyxi

职务:普通成员
等级:1
金币:0.0
发贴:49
#32003/7/16 20:11:19
没有呀,我的确是把计算图标放在条件交互的后面呀,所以才会想不通呀



lilyxi

职务:普通成员
等级:1
金币:0.0
发贴:49
#42003/7/16 20:11:58
再帮我想想,谢拉



dreamexpress_5d

职务:普通成员
等级:1
金币:10.0
发贴:2229
#52003/7/16 20:16:54
条件交互有没有执行呢?因为你放在其后并不表示这个条件交互就已经执行了呀!你试着使它执行,另外你测试m:=currentfilename时最好用DISPLAY图标并将其设为更新变量。如果在variables 窗口中的话,你可以先点一下别的变量再去点你要测试的变量,这样才会使它更新,否则variables 窗口可能不会自动更新的。

编辑历史:[这消息被dreamexpress编辑过(编辑时间2003-07-16 20:25:25)]


dreamexpress_5d

职务:普通成员
等级:1
金币:10.0
发贴:2229
#62003/7/16 20:24:49
ERASED

编辑历史:[这消息被dreamexpress编辑过(编辑时间2003-07-16 22:24:00)]


dreamexpress_5d

职务:普通成员
等级:1
金币:10.0
发贴:2229
#72003/7/16 21:46:32
你给的计算图标(图中"m")和显示图标(图中"显示m")确实没有被重复执行,它只在程序运行时一开始执行了一次,文件变了,它们却不再被执行,所以M值不变。请看下面贴子的解释!

编辑历史:[这消息被dreamexpress编辑过(编辑时间2003-07-17 16:25:22)]


dreamexpress_5d

职务:普通成员
等级:1
金币:10.0
发贴:2229
#82003/7/16 22:00:49
;)
图片如下:

解释如下:
1、请注意FileChange的属性中是返回方式,那么它是返回到你最后显示的图标(即程序执行到“显示图像”图标时,你才交互的,这样它返回的话就是返回到这个图标,而不会按你的想象-----执行“m”"显示m"与“显示图像”三个图标)
2、它的过程是按我图示中“先红箭头,再蓝箭头”,这样就越过了中间的二个图标,也就是说你给m的赋值语句与显示变量m根本没有执行,m仍保留其初始值0。
3、解决办法:
将给m的赋值语句放到FileChange下的计算图标中,并将显示m也放入到“显示图像”图标中。这样只在这二个图标间来回,那m就会变了。

现在你明白了返回功能的意思了吧,不要乱用呀!

这样的解释清楚了吧?

顺便说一下,我原来以为将m的赋值语句放在“显示图像”图标的附属计算图标中也可以解决,结果不行,这样看来,附属计算图标与分离的计算图标(即计算图标在前,“显示图像”图标在后)没什么二样,只是附属的话看起来更紧密一些,实际上还是二个图标,并且显示图像”图标是“当前的”,返回也只返回到它,其前面的任何图标AW都是不理的。呵呵。还是试验出真知呀!多试多想才能有提高嘛!我也学到了不少东西,谢谢你了!

编辑历史:[这消息被dreamexpress编辑过(编辑时间2003-07-16 22:01:58)]
[这消息被dreamexpress编辑过(编辑时间2003-07-16 22:14:32)]


dreamexpress_5d

职务:普通成员
等级:1
金币:10.0
发贴:2229
#92003/7/16 22:19:04

编辑历史:[这消息被dreamexpress编辑过(编辑时间2003-07-16 22:20:16)]


dreamexpress_5d

职务:普通成员
等级:1
金币:10.0
发贴:2229
#102003/7/16 22:19:25
看懂了请在此回个贴子,有另外的想法也可再讨论。

共同研究共同提高。

你看的教材不错,很有深度,不象现在好多教材都水平不高,甚至编书的人也不是AW专家。
好好研究这本教材再加上你爱动脑子的习惯你一定会成为高手。



魔岩

职务:版主
等级:6
金币:34.0
发贴:4453
#112003/7/16 23:03:23
修改后的范例


相关文件:点这儿打开



lilyxi

职务:普通成员
等级:1
金币:0.0
发贴:49
#122003/7/17 11:33:57
我明白你的意思,但是还有几点问题:
1.其实,引发这个问题的想法是我想在主流程线上用计算图标的方式获得当前的文件名,如果使用你所说的方法,在这两个图标之间跳来跳去,可以解决当前问题,但是就不能达到我的目的了
2.我选择创建驱动器列表和监视操作作为起始和结束标志时,在变量窗口查看,为什么只有currentfolder一个发生变化呢?而且为什么选择驱动器后(比如说选d),下面文件的显示还停留在开始的样子(即一直是c盘内容);但是我重新开一个窗口,把这段程序粘贴过去,为什么运行又正常了呢?
3.在用控制面板跟踪wincrtls.a6p的时候,显示内容如下
1:CLC:创建驱动器列表框
1:CLC:创建文件夹列表框
1:CLC:创建组合框
1:CLC:创建文件夹列表
1:INT:监视操作 (enter)
1:CLC:m
1:DIS:显示m
1:DIS:显示图象
上面的显示应该是表示在m和显示m之前交互就得到了响应吧,而不是在它们之后,所以按我的理解,m应该得到赋值

我还刚起步,对AW还不熟悉,在理解错误的地方,还请多指教! :confused:



dreamexpress_5d

职务:普通成员
等级:1
金币:10.0
发贴:2229
#132003/7/17 16:00:17
一一对应地回答:

1、放在我说的位置难道不能达到你的要求吗??

我认为就这个程序而言只能放在FILECHANGE下面的计算图标内才能满足你的要求!在你其它想引用文件名的地方去引用M好了,不会错的呀!

(请原谅:我画的二个箭头被您认为是在这二个图标上跳来跳去,这真是我的错,我的表达方法看来是有问题。实际上AW并没有跳过去,只有GOTO语句与跳转图标才可以做到”跳来跳去“,呵呵)

当前文件名是通过那个条件FileChange的改变来读取的,所以你放在我说的位置的话,M就是你想要的文件名,你选什么文件M就会指示其文件名呀!



为什么非要”在主流程线上用计算图标的方式获得当前的文件名“?实际按你说的根本无法做到,放在主流程线上就会越过,根本不被重复执行。(注意我说重复而并不是说它们没被执行!实际上是执行了一次,见下面的说明!)

2、不太明白你的意思,请说的再明白点。


3、你做的跟踪只显示的是开始运行时的情况,它当然会执行M与显示M,M将显示为初始值。(M与显示M这二个图标只执行这一次,以后再不会被执行!)

不信请测试:你在跟踪的情况下再去选择别的目录与文件,你看看跟踪的东西变不变!那二个图标还能动否?死鱼二只,呵呵。

实际上跟踪窗口的内容一点没有变化!跟踪不是万能的。

编辑历史:[这消息被dreamexpress编辑过(编辑时间2003-07-17 16:06:14)]
[这消息被dreamexpress编辑过(编辑时间2003-07-17 16:16:35)]
[这消息被dreamexpress编辑过(编辑时间2003-07-17 16:18:52)]
[这消息被dreamexpress编辑过(编辑时间2003-07-17 16:20:05)]
[这消息被dreamexpress编辑过(编辑时间2003-07-17 16:21:45)]
[这消息被dreamexpress编辑过(编辑时间2003-07-17 16:32:57)]


lilyxi

职务:普通成员
等级:1
金币:0.0
发贴:49
#142003/7/17 17:17:11
谢谢大哥的耐心指点,第一个问题我懂拉,我就可以做我下面的工作了,呵呵,第二个问题我再自己仔细想想,不懂再问!看来,交互的响应分支我还得仔细琢磨才行,呵呵,茅塞顿开的感觉真好!



dreamexpress_5d

职务:普通成员
等级:1
金币:10.0
发贴:2229
#152003/7/20 11:38:57
顶一下!继续讨论