一个问题问了三次,可是一直没有处理,在数据库的一个表中,我存放了image类型的数据,现在我想做一浏览界面,在界面上能够依据表中记录的多少,自动创建相应数量的image(或其它的东东)排列显示表中所有的图片。请问各位大侠如何实现该功能!最好有源码作参考,谢谢各位大侠!
解决方案 »
- delphi插入数字相反的值失败,大家帮我看一下。
- (delphi)access数据库不用adoquery能不能实现 单价*数量=金额?
- DELPHI压缩文件夹--修改(网上找到一段代码,但是文件夹较大的时候会无法处理),如何修改
- 关于DELPHI结束进程强烈咨询
- 为什么一打开D5后,主菜单被隐藏了,怎样才能把它调出来呢?急呀...........
- 怎样得到MDI FORM 的活动CHILD FORM 的清单!
- form的show和showmodel有什么区别?
- delphi 与数据库中数据操作问题
- 请问如何给一个PARADOX数据库加秘?
- 在IE右键菜单中添加菜单项的问题
- 请问如何根据实际需要生成一定数量的控件???
- 有关修改口令的问题~~请大家帮忙!
最好设计两个类: 1: TPhoto = class; //单个的图片类
2: TPhotosMangers = classs ;//图片类管理器,负表对数据库的操作,产生相应的TPhoto,以及负责所以TPhoto对像的释放等功能.
就是把数据库中一个image字段中的所有图形排列出来,数量等于记录数,显示用滚动浏览的方式
能给详细一点的说明吗,或者可以给我写出关键部分的代码吗?
谢谢!
(我实在是只菜鸟!)
var
i : Integer;
spd : TImage;
begin
for i := 0 to 200 do //此处循环你可以用记录循环来代替
begin
spd := TSpeedButton.Create(Form1.scl); //scl 是SrolllBox
spd.Parent := scl;
spd.Picture.LoadFromFile(你的路径);
spd.Visible := True;
spd.Height := 60;
spd.Name := 'Image'+ IntToStr(i); // 可有可无
spd.Width := 70;
if i div 11 > 0 then // 这里的计算是为了排列整齐
spd.Top := (i div 11)*60
else
spd.Top := 0;
spd.Left := 70 * (i mod 11);
end;
end;
var
i : Integer;
spd : TImage;
begin
for i := 0 to 200 do //此处循环你可以用记录循环来代替
begin
spd := TImage.Create(Form1.scl); //scl 是SrolllBox
spd.Parent := scl;
spd.Picture.LoadFromFile(你的路径);
spd.Visible := True;
spd.Height := 60;
spd.Name := 'Image'+ IntToStr(i); // 可有可无
spd.Width := 70;
if i div 11 > 0 then // 这里的计算是为了排列整齐
spd.Top := (i div 11)*60
else
spd.Top := 0;
spd.Left := 70 * (i mod 11);
end;
end;
TPhotosManager = class;
TThearmalPhoto = class
private
ID: Integer;
FImage: TImage;
FPanel: TPanel;
FPnl: TPanel;
FIsiName: string;
FPhotosManager: TPhotosManager;
protected
destructor destroy;override;
procedure LoadThearmalPhoto(ms: TStream);
procedure SetPhotoName;
procedure GetMax2MinTemp(ABuf: array of word);
procedure GetRelaParams(AStream: TStream); //得到发射率、背景温度、最大温度和最小温度等.
procedure ImageOnClick(Sender: TObject);
procedure SetColor(Sender: TObject);
procedure SendRelaParams;
public
constructor create(AParent:TComponent; APM: TPhotosManager;IsiName: string; ms: TStream);
//得到一个点的温度值.
function GetPointTemp(P: TPoint): Real;
procedure PicViewRepaint;
function GetPointTempEx(P: TPoint): Word;
procedure CreateMax2MinShape;
procedure FreeMax2MinShape;
property Container: TPanel Read FPanel;
property Image: TImage Read FImage;
end;
TPhotosManager = class
private
FRow,
FCol: Integer;
FPhotos: TList; //TThearmalPhoto类的容器,用于保存TThearmalPhoto对象.
FParent: TComponent; //用于放置显示TThearmalPhoto对象的容器
FCurPhoto: TThearmalPhoto;
protected
destructor destroy; override;
//ISIName图片名称; ms从数据库读到的图片流.
function AddPhotoItem(ISIName: string; ms: TStream): TThearmalPhoto;
//当窗体Resize时调整图片在Parent(为TScrollBox类)时的位置等.
procedure AdjustOnePosition(APhoto: TThearmalPhoto);
//产生一个ID.
function PersistBeltaId: Integer;
public
constructor create(AParent: TComponent);
procedure FreePhotos;
procedure AddAllPhotos(Qry: TAdoQuery); //传递打开的Query
procedure AdjustPosition;
//由ID得到一个TThearmalPhoto对像.
function GetBeltaById(Id: Integer): TThearmalPhoto;
procedure SetPnlColor(APhoto: TThearmalPhoto);
//设置图形的Palette.
Procedure SetDIBColorTableEx(Index: Integer);
property CurPhoto: TThearmalPhoto Read FCurPhoto;
end;
我是从数据库中取数据!