1、创建xls文档可以参考前一篇博客,并使用wps将文档保存为2003格式xls后缀。
2、在form上面放置adoconnection、adotable、datasource、spinedit、timer、checkbox、image、4个button组件。
image的设置:
Image1.Align := alClient;
Image1.Center := True;
编写代码:
1、 在unit中use Vcl.Imaging.PngImage单元。
usesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB,Data.Win.ADODB, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, Vcl.ExtCtrls,Vcl.Imaging.PngImage;
2、在1button的onclick事件中。
Conn.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' + 'Data Source=C:\delphicode\shortcuts\Win32\Debug\image_info.xls;' + 'Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";';Conn.LoginPrompt := false;Conn.Connected := true;ADOTabXLS.Connection := Conn;ADOTabXLS.TableName := '[' + 'Sheet' + '$]';ADOTabXLS.Active := true;DSXLS.DataSet := ADOTabXLS;GridXLS.DataSource := DSXLS;
3、等比例缩放:
procedure TForm6.LoadAndScalePngImage(const FilePath: string; Image: TImage);
varPng: TPngImage;Bitmap: TBitmap;ScaleWidth, ScaleHeight: Integer;AspectRatio: Double;
beginPng := TPngImage.Create;Bitmap := TBitmap.Create;tryPng.LoadFromFile(FilePath);// 计算目标大小,保持等比例缩放AspectRatio := Png.Width / Png.Height;if (Image.Width / Image.Height) > AspectRatio thenbeginScaleHeight := Image.Height;ScaleWidth := Round(ScaleHeight * AspectRatio);endelsebeginScaleWidth := Image.Width;ScaleHeight := Round(ScaleWidth / AspectRatio);end;// 调整 Bitmap 大小并绘制缩放后的图像Bitmap.SetSize(ScaleWidth, ScaleHeight);Bitmap.Canvas.StretchDraw(Rect(0, 0, ScaleWidth, ScaleHeight), Png);// 将缩放后的 Bitmap 分配给 TImageImage.Picture.Assign(Bitmap);finallyPng.Free;Bitmap.Free;end;
end;
4、在2button的onclick事件中,
ADOTabXLS.Next;
//Image1.Picture.LoadFromFile(ADOTabXLS.FieldByName('Path').AsString);
LoadAndScalePngImage(ADOTabXLS.FieldByName('Path').AsString, Image1);
5、在3button的onclick事件中。
ADOTabXLS.Prior;
//Image1.Picture.LoadFromFile(ADOTabXLS.FieldByName('Path').AsString);
LoadAndScalePngImage(ADOTabXLS.FieldByName('Path').AsString, Image1);
效果如下: