| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2156 人关注过本帖
标题:【求助】vfp 如何获取当前表格焦点字段名?多谢TonyDeng版主!!!This.Col ...
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:10 
一般情况下列标题就是字段名
否则就要获取列的控件源
GRID1.INIT代码
程序代码:
LC=[]
FOR I=1 TO THISFORM.GRID1.COLUMNCOUNT
    LC=LC+[]+TRANSFORM(I)+[ 列字段名为:]+ALLTRIM(THISFORM.GRID1.COLUMNS(I).CONTROLSOURCE)+IIF(I<THISFORM.GRID1.COLUMNCOUNT,CHR(13)+CHR(10),[])
ENDFOR
MESSAGEBOX(LC)
收到的鲜花
  • YTZN2014-03-10 17:33 送鲜花  3朵  

坚守VFP最后的阵地
2014-03-10 11:18
YTZN
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2012-10-7
收藏
得分:0 
回复 10楼 TonyDeng
多谢TonyDeng版
我慢慢消化

我是这个表单编好了以后,可复制到其它6个表单用,每个表单的表不一样,但需操作的字段一样。
我是刚想到试验着这麽做,不知道放在表格的beforerowcolchange event里边对不对?
如果在焦点单元格双击或右键触发事件的集中式编程应该怎么处理?您的“PROCEDURE Grid.BeforeRowColChange"是触发调用过程文件?

2014-03-10 11:31
YTZN
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2012-10-7
收藏
得分:0 
回复 12楼 YTZN
我的列标题就是字段名
2014-03-10 11:33
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
正路是寫一個表單類,用它派生6個表單實例,代碼是完全一樣的,不需要複製出6份表單再逐個去改。

當你在表單設計器中寫BeforeRowColChange代碼的時候,其實就是在寫Procedure代碼,我上面給你的就是這個事件的VFP幫助中的文字。

授人以渔,不授人以鱼。
2014-03-10 11:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
順便借這個帖補充那個漫談課題。爲什麽要用類呢?用你的例子,你需要6個類似的表單,所以想到了複製,但問題是你現在不能一下子把表單都設計好了,它往後需要修改(這是必然的,可能是需求變動,也可能發現了更好的做法),假定你僅僅要改動一處,那麽就得在6個表單重複修改6次,這好辦,因爲位置和改動内容都容易記憶,但如果有多處改動呢?你還記得那麽多?能保證沒遺漏?更要命的是,一旦需要改動算法,那麽就等於重寫6個表單!如果不止6個實例呢?面向對象程序設計,就是針對這種“類似”情況而來的,所謂“類”,就是一個整體行爲,祇是個別細節有變動,故先設計好整體,再在細節微調,比如Form就是一個設計好的類,而你每寫一個具體的表單,就是在微調,有很多東西已經省了,即使改算法,改了類,所有的實例對象都跟著改,那是自動的。我們說面向對象編程,是指這種設計思想,而不是學會使用各種用面向對象設計出來的控件,那叫使用面向對象工具,而不是在做面向對象編程。面向對象編程,最關鍵的地方就是假定未知,不要去假定你的Grid會有多少個Column,不要去假定每個Column對應庫表的哪一個字段,不要假定每個Header的Caption都必定是字段名,不要假定Column所綁定的數據源必定是字段,甚至不要假定Grid祇從一個表中獲取數據……等等等等(其實VFP的Grid設計已經替我們考慮了這些東西,它具備這種靈活的功能,我們應從這個控件的設計中學會它的思想),對這些不能假定,必須掌握如何從未知獲取已知的手段。太多人的程序中大量出現這種假定了,凡是大量充斥著硬編碼、具體字段名、具體字符串之類的即是。我發過的程序代碼,很少硬編碼的,每一份代碼實際上都可以適用於不同的數據表而不需獲極少需要改動(之所以很多人說看不懂我的代碼,恐怕正是因爲總不出現預期的硬編碼的緣故),Grid一旦變換數據庫源,就需要重新書寫各種Header.Caption(不惜重複勞動)、靠中文字段名來減少Caption書寫、靠表字段結構的順序來控制Grid.Column的顯示次序等等橋段,都不是面向對象編程所鼓勵的。

[ 本帖最后由 TonyDeng 于 2014-3-10 13:30 编辑 ]
收到的鲜花
  • YTZN2014-03-10 17:34 送鲜花  3朵  

授人以渔,不授人以鱼。
2014-03-10 13:01
YTZN
Rank: 1
等 级:新手上路
帖 子:57
专家分:0
注 册:2012-10-7
收藏
得分:0 
回复 15楼 TonyDeng
说的太好了,正是我努力的方向,我现在水平太有限,还需不断提高。多谢TonyDeng版
2014-03-10 13:20
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用YTZN在2014-3-10 11:31:39的发言:

多谢TonyDeng版
我慢慢消化

我是这个表单编好了以后,可复制到其它6个表单用,每个表单的表不一样,但需操作的字段一样。
我是刚想到试验着这麽做,不知道放在表格的beforerowcolchange event里边对不对?
如果在焦点单元格双击或右键触发事件的集中式编程应该怎么处理?您的“PROCEDURE Grid.BeforeRowColChange"是触发调用过程文件?
一个表单就能解决问题,写个表格控件方法就行了,6个不同的表放在组合框中供选择。

坚守VFP最后的阵地
2014-03-10 22:44
noya2012
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-7-12
收藏
得分:0 
谢谢tony提供 .VFP是很容易使用的查询设计工具。比很多专门软件都强。毕竟是编程级别的。几分钟就可以搭建几千行查询。内置组合过滤和字符判断。这是那些目前的SQL前端软件都没有的。而且同样重复的工作,要重复手工写代码简直是浪费生命。微软放弃它,是因为它太快太简单了。已经没有发展空间。
2014-07-12 19:07
noya2012
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-7-12
收藏
得分:0 
vfp已经在内部为大家做好各种处理和查找数据的必要工作。只需要图形界面搭建就可以。而且很多类里面的变量直接就拿来用。和各种SQL数据库后端共同结合非常简单应手。
而且VFP的面向对象比VB的面向对象还要简单。。。。。。各种命名都是很有规律,各种写法都宽松。不像写少了一个标点也会死人了的其他那些。只有节省时间综合了前人工作的软件才是进化的软件,那些越来越复杂麻烦概念化的平台,变着法子推销而已!
2014-07-12 19:14
快速回复:【求助】vfp 如何获取当前表格焦点字段名?多谢TonyDeng版主!!!Thi ...
数据加载中...
 
   



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

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