以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]窗口中PictureViewer的使用 4月11号 16楼有新问题,例子在9楼 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=148428) |
-- 作者:huangfanzi -- 发布时间:2020/4/7 22:30:00 -- [求助]窗口中PictureViewer的使用 4月11号 16楼有新问题,例子在9楼 就差最后一步了,老师帮我看下 我做了个例子,窗口中有一个table 一个PictureViewer,一个TextBox 有一个新增按钮 还有一个上传附件按钮 新增按钮代码: Dim tb As WinForm.TextBox = e.Form.Controls("TextBox1") Dim dr As DataRow = _dt上下游公司名录.AddNew dr("公司") = tb.Value dr.Save Dim t As Table = Tables(e.Form.Name & "_Table1") t.Fill("S elect * From {上下游公司名录} Where 公司 = \'" & tb.Value & "\'","ShcsErpSql",False) t.AutoSizeCols() Dim dt As DataTable = t.DataTable dt.DataCols("附件").ExtendType = ExtendTypeEnum.Images Dim pv As WinForm.PictureViewer = e.Form.Controls("PictureViewer1") pv.BindingField = t.Name & ".附件" t.AllowEdit = True 上传附件按钮代码: Dim dlg As New openFileDialog \'定义一个新的SaveFileDialog dlg.Filter= "图形文件|*.bmp;*.jpg;*.gif;*.png" \'设置筛选器 dlg.MultiSelect = True If dlg.showDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim ftp1 As new ftpclient ftp1.host="" ftp1.port = "" ftp1.Account = "" ftp1.password = "" Dim tb As WinForm.TextBox = e.Form.Controls("TextBox1") Dim dr As DataRow dr = DataTables("上下游公司名录").SQLFind("公司 = \'" & tb.Value & "\'") If dr IsNot Nothing Then \'如果找到的话 Dim ls = dr.Lines("附件") For Each f As String In dlg.FileNames Dim file = "/上下游公司名录附件/" & dr("公司") & "/" & filesys.GetName(f) If ftp1.DirExists("/上下游公司名录附件/" & dr("公司")) = False Then ftp1.MakeDir("/上下游公司名录附件/" & dr("公司")) End If Dim Result As DialogResult If ftp1.FileExists(file) Then Result = MessageBox.Show("文件已经存在,是否覆盖?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) End If If result = Nothing OrElse result = DialogResult.Yes Then If ftp1.Upload(f,file,True) = True Then If ls.contains(file) = False Then ls.add(file) End If Else MessageBox.Show( f & "上传失败" ,"提示" ,MessageBoxButtons.OK,MessageBoxIcon.Question) End If End If Next dr.lines("附件") = ls dr.Save ftp1.Close End If End If 上传附件是成功的,我远程到服务器看过,但如何让这个PictureViewer立即能看到上传的图片呢? [此贴子已经被作者于2020/4/11 15:55:53编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/4/7 22:45:00 -- Dim pv As WinForm.PictureViewer = e.Form.Controls("PictureViewer1") If dr IsNot Nothing Then \'如果找到的话 Dim ls = dr.Lines("附件") For Each f As String In dlg.FileNames Dim file = "/上下游公司名录附件/" & dr("公司") & "/" & filesys.GetName(f) If ftp1.DirExists("/上下游公司名录附件/" & dr("公司")) = False Then ftp1.MakeDir("/上下游公司名录附件/" & dr("公司")) End If Dim Result As DialogResult If ftp1.FileExists(file) Then Result = MessageBox.Show("文件已经存在,是否覆盖?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) End If If result = Nothing OrElse result = DialogResult.Yes Then If ftp1.Upload(f,file,True) = True Then If ls.contains(file) = False Then ls.add(file) pv.AddFile(file) End If Else MessageBox.Show( f & "上传失败" ,"提示" ,MessageBoxButtons.OK,MessageBoxIcon.Question) End If End If Next |
-- 作者:huangfanzi -- 发布时间:2020/4/7 23:30:00 -- 蓝老师,我发现一个问题,不知是不是BUG 用以上的代码加入图片后,然后用PictureViewer的删除按钮删除某个图片,假定为A图,再添加A图,此时A图不会显示在PictureViewer中,通过远程桌面到服务器,此时A图还是再一次的被上传上去了,也就是说删除某个文件名的图片后再上传此同命图片,PictureViewer中不再显示此图片,此外,查看窗口中table表中的这条记录,附件列中没有写入内容,首次添加文件时这个table表中附件就会有内容,在PictureViewer中删除图片时附件列中也会 同步删除内容 下面是删除的代码: 窗口中table1的BeforeDeleteFile事件 If e.DataCol.name = "附件" Then Dim Result As DialogResult Result = MessageBox.Show("确定要删除文件【" & e.FileName & "】?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If Result = DialogResult.Yes Then \'e.DataCol.FTPClient.DeleteFile(e.FileName) \'如果是用表格上的窗口管理器,则用此行代码,下面的不需要,因为设置扩展属性时设定了FTP的相关信息 Dim ftp1 As new ftpclient ftp1.host="" ftp1.port = "" ftp1.Account = "" ftp1.password = "" ftp1.RootDir = "/上下游公司名录附件" \'设置根目录 Dim tb As WinForm.TextBox = e.Form.Controls("TextBox1") Dim dr As DataRow dr = DataTables("上下游公司名录维护新增模式窗口_Table1").SQLFind("公司 = \'" & tb.Value & "\'") If dr IsNot Nothing Then \'如果找到的话 ftp1.DeleteFile(e.FileName) Dim fls As List(of String) fls = ftp1.GetFileList(dr("公司")) \'返回此FTP目录下的文件数 If fls.Count = 0 Then ftp1.DeleteDir(dr("公司"),True) \'直接删除此目录及下面的所有文件 End If dr.Save End If Else e.Cancel = True End If End If [此贴子已经被作者于2020/4/8 7:54:04编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/4/8 8:37:00 -- 再上传同命图片的时候是不是没有往PictureViewer里添加? |
-- 作者:huangfanzi -- 发布时间:2020/4/8 8:57:00 -- 再上传还是用的原来的上传代码,这么说吧,窗口中有个上传按钮,上传后,在PictureViewer中点删除,然后再点上传按钮上传同名文件,在服务器上实际是上传了,可在窗口中的table中,附件列没有再增加内容 另外,我发现本地也会存在上传的文件,在项目的一个目录中,这个能不能关掉啊,不要本地也保存了,没找到相关代码
[此贴子已经被作者于2020/4/8 8:59:53编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/4/8 9:48:00 -- 上传实例测试 |
-- 作者:huangfanzi -- 发布时间:2020/4/8 9:56:00 -- 晚上,我把项目文件发你看下,至于本地必须有文件,哪么请问,我如何在PictureViewer中点删除,本地的文件能同步删除吗,现在是删除不了的,没找到删除的代码,其实我想问的就是,控件中的自动复制附件与自动删除附件代码如何写 |
-- 作者:有点蓝 -- 发布时间:2020/4/8 9:58:00 -- BeforeDeleteFile事件到项目里的RemoteFiles删除同名文件即可 |
-- 作者:huangfanzi -- 发布时间:2020/4/8 11:06:00 -- 蓝老师,我做了个模板,不过FT是2018年的版本,我上班的电脑上装的,不过一样可以用 打开项目后,有个窗口1,第一步点“新增”按钮后会有一条记录,公司名我默认是 公司A 然后在PictureViewer中点增加,假定加入图片A,然后删除此图片A,再增加图片A,这时你可以看到二个情况 一是PictureViewer中没有增加图片A 二是窗口中的table表上的附件列也没有相应的写入内容 以下内容是专门发给有点蓝浏览 |
-- 作者:有点蓝 -- 发布时间:2020/4/8 11:35:00 -- BeforeAddFile事件 …… dr.lines("附件") = ls e.DataRow.lines("附件") = ls e.DataTable.AcceptChanges dr.Save ftp1.Close End If End If 新增按钮 …… Dim pv As WinForm.PictureViewer = e.Form.Controls("PictureViewer1") Dim ftp As New FTPClient ftp.host="xxx" ftp.port = "xxx" ftp.Account = "xxx" ftp.password = "xxx" pv.FTPclient = ftp pv.BindingField = t.Name & ".附件" t.AllowEdit = True |