请教如何将我如下的代码修改为控制图片文件不超过20K, 高 × 宽 为 140 × 100 像素。procedure TForm3.SpeedButton11Click(Sender: TObject);
begin
  if openpicturedialog1.Execute then
    begin
    dbimage1.Picture.LoadFromFile(openpicturedialog1.FileName);
    dbimage1.CopyToClipboard;
    dbimage1.PasteFromClipboard;
    end;谢谢,……

解决方案 »

  1.   

    在dbimage1.Picture.LoadFromFile(openpicturedialog1.FileName)之前判断文件大小就行了,如果符合条件再dbimage1.Picture.LoadFromFile(openpicturedialog1.FileName)
      

  2.   

    判断文件大小
    Delphi自身提供了FileSize函数,例如: 
        var 
         f: file of Byte; 
         size : Longint; 
        begin 
         AssignFile(f, 'f:\t.exe'); 
         Reset(f); 
         size := FileSize(f); 
         edit1.text := IntToStr(size); 
         CloseFile(f); 
        end; 
         
        也可以使用下面的方法: 
        function GetFileSize(const FileName: String): LongInt; 
        var SearchRec: TSearchRec; 
        begin 
        if FindFirst(ExpandFileName(FileName), faAnyFile, SearchRec) = 0 then 
         Result := SearchRec.Size 
        else 
         Result := -1; 
        end; 
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      f: file of Byte;
      size : Longint;
    begin
      OpenDialog1.Filter:='JPG File(*.jpg)|*.jpg';
      if OpenDialog1.Execute then
      begin
        AssignFile(f, OpenDialog1.FileName);
        Reset(f);
        size := FileSize(f) div 1024;  // KB
        CloseFile(f);
        if size <= 20 then
        begin
          dbimage1.Picture.LoadFromFile(openpicturedialog1.FileName);
          dbimage1.CopyToClipboard;
          dbimage1.PasteFromClipboard;
        end
        else
          ShowMessage('图片大小不能超过20KB');
      end;
    end;楼主信誉值有问题,不指望得分了。
      

  4.   

    把OpenDialog1改成openpicturedialog1
      

  5.   

    TO:谢春建
      我觉得方法也有以上老兄们说在这么多了,delphi存取数据库文件是文件流的方式进行的,所以判断图片的高度和宽度是有难度的。
      给你个建议:可以将图片文件保存在一个目录下,用的时候再调用。数据库存图片缺点太多了,备份也麻烦,最好不要用。