procedure TWRYMain.PostImg(const query1:tquery;const str1:string;const DlgOpPic:TOpenPictureDialog;const imgpic:timage);
begin
  if query1.FieldByName('图像子短').AsVariant <> null then //没有
  begin
    if not (query1.State in [dsEdit,dsInsert]) then   query1.Edit;
    (query1.FieldByName('图像子短') as TBlobField).LoadFromFile(DlgOpPic.FileName);
    query1.Post;
  end;
end;
—————————————————————————————————
MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
             毁誉由人,望天上云卷云舒,聚散任风。';
if Not Assigned(I) then
  I := TI.Create(Nil);
I.Maxim := MaximStr;
I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
I.Desire := '加不加分随你';
—————————————————————————————————
    

解决方案 »

  1.   

    注意:如果你用的是ADO,那么记得将as TBlobField改为:as TADOBlobField—————————————————————————————————
    MaximStr := '宠辱不惊,看庭前花开花落,去留无意;
                 毁誉由人,望天上云卷云舒,聚散任风。';
    if Not Assigned(I) then
      I := TI.Create(Nil);
    I.Maxim := MaximStr;
    I.Explain := '假如上述代码中出现“OA”、“3D”等字样,改为“=”或者去掉';
    I.Desire := '加不加分随你';
    —————————————————————————————————
      

  2.   

    在保存数据图象的时候,会遇到一些情况,
     
      有的时候不改变图象字段的内容,有的时候需要改变,
      在数据表Before Post 里面加入代码,对于Query,打开数据集的时候,
     总要去执行Before Post过程,所以在进行程序判断的时候,需要考虑到这些方面的东西,程序中借助于PictureOpendialog,Image,等控件,像这样的情况怎样去判断呢??
      

  3.   

    如果只是看看image里面有没有图像procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
    if image1.Picture.Graphic=nil then
        showmessage('no')
       else
         showmessage('has')
    end;
      

  4.   

    判断Image.Picture.Graphic 是否为 nil
      

  5.   

    procedure TWRYMain.PostImg(const query1:tquery;const str1:string;const DlgOpPic:TOpenPictureDialog;const imgpic:timage);
    var
      str:Tmemorystream;
    begin
     //用来保存和显示图象
     {在这儿我想添加一段代码,因为数据表的状态可能为插入和编辑,但是我在这儿需要这样去判断,怎样去判断Image中是否有图象,如果有图象我就进行下面的处理,如果没有图象,这段提交图象的程序就不执行,因为图象可以为Bmp和Jpg,我的判断的程序应该怎样去写呢??}
    if query1.FieldByName('img').isnull then//判断是否为空
    begin
      str:=Tmemorystream.Create;
      str.LoadFromFile(DlgOpPic.FileName);
      str.Position:=0;
      Tblobfield(query1.FieldByName(str1)).loadfromstream(str);
    //如果你用的是adoquery,把tblobfield改为TADOBlobField
    end;
    end;
    关于你的bmp、jpg的区分,在二进制中是很难区分的,建议你在建立一个字段,专门记录图的类型。