Foxtable(狐表)用户栏目专家坐堂 → [求助]窗口中PictureViewer的使用 4月11号 16楼有新问题,例子在9楼


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

主题:[求助]窗口中PictureViewer的使用 4月11号 16楼有新问题,例子在9楼

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]窗口中PictureViewer的使用 4月11号 16楼有新问题,例子在9楼  发帖心情 Post By:2020/4/7 22:30:00 [显示全部帖子]

就差最后一步了,老师帮我看下
我做了个例子,窗口中有一个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编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/4/8 8:57:00 [显示全部帖子]

再上传还是用的原来的上传代码,这么说吧,窗口中有个上传按钮,上传后,在PictureViewer中点删除,然后再点上传按钮上传同名文件,在服务器上实际是上传了,可在窗口中的table中,附件列没有再增加内容
另外,我发现本地也会存在上传的文件,在项目的一个目录中,这个能不能关掉啊,不要本地也保存了,没找到相关代码
[此贴子已经被作者于2020/4/8 8:59:53编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/4/8 9:56:00 [显示全部帖子]

晚上,我把项目文件发你看下,至于本地必须有文件,哪么请问,我如何在PictureViewer中点删除,本地的文件能同步删除吗,现在是删除不了的,没找到删除的代码,其实我想问的就是,控件中的自动复制附件与自动删除附件代码如何写

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/4/8 11:06:00 [显示全部帖子]

蓝老师,我做了个模板,不过FT是2018年的版本,我上班的电脑上装的,不过一样可以用
打开项目后,有个窗口1,第一步点“新增”按钮后会有一条记录,公司名我默认是 公司A 
然后在PictureViewer中点增加,假定加入图片A,然后删除此图片A,再增加图片A,这时你可以看到二个情况
一是PictureViewer中没有增加图片A
二是窗口中的table表上的附件列也没有相应的写入内容


以下内容是专门发给有点蓝浏览




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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/4/8 12:33:00 [显示全部帖子]

蓝老师,试了下代码,发现 新增按钮 中代码并不需要更改,只要把BeforeAddFile事件改了就行,执行结果是正确的
请问,您在“新增”加入的代码是目的是什么
另外,在BeforeAddFile事件增加的二行代码,原理是什么。
我准备把这个例子发到论坛上来让新手学习下,我要对每一行代码都加上注释

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/4/8 14:48:00 [显示全部帖子]

可我在BeforeAddFile 事件中已经有了相关代码:
    Dim pv As WinForm.PictureViewer = e.Form.Controls("PictureViewer1")
    pv.FTPclient = ftp1
    pv.ManagerCommand.Visible = False '管理按钮
    pv.UpdateCommand.Visible = False '更新按钮
    pv.ConnectCommand.Visible = False '重连按钮

这样一来,是不是在窗口的“新增”中加入对FTP信息的指定是不是多余了,或者说,如果在“新增”中加入了对FTP的指定,在BeforeAddFile事件中就不用再写一次pv.FTPclient = ftp1了,是这么个情况吗?

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/4/8 16:12:00 [显示全部帖子]

对,是这个道理

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/4/11 15:54:00 [显示全部帖子]

蓝老师,这个例子中又发现个问题
触发的过程如下:
新增图片A与B
删除图片A
再新增图片C
此时,PictureViewer中,会有图片A,B,C,但是A是无法预览状态,当然,此时删除A就会报错,因为服务器上实际已经没有A了

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


加好友 发短信
等级:五尾狐 帖子:1106 积分:8977 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2020/4/11 16:06:00 [显示全部帖子]

我有观察窗口中的table表,附件列是去掉相关名称的
但在增加图片C时,A又被自动增加上到附件列
[此贴子已经被作者于2020/4/11 16:07:14编辑过]

 回到顶部
总数 15 1 2 下一页