【发布时间】:2016-11-01 07:56:10
【问题描述】:
我正在显示一个使用 TActionManager 的表单,如下所示:
procedure TForm2.actAddImagineExecute(Sender: TObject);
begin
addImagineForm.Show;
end;
- 它包含以下内容:3 个
TButton、1 个TOpenDialog和1 个TImage - 按钮 Salveaza(保存)是
Button3并且将ModalResult设置为mrOk - 按钮 Incarca Imagine(加载图像)是
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)与我正在使用的其他东西(如DataSource、DataSet、@987654344)一起位于Data module@ 等等..) 数据模块被命名为 dbmodule - 数据库中应保存 .bmp 图像的列名为 pscreen,并设置为
mediumblob类型。
我尝试过的事情:
- 我尝试添加
close;和modalresult:=mrok;,但它似乎没有执行图像的代码,只是使保存 按钮工作并关闭表单但没有图像添加到数据库字段 - 搜索了这方面的教程,找到了一堆,但它们不是我需要的,或者我显然不明白如何克服这个问题并让它发挥作用
【问题讨论】:
-
您只在帖子的底部三分之一处陈述了您的问题。感谢您尝试包含所有可能的信息。但是您的实际问题是隐藏的,埋在无关紧要的山中。而且您的问题的标题与您的实际问题完全无关。
-
@CraigYoung 实际上我刚刚注意到这一点,可能在尝试组织信息时被冲昏了头脑。问题是模式按钮不起作用,下面的答案已修复 - 现在看来我用来上传 bmp 的代码没有做任何事情(没有向该字段添加任何内容)所以我想我会关闭这并为此提出一个新的具体问题。对不起!
标签: delphi modal-dialog delphi-10-seattle