以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教picturebox和pictureview的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=154014)

--  作者:sywmbk
--  发布时间:2020/9/1 10:23:00
--  请教picturebox和pictureview的问题

 首先是picturebox:
 我使用如下的代码,确定是不是某产品是不是有预览图,(预览图就是让上传一个CAD生成的图像文件 ),如果FTP 服务器上有该文件,就显示该文件,如果没有,就显示本地的文件。
 
经过试用,可以正确判断是否有预览文件。
 
Dim ftp As new FTPClient

Tables("表A").Position =0 \'移动到第一行,以免出错
ftp.Host=trim(Tables("表A").current("FTP服务器"))
ftp.Account = trim(Tables("表A").current("FTP账号"))
ftp.password = trim(Tables("表A").current("FTPpswd"))

If  ftp.DirExists("\\product\\" & trim(Tables("pdm_产品").current("总装图号")) & "\\")=False Then
    ftp.makedir ("\\product\\" & trim(Tables("pdm_产品").current("总装图号")) & "\\")
End If

ftp.RootDir="\\product\\" & trim(Tables("pdm_产品").current("总装图号"))

\'\'ftp.OpenManager()
\'Dim 有无预览图 As Boolean
If  ftp.fileExists(trim(Tables("pdm_产品").current("预览图")))=False Then
    有预览图 = False
Else
    有预览图 = True   
End If
 
\'===>>  至此,运行正确,下方的else也运行正确。

With e.Form.controls("预览图")   
    If 有预览图 Then
        .BindingField ="pdm_产品.预览图"
        .Remote = True
        .FTPClient=ftp
      
    Else
         .Remote = False
         .ImageFile="无预览图.jpg"
      
    End If
End With

现在请教,1、难道不能动态设置FTPClient吗?还是有别的办法?我需要动态更改FTP服务器的,测试过,在控件“预览图”(是个picturebox)中直接设置FTP服务器的信息,可以实现自动下载文件并显示预览文件。2、本地文件,如果设置"远程文件"为true,picturebox会自己下载该文件到工程路径的RemoteFiles文件夹下去。能不能更改到别的地方去?怎么改?

再请教PirctureViewer:
我想用同样的方法向PictureViewer设置FTPClient,结果是选择添加文件以后,它会自动把文件复制到项目的Attachments文件夹下去,我通过代码可以把文件上传到FTP服务器,保存数据库,也能更新数据库中相应字段的内容。

现在请教:1、如果本地的Attachments下有文件,它会显示文件内容;如果没有,它不会自动下载并显示;这个用代码怎么解决? 2、设置为远程文件以后,下载的文件能不能指定存放位置?

picturebox和pictureviewer的设置如附件。


图片点击可在新窗口打开查看此主题相关图片如下:pictureviewer.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:picturebox.png
图片点击可在新窗口打开查看


谢谢板主!



[此贴子已经被作者于2020/9/1 10:24:48编辑过]

--  作者:有点蓝
--  发布时间:2020/9/1 10:30:00
--  
1、对于picturebox,个人建议如果ftp有图,先下载到本机,再显示到picturebox。
2、pictureviewer必须绑定列使用,那么列属性的设置和pictureviewer的设置必须同步更改,保持一致
--  作者:sywmbk
--  发布时间:2020/9/1 10:40:00
--  
 感谢回复!

     是不是说,picturebox最好自己从服务器下载文件,然后设置picturebox的imagefile值?这样的话,也行吧,图片点击可在新窗口打开查看
     pictureviewer的,想自动下载并显示,是不是必须在属性中设置,不能动态设置FTPClient? 搞得我头痛好几天了,....还有,能不能更改本地文件夹? 好象使用FTP自己下载文件到Attachments文件夹下去就能显示出来,PictureViewer能不能自己下载?图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2020/9/1 10:49:00
--  
pictureviewer可以动态设置,但是要同时使用代码设置绑定列的属性。无法更改本地文件夹,ftp文件下载后默认在RemoteFiles,而不是Attachments,如果在Attachments,说明绑定列的列属性没有设置好
--  作者:sywmbk
--  发布时间:2020/9/1 12:12:00
--  
 折腾了很久,还是没有解决,似乎是一个BUG?

With e.Form.controls("预览图")

     Tables("表A").Position=0
    .FTPClient.host="192.168.11.252" \'trim(Tables("表A").current("FTP服务器"))      <--- 执行到这行后出错
    .FTPClient.Account = trim(Tables("表A").current("FTP账号"))
    .FTPClient.password = trim(Tables("表A").current("FTPpswd"))
    .FTPClient.RootDir="/product/" & trim(Tables("pdm_产品").current("总装图号")) & "/"
 

End With

试了一下,把服务器地址在pictureviewer中设定好,就可以正确运行,其他的用户帐号、口令、rootdir都可以更改且一切正常。 

出错提示: Object variable or With block variable not set

但是,我要动态修改这个服务器地址啊!我的服务器IP地址是变化的啊! 
版主,求救了,是不是我的版本有问题? 我用的是 2020.1.11 编译的版本!

[此贴子已经被作者于2020/9/1 13:31:11编辑过]

--  作者:有点蓝
--  发布时间:2020/9/1 13:35:00
--  
这样设置:http://www.foxtable.com/webhelp/topics/2696.htm
--  作者:sywmbk
--  发布时间:2020/9/1 14:06:00
--  
 终于搞定了,好大的坑。

总结如下:
1、pictureViewer绑定的数据表字段,要在属性中进行设置,不能动态绑定。(反正我一动态榜定,就出问题。)
2、PictureViewer的"远程文件"也要在属性中进行设置。

3、最重要的一点,动态设置FTPClient 的方式要如下:

Dim piv As WinForm.PictureViewer = e.Form.Controls("PictureViewer1")
Dim
ftp As New FTPClient
ftp
.host="192.168.128.143"
ftp
.Account = "yinsha"
ftp
.password = "128168909"
piv
.FTPclient = ftp


这就好了。

折腾了好久,终于搞定,希望下个版本能够改进。


感谢蓝版主的帮助。




--  作者:有点蓝
--  发布时间:2020/9/1 14:16:00
--  
1/2肯定是可以动态设置的,不会用而已,就和第3点一样,帮助有明确的用法的,只是你们不看,这种不是坑,只能说学习不到位
--  作者:sywmbk
--  发布时间:2020/9/1 15:01:00
--  
呵呵,图片点击可在新窗口打开查看,受VB的影响太大了造成的吧。好的,我有空再学学看怎么弄。现在已经可以应付眼下的要求了。

谢谢蓝版...