一个学生表有:(学号、姓名、、、相片、、)等字段。想在一个窗体上实现这个表的基本功能
添加、删除、修改、保存、取消,的功能=====>>>特别针对:相片如何实现保存的问题??===
表单上用:dbedit、dbimage、openpicturedialog、一个button用于打开相片路径,一个button
用于删除dbimage中的相片,余下五个button分别是(添加、删除、修改、保存、取消)表单的onshow 事件
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from table');
sql.open;
first;
end;
end;
添加:
begin
// form1.adoquery1.open;
form1.adoquery1.append;
/////////
dbedit1.text :=form1.adoquery1.fieldbyname('学号').asstring;
dbimage1.picture.loadfromfile('openpicturedialog.filename');///这样肯定不行的
//相片该怎写呢??
end;
保存:
begin
///还是要在这边加入:form1.adoquery1.fieldbyname('相片').Assign(dbimage1);
form1.adoquery.post;
end;
修改:adoquery1.edit; 删除:adoquery1.delete; 取消:adoquery1.cancel;
打开相片的:
begin
If OpenPictureDialog1.Execute Then
dbimage1.Picture.LoadFromFile(openpicturedialog1.filename);
end; ///也许这个需要改进?
以上代码:文本可以实现各项功能,就是===<<相片>>===无法实现各项功能?
谢谢!!
添加、删除、修改、保存、取消,的功能=====>>>特别针对:相片如何实现保存的问题??===
表单上用:dbedit、dbimage、openpicturedialog、一个button用于打开相片路径,一个button
用于删除dbimage中的相片,余下五个button分别是(添加、删除、修改、保存、取消)表单的onshow 事件
begin
with adoquery1 do
begin
close;
sql.clear;
sql.add('select * from table');
sql.open;
first;
end;
end;
添加:
begin
// form1.adoquery1.open;
form1.adoquery1.append;
/////////
dbedit1.text :=form1.adoquery1.fieldbyname('学号').asstring;
dbimage1.picture.loadfromfile('openpicturedialog.filename');///这样肯定不行的
//相片该怎写呢??
end;
保存:
begin
///还是要在这边加入:form1.adoquery1.fieldbyname('相片').Assign(dbimage1);
form1.adoquery.post;
end;
修改:adoquery1.edit; 删除:adoquery1.delete; 取消:adoquery1.cancel;
打开相片的:
begin
If OpenPictureDialog1.Execute Then
dbimage1.Picture.LoadFromFile(openpicturedialog1.filename);
end; ///也许这个需要改进?
以上代码:文本可以实现各项功能,就是===<<相片>>===无法实现各项功能?
谢谢!!
解决方案 »
- 谈谈Delphi的前途
- 大家帮忙找找错,提示ADOQuery4:field'danwei'not found 在线急等!
- activex 的难题!!!!关于 activex 控件包添加了 文件 在客户端调用的问题!!!!!!!
- DELPHI的全局共享变量??
- 一个简单的问题,D7中,打印机的打印尺寸怎样和屏幕尺寸(像素)换算?
- 高人给点意见或指教!!!!数据库事务的问题
- 一个数学问题:怎么样计算椭圆的面积
- 请教AddChild与AddChildObject有什么区别????
- 讨论:单就数据库编程pb和delphi谁更优秀?
- ClientDataSet组件执行insert等一些语句问题
- 高手请指点!
- sql server 数据库的超麻烦问题,急
var
FImg: TJPEGImage;
begin
FImg := TJPEGImage.Create;
if OpenPictureDialog.Execute then
with FImg do
try
LoadFromFile(OpenPictureDialog.Filename);
Image1.Picture.Assign(FImg);
DBImage.Assign(Image1.Picture.Graphic);
finally
Free;
end;
end;
看看可以不?
希望:实现以上功能的时候,代码的不要做太大的改动,,谢谢!!
var
FImg: TJPEGImage;
begin
FImg := TJPEGImage.Create;
if OpenPictureDialog.Execute then
with FImg do
try
LoadFromFile(OpenPictureDialog.Filename);
Image1.Picture.Assign(FImg);
DBImage.Assign(Image1.Picture.Graphic);
finally
Free;
end;
end;
运行错误
[错误] Undeclared identifier: 'TjpegImage'是image的属性要设置什么吗??小第比较菜,,望说的详细点,谢谢!!!
uses jpeg;自动建立这个类了
Img: TJPEGImage;
begin
Img := TJPEGImage.Create;
if OpenPictureDialog.Execute then
with Img do
try
LoadFromFile(OpenPictureDialog.Filename);
Image1.Picture.Assign(Img); //这里使用了image
DBImage.Assign(Image1.Picture.Graphic);
finally
Free;
end;
end;
小第不才,那我的代码上要:是保存,还是,添加,要做修改呢??怎么做,谢谢!!
添加:DBImage字段设置为图片字段,
ADOQuery.Edit;
...
ADOQuery.Post;
修改:其实和我贴的代码差不多吧,重新导入打开的图片文件,然后用数据查询组建执行相应的修改功能。我这里没有delphi,只能说说了
var
strm:tmemorystream;
ext:string;
begin
if image1.picture.Graphic <> nil then //避免image1中无图像保存出错
begin
//取出文件的扩展名
strm := tmemorystream.Create ;
try
image1.Picture.Graphic.SaveToStream(strm);
adoquery1.append;
strm.Position :=0;
tblobfield(adoquery1.FieldByName('照片')).LoadFromStream(strm);
adoquery1.Post;
finally
strm.Free ;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//先判断adoquery的状态再Appened,这段代码楼主自己写
if OpenPictureDialog.Execute then
begin
form1.adoquery1.Append;
form1.adoquery1.FieldByName('JPG').loadfromfile(openpicturedialog.filename);
//openpicturedialog.filename不要加单引号,楼主的代码里有加,那就错了
end;
end;显示图片
private
function JpegStartsInBlob(PicField:TBlobField):integer;
implementation
uses JPEG;
{$R *.dfm}function TForm1.JpegStartsInBlob(PicField:TBlobField):integer;
var
bS : TADOBlobStream;
buffer : Word;
hx : string;
begin
Result := -1;
bS := TADOBlobStream.Create(PicField, bmRead);
try
while (Result = -1) and (bS.Position + 1 < bS.Size) do
begin
bS.ReadBuffer(buffer, 1);
hx:=IntToHex(buffer, 2);
if hx = 'FF' then begin
bS.ReadBuffer(buffer, 1);
hx:=IntToHex(buffer, 2);
if hx = 'D8' then Result := bS.Position - 2
else if hx = 'FF' then
bS.Position := bS.Position-1;
end; //if
end; //while
finally
bS.Free
end; //try
end; procedure TForm1.ADOQuery1AfterScroll(DataSet: TDataSet);
var
bS : TADOBlobStream;
Pic : TJpegImage;
begin
bS := TADOBlobStream.Create(ADOQuery1.FieldByName('JPG'), bmRead);
if not ADOQuery1.FieldByName('JPG').IsNull then
begin
try
bS.Seek(JpegStartsInBlob(ADOQuery1.FieldByName('JPG'),soFromBeginning);
Pic:=TJpegImage.Create;
try
Pic.LoadFromStream(bS);
ADOImage.Picture.Graphic:=Pic;
finally
Pic.Free;
end;
finally
bS.Free
end;
end;
end;以上适用于ACCESS2000和2003