模态按钮在表单上不起作用

Modal buttons not working on form

我正在显示一个使用 TActionManager 的表单,如下所示:

procedure TForm2.actAddImagineExecute(Sender: TObject);
begin
  addImagineForm.Show;
end;

表单如下所示:

问题:

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;

名为 SalveazaButton3)的按钮的代码是:

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;

我尝试过的事情:

你的问题是动作

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;

编辑2

根据你的comment/request

procedure TaddImagineForm.Button1Click(Sender: TObject);
begin
    if OpenDialog1.Execute then
    begin
      Image1.Picture.LoadFromFile(OpenDialog1.FileName);
    end;
end;