以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  FT设计营养贴  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=70547)

--  作者:santde
--  发布时间:2015/6/24 10:14:00
--  FT设计营养贴

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

 

本 人先几个示范一下。

 

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


--  作者:Bin
--  发布时间:2015/6/24 10:20:00
--  
好帖,顶.图片点击可在新窗口打开查看

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

--  作者:santde
--  发布时间: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
--  发布时间: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
--  发布时间:2015/6/29 17:28:00
--  

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

 

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

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


--  作者:santde
--  发布时间: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
--  发布时间: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,这样你窗口复制后,你要改写的代码才会相当少。

 

 


--  作者:蓝才文百
--  发布时间:2016/11/13 15:32:00
--  
好!