在SQL里有个pic字段,类型是image,我想要实现的功能是,在delphi里使用一个控件,运行时,当点击这个控件就会跳出图片上传的窗口,然后浏览到要上传的图片,确定后,图片会自动上传到程序文件夹里的image文件夹里,这个路径是动态的,也就是说不管程序弄到哪里,图片都会上传到这个文件夹里。请问应该使用什么控件,如何实现????

解决方案 »

  1.   

    图片会自动上传到程序文件夹里的image文件夹里,这个路径是动态的..
    ????到底是上传到数据库里的pic字段,还是某个叫image的文件夹里????
      

  2.   

    保存导数据库你可以使用TBlobField保存文件你可以在你的应用程序里建一个文件夹,然后动态的获得你的应用程序路径,这样就可以确定你的文件保存位置
      

  3.   


    var
     MS: TFileStream;
    begin
     if OpenDialog1.Execute then
     begin
      MS:=TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
     Table1.Append; // 在数据库中添加一条记录
     TBlobField(Table1.FieldbyName('image')).LoadFromStream(MS);
     Table1.Post; // 将所作的更新写入数据库
    end;
    保存到文件就只是文件COPY了
      

  4.   

    1.动态文件夹保存是不合理的,指定一个固定的文件夹保存文件夹会好一些,不过还是帮你实现了.
    2.实现如下:
      1):窗体中用一个DBImage控件来显示图片,当然它的DataField属性设为pic,同时也设好它的DataSource属性.
      2):添加一个OpenPictureDialog控件,用来选要裁入的图片之用的,其Filter属性设为:JPEG Image File (*.jpg)|*.jpg,而DefaultExt属性设为jpg.
      3):在程序的单元中加入 uses Jpeg (即引用Jpeg).
    3.主要代码:{裁入图片}
    var
      imagejpg:TJPEGImage; //jpg图片
      MyStm:TMemoryStream;
      Pic2:tbitmap;
    begin
     {裁入图片}
     if ADOQuery1.State in [dsEdit, dsInsert] then begin
      MyStm:=TMemoryStream.Create;
      Pic2:=tbitmap.Create;
      imagejpg:=Tjpegimage.Create;
      if OpenPictureDialog1.Execute  then
      begin
        imagejpg.LoadFromFile(OpenPictureDialog1.FileName);
        Pic2.Assign(imagejpg);
        pic2.SaveToStream(MyStm);
        MyStm.Position:=0;
        TBlobField(adoquery1.FieldByName('pic')).LoadFromStream(MyStm);
      end;
       MyStm.Free;
       imagejpg.free;
     end;
    end;
    [code=Delphi(Pascal)]
    {保存的按钮}
    //加一个SaveDialog按件作为你动态保存文夹的位置,其Filter属性设为:JPEG Image File (*.jpg)|*.jpg,而DefaultExt属性设为jpg.
     if not adoquery1.FieldByName('XP').IsNull then
      if  SaveDialog1.Execute then
      DBImage1.Picture.SaveToFile(SaveDialog1.FileName);
     adoquery1.post;
    [/code]
      

  5.   

    修正一下:{保存的按钮}
    //加一个SaveDialog按件作为你动态保存文夹的位置,其Filter属性设为:JPEG Image File (*.jpg)|*.jpg,而DefaultExt属性设为jpg.
     if not adoquery1.FieldByName('pic').IsNull then
      if  SaveDialog1.Execute then
      DBImage1.Picture.SaveToFile(SaveDialog1.FileName);
     adoquery1.post;
      

  6.   

    4楼的老大,麻烦你说的详细一点,能不能给出具体的代码,还有,那个控件在什么地方,我找不到啊?
    5楼的老大,你的代码不需要控件的吗?不能用啊,而且,delphi里没有TFileStream;这个类型啊?
      

  7.   

    注意这句:{必须是按下新增或修改按钮的情况下才让你选择图片作裁入的}
    if ADOQuery1.State in [dsEdit, dsInsert] then begin
      

  8.   

    ddddddddddddddddddddddddddddddddddddddddd