Foxtable(狐表)用户栏目专家坐堂 → FT设计营养贴


  共有1921人关注过本帖树形打印复制链接

主题:FT设计营养贴

帅哥哟,离线,有人找我吗?
santde
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:274 积分:2293 威望:0 精华:0 注册:2015/6/14 18:33:00
FT设计营养贴  发帖心情 Post By:2015/6/24 10:14:00 [只看该作者]

FT设计过程中有许多关键小技巧,特开此贴,希望所有玩家都来这里用简短的说明记录下FT开发的方方面面,方便新人吸收营养,本贴希望大家来留言,但请不要无味的灌水。

 

本 人先几个示范一下。

 

FT设计过程中:本表,与副本表的概念一定要分清。本表可直接引用,副本表则要用窗口名称_LABLE1之类来引用。


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/6/24 10:20:00 [只看该作者]

好帖,顶.图片点击可在新窗口打开查看

绝大部分这些东西帮助都有提醒的

 回到顶部
帅哥哟,离线,有人找我吗?
santde
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:274 积分:2293 威望:0 精华:0 注册:2015/6/14 18:33:00
  发帖心情 Post By:2015/6/24 10:34:00 [只看该作者]

记录窗口相关操作:

Dim tr As WinForm.RecordGrid = e.Form.Controls("RecordGrid1")
tr.Table =  Tables("齿轮供应清单") '指定绑定表
tr.Build()
Dim g As object = e.Form.Controls("RecordGrid1").BaseControl
g.Rows(3).Height = 70
g.Rows(6).Height = 70

 

实现功能,任意窗口显示记录窗口

可调整个别字段行高度,从而实现个别的行自动显示多行文字,以完全显示列内容。


 回到顶部
帅哥哟,离线,有人找我吗?
santde
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:274 积分:2293 威望:0 精华:0 注册:2015/6/14 18:33:00
  发帖心情 Post By:2015/6/24 10:38:00 [只看该作者]

Tables("设备资料表").AllowEdit = True
Tables("设备资料表").Current.Locked=False  ,该设置导致HasChanges值状态变化,这个值改变不应影响用户保存判断。如果用户没有实质修改就不用提示保存,
DataTables("设备资料表").AcceptChanges  ,马上改变状态

 

Dim tbl As Table = e.Form.Controls("Table1").Table
If tbl.DataTable.HasChanges Then
    Dim Result As DialogResult
    Result = MessageBox.Show("您还有数据没有保存,是否确认保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        tbl.save
    Else
        tbl.DataTable.RejectChanges
    End If   
End If

 

 

HasChanges 使用需配合 AcceptChanges,使用想怎么样就怎么样设计。

 

希望大家都来总结发布一些小的经验之谈。

 

[此贴子已经被作者于2015/6/24 10:45:52编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
santde
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:274 积分:2293 威望:0 精华:0 注册:2015/6/14 18:33:00
  发帖心情 Post By:2015/6/29 17:28:00 [只看该作者]

e.Form.Controls("Table1").Select
Tables("客户供应商单选窗口_Table1").Select

 

这两句代码的目的是一致的,即将客户供应商单选窗口_Table1 表改变为当前表。第二句代码,单独执行是正常的,但放在窗口加载事件中就是实现不了效果。

要在窗口加载中实现效果 就必须用第一句e.Form.Controls("Table1").Select


 回到顶部
帅哥哟,离线,有人找我吗?
santde
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:274 积分:2293 威望:0 精华:0 注册:2015/6/14 18:33:00
  发帖心情 Post By:2015/6/29 17:31:00 [只看该作者]

Dim tb As Table =CurrentTable
If tb.Rows.Count=0 Then
Return
End If
tb.Position=0

 

……

 

代码 编号过程中多用CurrentTable 替代当前具体的表名称,这样就能写出通用代码。尤其是一个窗口里有多个表,尤其方便。


 回到顶部
帅哥哟,离线,有人找我吗?
santde
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:274 积分:2293 威望:0 精华:0 注册:2015/6/14 18:33:00
  发帖心情 Post By:2015/6/29 17:35:00 [只看该作者]

非常精练的模糊查找功能:

Dim filter As String = "1=2"
For Each dc As Col In  CurrentTable.Cols
    filter &= " or convert(" & dc.Name & ",'System.String') like '%" & e.Form.Controls("模糊查找").Text & "%'"
Next
Dim tb As Table = CurrentTable
Dim dtp As WinForm.DateTimePicker = e.Form.Controls("DateTimePicker1")
'msgbox(tb.Filter)
If tb.Filter.length>0 Then
tb.Filter = "计划日期 = '"& dtp.value & "'And (" & filter & ")"
Else
tb.Filter = filter
End If

 

同样尽量使用CurrentTable,这样你窗口复制后,你要改写的代码才会相当少。

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:394 积分:2456 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/11/13 15:32:00 [只看该作者]

好!

 回到顶部