| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1791 人关注过本帖, 1 人收藏
标题:做表?
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
是的,就是创建了一个类C_Form的对象实例并启动消息处理机制而已。

授人以渔,不授人以鱼。
2012-09-13 23:16
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 41楼 TonyDeng
一个READ EVENTS就相当于windows编程下的

     while (GetMessage (&msg, NULL, 0, 0))
     {
          TranslateMessage (&msg) ;
          DispatchMessage (&msg) ;
     }
     return msg.wParam ;
是不是?还是更多?


梅尚程荀
马谭杨奚







                                                       
2012-09-13 23:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 42楼 有容就大
相当于API中的MainWndProc()函数

授人以渔,不授人以鱼。
2012-09-13 23:26
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
ADD OBJECT Text1   AS TextBox
AS后面的东西可以是蓝色也可以是黑色(在VFP9.0下的显示) 有什么不一样吗 ?
noinit with visible = .F. 的noinit貌似可以省略啊
 WITH ThisForm.Button1后 .xxx都是Button1的属性吧?

梅尚程荀
马谭杨奚







                                                       
2012-09-13 23:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用有容就大在2012-9-13 23:33:14的发言:

ADD OBJECT Text1   AS TextBox
AS后面的东西可以是蓝色也可以是黑色(在VFP9.0下的显示) 有什么不一样吗 ?
noinit with visible = .F. 的noinit貌似可以省略啊
 WITH ThisForm.Button1后 .xxx都是Button1的属性吧?

TextBox是VFP内置的控件类名,也可以是自己定义的类,这个时候就不是蓝色。AS是从哪个类继承出代码的意思,未必一定是内置的类,比如我这里就写了两个自定义类(两个DEEFINE CLASS就是两个类)。

NOINIT是创建这个对象的时候,先不要执行Init事件中的代码,由程序员在适当的时候启动Init,这是因为在Init触发时,代码中需要使用的某些东西可能还未出现,需要推迟一定的时间。你看代码可以看到,我是在Button1被Click时才启动这个对象的Init代码,或者是在Text1中的光标离开时启动。

是的,那都是Button1中的属性或事件、方法。这种语法是VB和VFP、VBA等语言都有的,恰恰C++/C#没有。

[ 本帖最后由 TonyDeng 于 2012-9-13 23:43 编辑 ]

授人以渔,不授人以鱼。
2012-09-13 23:38
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:3 
高手的确是高手。博大精深。。。。


[ 本帖最后由 wjp456789 于 2012-9-13 23:49 编辑 ]

我是来向高手学习的!
2012-09-13 23:48
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 45楼 TonyDeng
哦 这样啊

看完了整个程序 有些具体的函数还不太了解 自己去查资料应该没问题

就是想问下 你自己定义了两个类C_Form和C_ShowForm 在C_Form中的List1又是C_ShowForm的一个对象。

但是  那么整个程序是怎么运行的呢?
是不是
frmMain.Show
READ EVENTS

就能运行一个类的对象?


[ 本帖最后由 有容就大 于 2012-9-14 00:08 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-09-13 23:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
CreateObject()是从类定义中创建对象实例(与C++/C#中new相当),对象创建后,是不可见的,此时用.Show(窗体是.Show,其他控件是.Visible=.T.)使它可见,然后就转入Read Events等待消息。程序的运行,就靠消息驱动。C_Form类代码中,置入了该窗体包含了什么控件,每个控件又应该有什么动作,都在这里设定……不断往下延伸,程序就这样不断扩展。

面向对象程序的运行,与面向过程的不同,假如初始化时该执行的都执行过之后,程序就停下来等待消息了,那是一个死循环,不断搜索有没有消息传过来,这点你在API的学习中已经了解到。所以,这里编程的关键,是把握程序应该响应什么事件,在什么事件触发时,执行什么代码。最关键的,是你在设计时是基本上无法预测动作和事件的先后次序的,任何可能的次序都可能有,因为你面对的是活生生的人。比如你在Windows系统中操作一个程序,程序的设计者无法预测你会不会在程序进行繁忙计算的时候去点击关闭按钮,如果用户真的这样做了,你应该怎么办?有什么应对措施?这些就是你编程时需要考虑的。面向过程的编程相对简单,在计算过程中完全不影响按键,直到忙完才处理,但Windows系统不同,它是抢先式系统,系统级事件的响应权比应用程序高,你点击了窗口的关闭按钮,Windows必定首先接收到这个消息,它会就此关闭你的程序,而不是你是否理会的问题了。考虑一下,如果你打开了数据库,在还未写入数据刷新的情况下被用户关闭了程序,那就丢失数据了。须知,在Windows下,不是应用程序在执行代码,而是Windows在执行应用程序中的代码!

[ 本帖最后由 TonyDeng 于 2012-9-14 00:22 编辑 ]

授人以渔,不授人以鱼。
2012-09-14 00:09
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 48楼 TonyDeng
为什么你一直都使用procedure而不使用function?

梅尚程荀
马谭杨奚







                                                       
2012-09-14 00:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不需要返回东西的时候就不用function呀。过程和函数本质上没有区别的,其实过程也可以返回值。

授人以渔,不授人以鱼。
2012-09-14 00:20
快速回复:做表?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024353 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved