我正在使用TActionManager
这样的表单:
procedure TForm2.actAddImagineExecute(Sender: TObject);
begin
addImagineForm.Show;
end;
TButton
,1 TOpenDialog
和1 TImage
Button3
且ModalResult
设为mrOk
Button1
Button2
,已勾选Cancel
属性且ModalResult
设为mrAbort
问题:
Cancel
按钮时,它不会关闭,基本上什么都不做。Salveaza
按钮时,它什么也没做。Incarca Imagine 按钮的代码是:
procedure TaddImagineForm.Button1Click(Sender: TObject);
var
selectedFile: string;
dlg: TOpenDialog;
begin
selectedFile := '';
dlg := TOpenDialog.Create(nil);
try
dlg.InitialDir := 'C:\';
dlg.Filter := 'All files (*.*)|*.*';
if dlg.Execute(Handle) then
selectedFile := dlg.FileName;
Image1.Picture.LoadFromFile(selectedFile);
finally
dlg.Free;
end;
end;
名为 Salveaza ( Button3 )的按钮代码为:
procedure TaddImagineForm.Button3Click(Sender: TObject);
var
Field: TBlobField;
Stream: TStream;
begin
if dbmodule.comenziQuery.Active and (Image1.Picture.Graphic <> nil) then
begin
dbmodule.comenziQuery.Insert;
Field := TBlobField(dbmodule.comenziQuery.FieldByName('pscreen')); // ensure it ís a blob
Stream := dbmodule.comenziQuery.CreateBlobStream(Field, bmWrite);
try
Image1.Picture.Graphic.SaveToStream(Stream);
finally
Stream.Free;
dbmodule.comenziQuery.Post;
end;
end;
end;
TSQLQuery
(名为 comenziQuery )位于Data module
,以及我正在使用的其他内容(如{{ 1}},DataSource
,DataSet
等等。)数据模块名为 dbmodule SQLConnection
类型。我尝试过的事情:
mediumblob
和close;
,但似乎无法执行图片代码,只需进行保存按钮工作并关闭表单,但没有图像添加到数据库字段答案 0 :(得分:3)
你的问题是行动
procedure TForm2.actAddImagineExecute(Sender: TObject);
begin
addImagineForm.Show;
end;
应该是
procedure TForm2.actAddImagineExecute(Sender: TObject);
begin
addImagineForm.ShowModal;
end;
让模态按钮具有任何意义。
其他问题是行
if dlg.Execute(Handle) then
selectedFile := dlg.FileName;
Image1.Picture.LoadFromFile(selectedFile);
您的缩进表明只有在dlg成功执行时,Image1才会尝试加载。不是这种情况。它总是会尝试加载。你的代码应该是
if dlg.Execute(Handle) then
begin
selectedFile := dlg.FileName;
Image1.Picture.LoadFromFile(selectedFile);
end;
根据您的评论/请求
procedure TaddImagineForm.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenDialog1.FileName);
end;
end;