前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >68行代码实现VFP treeview的增删查改,玩树玩得转,你还不怕不能上天

68行代码实现VFP treeview的增删查改,玩树玩得转,你还不怕不能上天

作者头像
加菲猫的VFP
发布于 2023-10-23 09:08:21
发布于 2023-10-23 09:08:21
46100
代码可运行
举报
文章被收录于专栏:加菲猫的VFP加菲猫的VFP
运行总次数:0
代码可运行

今天继续种树,先来一级树增删查改

新建框架表单,拉入框架控件,做成下面这个样子。

控件设置同上一篇种树文。

打开祺佑代码生成器,生成一个DAL_TREEDATA1类。

保存到DAL文件夹。

表单的LOAD事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DO setenv 

LOCAL oDBSQLHelper,nRow,oca

oca=NEWOBJECT("Dal_treedata1","Dal_treedata1.prg")
IF !oca.cursorfill(.t.)
  AERROR(laerror)
  Messagebox(laerror(2),0+16,Thisform.Caption)
  RETURN .f.
ENDIF 
thisform.Oca=oca

添加按钮事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Local nFid
Select (Thisform.Oca.Alias)
Append Blank
Thisform.Opcode=1

Thisform.Refresh()
Thisform.txtmc.SetFocus()

编辑按钮事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Thisform.Oca.edit()
Thisform.Opcode=2
thisform.Refresh()

删除按钮事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yn=  Messagebox("你要删除当前记录吗?",4+32,thisform.Caption)
IF yn<>6
  RETURN 
ENDIF 
LOCAL lnid ,lctable
Select (Thisform.Oca.Alias)

lnid=id
lctable=Thisform.Oca.Alias
*--如果当前类别有子类别,无法删除
SELECT * FROM &lctable WHERE fid=lnid INTO ARRAY tmparry
IF _tally>0
    Messagebox("当前类别存在子类别,无法删除!",0+16,thisform.Caption)
  Return
ENDIF 


If !Thisform.Oca.Delete()
  Messagebox(Thisform.Oca.msg,0+16,thisform.Caption)
  Return
Endif

Select (Thisform.Oca.Alias)
If !Bof()
  Skip -1
Else
  If !Eof()
    Skip
  Endif
Endif

thisform.qiyu_treeview1.removenode(lnid)
thisform.Refresh()

保存按钮事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Local lnId,lcText,lnFid
Select (Thisform.Oca.Alias)

If !Thisform.Oca.Save()  && 保存指针会变
  Messagebox(Thisform.Oca.msg,0+16,Thisform.Caption)
  Return
Endif

lcText=ALLTRIM(name)
lnId=id


IF thisform.Opcode==1
   Thisform.qiyu_treeview1.addnode(lnId,lcText)       
ELSE  
  Thisform.qiyu_treeview1.updatenode(lnId,lcText)   &&第三个参数为当前的父KEY,一般依据当前临时表的Fkey字段
ENDIF 

Thisform.Opcode=0
Thisform.Refresh()

撤消按钮事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Thisform.oca.Undo()
Select (Thisform.Oca.Alias)
Thisform.Opcode=0
Thisform.Refresh()

无限级树的增删查改

1. 界面设计

多了一个按钮,一个叫同级添加,一个叫下级添加。

2.照样生成DAL_treedata类

3 LOAD事件写法同上,注意类名的变化。

4 同级添加按钮事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Local nFid
Select (Thisform.Oca.Alias)
nfid=fid
Append Blank
Replace  fid With nfid
Thisform.Opcode=1

Thisform.Refresh()
Thisform.txtmc.SetFocus()

5 下级添加按钮事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Local nFid
Select (Thisform.Oca.Alias)
nfid=id
Append Blank
Replace fid With nfid
Thisform.Opcode=1

Thisform.Refresh()
Thisform.txtmc.SetFocus()

添加按钮,只是多了一个FID,父KEY的处理

6 编辑按钮事件同一级树

7 删除按钮事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yn=  Messagebox("你要删除当前记录吗?",4+32,thisform.Caption)
IF yn<>6
  RETURN 
ENDIF 
LOCAL lnid ,lctable
Select (Thisform.Oca.Alias)

lnid=id
lctable=Thisform.Oca.Alias
*--如果当前类别有子类别,无法删除
SELECT * FROM &lctable WHERE fid=lnid INTO ARRAY tmparry
IF _tally>0
    Messagebox("当前类别存在子类别,无法删除!",0+16,thisform.Caption)
  Return
ENDIF 


If !Thisform.Oca.Delete()
  Messagebox(Thisform.Oca.msg,0+16,thisform.Caption)
  Return
Endif

Select (Thisform.Oca.Alias)
If !Bof()
  Skip -1
Else
  If !Eof()
    Skip
  Endif
Endif

thisform.qiyu_treeview1.removenode(lnid)
thisform.Refresh()

多判断一个有子树不让删除

8 保存按钮事件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Local lnId,lcText,lnFid
Select (Thisform.Oca.Alias)

If !Thisform.Oca.Save()  && 保存指针会变
  Messagebox(Thisform.Oca.msg,0+16,Thisform.Caption)
  Return
Endif

lcText=ALLTRIM(name)
lnId=id
lnFid=fid

IF thisform.Opcode==1
   Thisform.qiyu_treeview1.addnode(lnId,lcText,lnFid)       
ELSE  
  Thisform.qiyu_treeview1.updatenode(lnId,lcText,lnFid)   &&第三个参数为当前的父KEY,一般依据当前临时表的Fkey字段
ENDIF 

Thisform.Opcode=0
Thisform.Refresh()
thisform.qiyu_combobox2.RowSource=.null.
Select * From treedata  Into Cursor treedata2
thisform.qiyu_combobox2.RowSource="treedata2.name,id"

多了一个组合框的数据来源处理,FID的处理。

9 撤消按钮同一级树处理

这个代码就是这么少,快看看,代码是不是跟你平常想的不一样。框架不需要你去写任何的控件开闭,直接自响应浏览,新增,编辑,删除状态。

少写代码,快速上线。

猫猫的心里话

加菲猫的VFP|狐友会社群接收投稿啦

加菲猫的VFP,用VFP不局限VFP,用VFP混合一切。无论是VFP,还是JS,还是C,只要能混合起来,都可以发表。

商业模式,销售技巧、需求规划、产品设计的知识通通可以发表。

暂定千字50元红包,,优秀的文章红包更大,一经发表,红包到手。

如何帮助使用VFP的人?

用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。无论如何请不要嘲笑他们说帮助都不看,这么简单的问题都不会,嘲笑别人不行,而无法提出建设性答案,是很low的。

我们无论工作需要,还是有自己的软件,都是是需要真正的知识,如何让更多人学习真正的VFP知识呢,只需要点赞,在看,能转发朋友圈就更好了。

加菲猫的vfp倡导用"VFP极简混合开发,少写代码、快速出活,用VFP,但不局限于VFP,各种语言混合开发"

我已经带领一百多名会员成功掌到VFP的黑科技,进入了移动互联网时代,接下来我们要进入物联网领域。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
从泰勒级数说傅里叶级数
泰勒中值定理:若函数f(x)在含有x0的某个开区间内具有直到(n+1)阶的导数,那么对于任一x∈(a,b),有:
巴山学长
2020/06/17
2.8K0
傅里叶变换
傅里叶级数实际实际是对周期函数和半周期函数的按基地函数去1、cosx、cos2x、...cosnx、sinx、sin2x、sinnx的展开式。如果定义在(-∞,∞)区间的非周期函数还能进行傅里叶展开吗?傅里叶计算扩展到连续变换的情况后就是傅里叶积分。
巴山学长
2020/09/03
9260
数值计算——MATLAB数值积分原理详讲
显然这是一个简单的数值积分问题,但是过冷水会给大家分享简单问题吗?其必有玄妙,且听我道来。
巴山学长
2020/03/25
4K0
数值计算——MATLAB数值积分原理详讲
数值优化—复杂函数重积分计算方法实例演示
既然要的是数值解,为何还使用符号解?能坐车进城,就决不骑摩托车。复杂函数用数值积分函数quad(f(x),xmin,xmax)完美求解,perfect!不巧的是疑难杂症都让过冷水碰上了,在原问题的基础上需要解决这么个问题:
巴山学长
2023/03/17
9550
数值优化—复杂函数重积分计算方法实例演示
数值优化—三种复杂函数数值积分方法实例演示
在0.1~1 区间上的值,初步看该方程的积分项比较复杂不易给出原函数。用MATLAB也无法直接求出原函数。自然而然就想该函数如何在不求积分项原函数的情况下计算出积分项的具体值。在抓耳挠腮之际想起了公众号的一篇推文:蒙特卡洛法应用。可以直接求函数指定区间的面积,相当于求积分。蒙特卡洛算法求面积示意图如下:
巴山学长
2020/02/17
2.8K1
数值优化—三种复杂函数数值积分方法实例演示
统计回归拟合方程参数
一直以来过冷水都有给大家分享图像拟合的知识、从泰勒级数说傅里叶级数、Matlab多项式拟合初探,本期过冷水给大家讲讲统计回归做拟合。
巴山学长
2020/09/29
4790
统计回归拟合方程参数
相对角距离方法的Matlab实现
之前过冷水在推文中三维空间分布函数绘制实例中和大家分享了对分布函数g(r)的程序实现方法。只要你认真学习专研总有新的发现,这不过冷水就接触到了一种叫做相对角距离的方法,应用该方法可以得到一个完整的峰值函数,了解液态结构的应该知道称之为第一配位球层对分布函数。图像如下:
巴山学长
2021/05/31
7300
相对角距离方法的Matlab实现
带你用matlab轻松搞定微分方程
之前过冷水有和大家分享热传导方程求解的方法,其本质上是微分方程的问题。考虑大多数读者对微分方程求解方法比较陌生,所以过冷水本期简单普及一下微分方程的求解问题。
巴山学长
2020/11/03
1.6K0
带你用matlab轻松搞定微分方程
大数定理的小陷阱
过冷水最近这段时间在做积分的学习工作,之前连续分享了好几期的 蒙特卡洛法应用;你所不知道的Monte Carlo形式;重要性抽样方法实例分享 。求积分的问题会不懂?可是就是在下图求积分过程中翻了车;
巴山学长
2020/12/29
4090
大数定理的小陷阱
谐振子的动力学学运动
在力学的学习过程中经典分析力学是最基本的入门知识,过冷水之前和大家一起学习了两个小车通过弹簧链接起来的做来回摆动运动的运动轨迹学习。推文中直接给了一个微分方程组,然后解出微分方程组就得到了小车的演化轨迹。本期过冷水从零开始构建一个微分方程组,而不是单纯解微分方程。
巴山学长
2021/05/31
6720
谐振子的动力学学运动
统计分布讲解
随机现象中,变量的取值是不确定的,称之为随机变量。描述随机变量取值概率的函数称为概率分布。对于随机变量,通常主要关心它的两个主要数字特征:数学期望用于描述随机变量的平均值,方差用于描述随机变量分布的差异程度,方差的算术平方根称为均方差。另外协方差和相关系数用于描述两个变量的线性关联程度。
巴山学长
2020/09/22
7200
信号与系统实验五 信号的傅里叶分析与频谱
1.参考例5-1,实现教材p125,例3-4中傅里叶级数表达式(p126第二行)。分别采用前4、40、400项,画出周期矩形脉冲信号的近似图。
timerring
2022/07/20
1.2K0
信号与系统实验五 信号的傅里叶分析与频谱
封闭区域多边面积计算算法设计
过冷水最近遇到了这么一个问题,有一系列点组成了如上图所示的封闭图形,该如何求面积?
巴山学长
2021/03/15
1.2K0
latex()、ploy2sym()、symsum()的妙用
过冷水在进行学习过程中总是遇到一些看似无关紧要的问题,做起来却很繁琐,比如给你一个函数:
巴山学长
2020/07/22
6290
latex()、ploy2sym()、symsum()的妙用
matlab绘图(六)-图像光滑&数据取点
当然之前中过冷水多次有跟大家提多项式拟合、傅里叶级数拟合、高斯级数拟合,实际更加常见的操作是用matlab中图像拟合工具箱cftool灵活进行函数拟合。
巴山学长
2023/03/15
1K0
matlab绘图(六)-图像光滑&数据取点
matlab绘图(五)
过冷水有段时间没有和大家分享MATLAB的编程知识了,皆因懒。本期给大家分享一点关于绘图的小技巧,经常有朋友让我帮忙绘图,感觉在我这里是小事,在他们那就是很特别的技能,有时候朋友的特殊绘制要求,也让我犯难。现将自己平时的绘图经验做个小结,主要是关于matlab绘图的一些注意点——公式输入、多轴绘图、交点标记、箭头绘制,通过实际案例给大家讲讲具体的使用。
巴山学长
2020/02/17
1.2K0
matlab绘图(五)
基于奇怪的羊返航,聊plot图像镜像
之前过冷水有推出matlab动态绘图推文深受读者关注,细心的读者会发现渡河动态图有许多瑕疵,过冷水深知这一点,会逐步提高推文水平的,本期我们一起看一个将近有点熟视无睹的问题。
巴山学长
2020/03/25
4540
三维空间分布函数绘制实例
这是过冷水之前在重要性抽样方法实例分享中的图片。这张图片的实际含义是以坐标原点为参考点,距离原点距离x处的小球个数f(x)分布图。这个问题理解起来好容易,就是统计距离和小球个数的关系,but!实际问题是过冷水要处理这样的问题:
巴山学长
2021/01/27
8210
三维空间分布函数绘制实例
非线性方程组求解迭代算法&图像寻初始值讲解
前段时间过冷水在学习中遇到了一个解非线性方程组的问题,遇到非线性方程组的的问题过冷水果断一如既往、毫不犹豫的 fsolve()、feval()函数走起,直到有人问我溯本求源的问题——非线性方程组求解算法。
巴山学长
2020/10/23
1.4K0
非线性方程组求解迭代算法&图像寻初始值讲解
傅里叶级数-三种表达方式(双三角,余弦,复指数)
傅里叶级数-系数求解,昨天的文章好像还挺多人看的,今天是第二篇,补全几种不同的表达形式。
云深无际
2024/08/20
7900
傅里叶级数-三种表达方式(双三角,余弦,复指数)
推荐阅读
相关推荐
从泰勒级数说傅里叶级数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档