主题:查找程序bug
地址:http://www.winfarsoft.com/winfar_richcelldll.rar
给分:找到bug都每人至少50分,多的100分,立即开贴给分!
信誉:请看http://community.csdn.net/Expert/topic/3942/3942197.xml?temp=.4402582和http://community.csdn.net/Expert/topic/3942/3942197.xml?temp=.7157709!
其它:特别欢迎使用繁体中文和英文版操作系统的朋友进行测试!最好将winfar_richcell.dll控件加入到自己的程序中进行测试,用我自己开发的测试程序可能难于发现bug了。
最后:Up者同样有分!
地址:http://www.winfarsoft.com/winfar_richcelldll.rar
给分:找到bug都每人至少50分,多的100分,立即开贴给分!
信誉:请看http://community.csdn.net/Expert/topic/3942/3942197.xml?temp=.4402582和http://community.csdn.net/Expert/topic/3942/3942197.xml?temp=.7157709!
其它:特别欢迎使用繁体中文和英文版操作系统的朋友进行测试!最好将winfar_richcell.dll控件加入到自己的程序中进行测试,用我自己开发的测试程序可能难于发现bug了。
最后:Up者同样有分!
重启应用程序,打开该文档,提示输入口令时,输入不正确的口令或点击"取消"三次以后,文档却被显示出来,这是错误的.
2.Winfar_DataBook1.AutoDrawFlag = False
For I = 0 To Winfar_DataBook1.DataPage.Sheet.Rows - 1
For J = 0 To Winfar_DataBook1.DataPage.Sheet.Cols - 1
Winfar_DataBook1.DataPage.Sheet.Text(I, J) = (I + 1) * (J + 1)
Next J
Next I
Winfar_DataBook1.AutoDrawFlag = True
调用上面的代码后,如果不调用Winfar_DataBook1的其它方法则表格中的数据不会被刷新,应该在AutoDrawFlag变为true的时候由控件自动调用Refresh方法,不应该由用户调用.
3.在AutoDrawFlag为false的时候对控件进行修改列宽,松开鼠标后没有进行刷新,这是正确的,但进行第二次修改列宽的时候,第一次的修改就会被看到,这是不应该的,应该在用户调用Refresh方法时才刷新.
==>因为控件加了混淆,所以不能直接从控件箱中加载控件,不过可以这样:在资源管理器的引用中加载Winfar_Richcell.Dll控件,然后将下面的代码复制到窗体的Load事件中就可以了
Dim Book1 As New Winfarsoft.Richcell.Winfar_DataBook
Me.Controls.Add(Book1)
Book1.Dock = DockStyle.Fill
Book1.Show()2、以前用你自己提供的Winfar_Report.exe测试,从Access数据库中生成表页时,有时候会出现固定行和其它单元格的列宽不一致的情况(错位)。
==>确实是Bug,已解决之!3、功能的确强大,如果美观上多几种风格就更完美了。还有,大数据的处理优化了吗???会不会刚Execl一样,有大数据的BUG?我在使用EXECL的时候,我本来有几万条数据,EXECL给我的结果被是我实际数据的二倍
==>没有大数据的Bug,但数据量大了以后保存文件会很大,打开文件时可能会受点影响
4、速度有点慢。不知道是怎么回事。拖动时有显示的延滞感。机器配置:ibm t22/win2003/256M内存/vs.2003+sqlserver+office2003
==>我的机器配制为:Dell8600(P4 1.6,512),运行很流畅!
5、一个关于刷新的问题.在拖动一行的下边缘修改行高时,如果在该行的上边线上或上边线之上放下,则虚线没有消失.同样,在更改列宽时也是同样的问题。
==>确实是Bug,已解决之!6、点击一个单元格后,将鼠标放在该单元格上方,按下Shift并双击该单击格,此时该行的第一列中的单元格得到输入焦点,但此时单击其它行时,其它行无法被选中,只有按下Esc之后才能解除这种情况.
==>因为按下Shift健后,选择单元时会整行选择,此时输入焦点单元为所选单元的第一行第一列单元。7、在Book有多页的时候,假如当前选中第一页(第一行,第一列),并将滚动条下拉到一定位置(看不到选中的单元格),此时点击第二页,滚动条并没有还原到正确位置.
==>确实是Bug,已解决之!8、应该允许从右向左,或从下向上地选择单元格,这在Excel中是允许的.
==>当前版本不允许,如果要增加这个功能,要改动的地方太多,暂时没有修改计划9、单击一个单元格后,在另一个单元格上右击,但另一个单元格并没有被选中,这是不合理的.右击时应该先选中鼠标下面的单元格,之后再弹出相应的快捷菜单.
==>当前版本不允许,如果要增加这个功能,要改动的地方太多,暂时没有修改计划10、在页面中加入了标签,并将其选中后,右击它不应该弹出右击菜单,且此时单元格中不应该存在当前选中的单元格.
==>不是Bug,但确实有点不合理,还没解决!
11、当一列被合并单元格后,仍然能够向该列中的任意单击格中输入内容,而且输入完内容后,该单元格就被为独立的单元格了.
==>合并列是同一列中相邻单元如果单元文本相同则自动合并,如果单元文本不相同则当然会自动分割了!
12、在用格式刷复制格式的时候没有把单元格的对齐方式复制过来.
==>因为当新建一个文档时,所有单元默认的对齐方式是数字、日期型向右对齐,字符向左对齐,你在用格式刷时源单元和目标单元对齐格式都是默认对齐方式,当源单元为数字或日期时其对齐方式是向右对齐,而目标单元可能是字符,所以就是用了格式刷好象没有什么变化。
13、在单元格中默认对齐方式是文字左对齐,数字右对齐,但当输入为111ttt时,却被认为是数字.
==>要判断单元文本是数字还是字符,用IsNumeric函数据进行判断时,如果单元文本不是数字时运行效率非常低,所以我只判断了第一个字符!
14、在复制标签对象后,粘贴,但是填充设置并没有被复制过来.
==>确实是Bug,已解决之!15、在页面风格模式中,输入框与单元格无法对齐
==>确实是Bug,已解决之!16、在页面风格模式下,无法将标签拖到与第一行单元格平齐.
==>页面模式下,第一行是表头栏,它和细节栏不是同一个对象了,所有不可能对齐。17、同时选中两个单元格,其中一个是左对齐,一个是右对齐,在设置它们的竖直对齐方式时,右边的单元格的水平对齐方式变为左边单元格的水平对齐方式了.
==>所有的功能都针对全部被选取的单元的。18、导出到xls出错
==>目前还没有导出Excel文件的功能,因为这涉及到Excel文件格式的问题,而我对Excel文件格式还不太熟。19、打开你的系统--->打开数据库access数据库..(2000的)--->里面有一些表,选择汇总向导---->交叉表汇总.-->选择一个被分组字段(其中一个表的字段(时间日期型))--->选择后按下一步--->被选择日期字段(也是刚才那个字段(时间日期型))--->下一步--->再按一步,就会出错..
==>我试了多次,一次没有发现这个问题,不知道是不是数据库字段类型的问题?20、当程序打开一个被损坏的文件后,会显示"文件格式不正确或文件已经损坏",之后,第一列的标题会被选中,这是不正确的.不应该修改当前选中的单元格.
==>确实是Bug,已解决之!
==>确实是Bug,已解决之!
22、在一个单元格中输入数据之后,选中该单元格,并选择"单元文本只读"后,仍然可以用右击菜单,或键盘方式进行修改文本(Ctrl+V,Del都可用).
==>确实是Bug,已解决之!23、新建一个文档,转换到页面风格,对页面中的第一行单元格进行设置后,回到混合风格模式,则第一行的文本变成了表格中的列标题(这可能是对的),但是上面的上卡片的标题并没有改变,这是一个BUG.
==>不是Bug,但不合理,已解决之!
24、新建一个文档,转换到页面风格格式后,将垂直滚动条拉到最下方,并选中最后一行的某一个单元格,按下键盘方向"DOWN"后,会显示第二页的内容,但是垂直滚动条没有回到最上面,因此无法看到第一行的单元格,这是错误的,应该把垂直滚动条置于最上方.
==>不是Bug,但不合理,还没有解决25、新建一个文档,设置为"页面风格格式"后,第一行的前四个单元格为"t1","t2","t3","t4",之后回到"表格模式",此时前四列的标题为"t1","t2","t3","t4",后面则是"E","F","G",...到最后"O",选中第一列,单击"删除表列"后,剩下的列为"t2","t3","t4","D","E",..."N",选择"撤销操作"后,得到的列标题为"A","t2","t3","t4","E","F","G",...."O",第一列不应该是"A",应该是"t1".
==>不是Bug,但不合理,已解决之!26、新建一个文档,在某一个单元格中输入一些XML的非法文本(如",;:<>?&%")后,另存为XML文件,下次打开的时候会提示"文件格式不正确或文件已损坏",这是错误的.在保存文件的时候就应该判断是否有XML文件中不允许的字符出现.
==>我没有发现这个现象
27、为文档设置的密码在生成的文件中过于明显,在WFR文件的第二行以明文显示,在XML文件中则以<password>存储明文,至少应该加密明文,或者以其Hashcode码存于隐蔽的地方,我认为这很重要.
==>还没解决
28、关于口令方面的,当设置一个文档的口令为空时,并不表示用户要取消这个密码保护,因为口令设置并没有提示:设置为空则取消密码保护.当打开一个密码为空的文档时,还是应该提示输入密码.
==>我认为如果设置为空就意味着取消口令,因为空口令没有任何意义呀!
29、弹出的输入密码及消息对话框不是处于应用程序最前方的,而是处于系统最前方,当其它应用程序处于成为当前应用程序时,该对话框会覆盖其它的应用程序.
==>已解决
30、在一个单元格中输入100000000000000000000000000000000000000000000000000000000000000000后,选中该单元格,并选择中文式金额,则显示为"壹万",明显是错误的.
==>已解决,解决的方法就是判断数字是否大于某个数,如果大于则返回“Error”31、在单元格中输入100000后,点击"千分符数字"后,显示的结果为"100,000.00",这是不对的,因为原始数据是整数,而现在却变为了实数表现形式,万一该字段表示为"人数",则是不合适的.
==>这个应该不是问题,如果是我的话只对某些必要的单元设置等分数字32、在一个单元格中输入一个数字比如"1000",选中该单元格后,选中"英文式金额",或选中"百分符数字"或选中"千分位数字"后,连续点击"减少小数位",则当小数位的个数小于0时会使显示出现异常情况.
==>已解决
33、在生成的XML文件中应该有DTD设置,这样如果用户手工修改过后文件可以先通过XMLValidatingReader进行正规性检查,和和效性检查,之后再进行你自己的数据格式的合法性验证.
==>好主意,但还没实现34、不知你是否允许用户输入中文的密码,不过我向密码输入窗口中输入中文也正确,如果是这样,密码输入窗口应该允许切换到中文输入法模式,但是我一直无法切换到中文模式.如果不允许出现中文密码,则在用户输入时应该进行提示.
==>没解决35、新建一个文档,输入几行几列的数据后,另存为一个XML格式的文件.之后新建一个文档,导入这个XML文件后,没有提示错误,却把错误的数据都导了进来,这是不对的,应该选判断这个文件是否可以导入,之后再进行导入操作.
==>不太好判断,因为有可能是其它程序生成的XML格式文件。36、对标签对象的任何操作,都无法进行"撤销操作".
==>是的,对对象的操作目前还没有撤销功能37、当同时选择多个标签对象时,进行"大小相同","高度相同","宽度相同"等操作时,会以第一个被选中的标签为基准,最好从外观上能看出以哪个对象为基准.
==>多用几次就好了
38、打开数据库一个表之后,在"数据库"->"编辑"->"删除记录"之后,选择"回滚记录"后表格没有立即刷新.
==>该功能已被取消
39、如果数据库有帐号,密码设置,则也会在生成的文档中以明文的方式看到,这是不应该的.
==>是,有道理,可能目前在加密方面的知识还很贫乏40、新建一个文档,在一个单元格中输入含有空格的字符串,并且导出文件时选择以空格分隔,那么下一次导入后,数据则会被放入到两个单元格中.
==>是的,没有办法解决。
新建一个文档,选中某个单元格后,单击工具按鈕”合并列”,或菜单中的”DataPage”->”DataColumn”->”Merge”时产生的效果不对.
2.在英文系统中,在退出系统显示”Are you sure want to quit?”应该为”Are you sure to quit?”
3.在设置密码时显示信息为”Setting password of the Page”,我认为是”Set the password for the Page”或”Set the password of the Page”,同理其它的显示信息为”Setting …”.
4.在英文系统中,关于对话框中的应该是”Programmed By …”
5.若当前系统为英文系统,在一个单元格中输入200,并单击”金”则显示没有改变.
6.在英文系统中,“金”后面的那个按钮的提示不应该是”AmericaMoney”,因为它表示当前系统的货币表示方法,并不只针对美国.
1、http://community.csdn.net/Expert/topic/3976/3976961.xml?temp=.8308527
2、http://community.csdn.net/Expert/topic/3964/3964529.xml?temp=.6136286
3、http://community.csdn.net/Expert/topic/3943/3943060.xml?temp=.9568903
4、http://community.csdn.net/Expert/topic/3948/3948843.xml?temp=.7892267
5、http://community.csdn.net/Expert/topic/3979/3979405.xml?temp=.1194269
6、http://community.csdn.net/Expert/topic/3976/3976758.xml?temp=.3790705别人给我解决了问题,我就给他分,这有什么不对呢?
static void Main()
{
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
Application.Run(new Form1());
}
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
表示将当前线程的区域设置改为指定的区域,这样Winfar_DataBook对象创建时会认为当前系统是英文系统,就会显示"英文信息".
对了,在英文环境中,你程序的"关于"对话框的标题还是中文,应该为"About".
2.新建一个文档,单击工具栏按钮"删除行"数次,直到只有15行,但是此时垂直滚动条的MaxValue仍然是50,并不是现有的行数.
我自认为没错误的地方居然也被找出这么多来,真是佩服!
Dim I As Integer
Dim S_HaveDotFlag As Boolean
Dim S_HaveMinusFlag As Boolean
Dim S_Length As Integer
NumericString = NumericString.Trim
S_Length = NumericString.Length
For I = 0 To S_Length - 1
Select Case NumericString.Substring(I, 1)
Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
Exit Select
Case "."
If S_HaveDotFlag = True Then
Return False
End If
S_HaveDotFlag = True
Case "-"
If I <> 0 Then
Return False
End If
If S_HaveMinusFlag = True Then
Return False
End If
S_HaveMinusFlag = True
Case Else
Return False
End Select
Next
Return True
End Function
Private Function IsDate(ByVal DateString As String) As Boolean
Dim I As Integer
Dim S_Year As Integer
Dim S_Month As Integer
Dim S_Day As Integer
Dim S_Length As Integer
Dim S_Numeric() As String
DateString = DateString.Trim
S_Length = DateString.Length
If S_Length > 18 Then
Return False
End If
For I = 0 To S_Length - 1
Select Case DateString.Substring(I, 1)
Case "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-"
Exit Select
Case Else
Return False
End Select
Next
S_Numeric = DateString.Split("-")
If S_Numeric.GetUpperBound(0) <> 2 Then
Return False
End If
'
S_Year = Val(S_Numeric(0))
If S_Year < 1900 OrElse S_Year > 2999 Then
Return False
End If
'
S_Month = Val(S_Numeric(1))
If S_Month < 1 OrElse S_Month > 12 Then
Return False
End If
'
S_Day = Val(S_Numeric(2))
If S_Day < 0 Then
Return False
End If
Select Case S_Month
Case 1, 3, 5, 7, 8, 10, 12
If S_Day > 31 Then
Return False
End If
Case 2
If S_Day > 26 Then
Return False
End If
Case 4, 6, 9, 11
If S_Day > 30 Then
Return False
End If
End Select
Return True
End Function
2.接上面的问题,请在记事本输入"999999999999999999999999"后复制字符串到剪贴板,并且粘贴(右击文本框选"粘贴",而不是用Ctrl+V)则字符串仍然能够输入到程序中,这是错误的.
2.选择"预览报表"后显示出"打印报表"窗口,点击第五个工具栏按钮后显示的对话框也允许输入"999999999999999999999",没有任何限制.
3.选择"预览报表"后显示出"打印报表"窗口,该窗口中的工具栏按钮都没有Tooltip提示信息.
4.新建一个文档后,Ctrl+A选择所有的单元格,选择"隐藏表列","隐藏表行",此时所有单元格都被隐藏,此时垂直,水平滚动条都没有消失(这是错误的)."追加表行"加一行,"追加表列"加一列后,垂直,水平滚动条都消失了(这是对的),此时连续"ctrl+Z"后所有行和列都显示回来,滚动条没有显示(这是错误的).
老兄,我现找问题也不容易了,请包涵.