Delphi 向TOpenPictureDialog添加按钮

Delphi 向TOpenPictureDialog添加按钮,delphi,delphi-7,Delphi,Delphi 7,我在WindowsXP下使用Delphi7。如何向Delphi TOpenPictureDialog组件添加“删除”工具按钮?有没有办法让对话框进入设计器以添加按钮及其行为?您可以编写“自己的”OpenDialog并从TOpenPictureDialog继承这个新类。有一个名为“PBOpenPreviewDialog”的(旧的)免费软件组件,它正是这样做的(来自TopEndDialog),也许你可以以该组件为例 您可以在以下网址找到该网页: 这里还有一个组件的下载链接:您可以在TOpenPict

我在WindowsXP下使用Delphi7。如何向Delphi TOpenPictureDialog组件添加“删除”工具按钮?有没有办法让对话框进入设计器以添加按钮及其行为?

您可以编写“自己的”OpenDialog并从TOpenPictureDialog继承这个新类。有一个名为“PBOpenPreviewDialog”的(旧的)免费软件组件,它正是这样做的(来自TopEndDialog),也许你可以以该组件为例

您可以在以下网址找到该网页:

这里还有一个组件的下载链接:

您可以在
TOpenPictureDialog
中添加一个新按钮,但不能将对话框放入设计器中,必须在运行时执行此操作

检查一下这个样品

procedure TForm1.FormCreate(Sender: TObject);
var
  FDeleteButton   : TSpeedButton;
  FPreviewButton  : TSpeedButton;
begin
    FPreviewButton := TSpeedButton(OpenPictureDialog1.FindComponent('PreviewButton'));
    FDeleteButton  := TSpeedButton.Create(OpenPictureDialog1);
    FDeleteButton.SetBounds(107, 1, 23, 22);
    FDeleteButton.Parent    := FPreviewButton.Parent;
    FDeleteButton.NumGlyphs:=2;        
    FDeleteButton.Glyph.LoadFromResourceName(HInstance, 'BBABORT');
    FDeleteButton.Name    := 'DeleteButton';
    FDeleteButton.OnClick := DeleteBtnClick;
end;

procedure TForm1.DeleteBtnClick(Sender: TObject);
begin
   //here you must implement the delete logic 
   ShowMessage('Hello from delete button');
end;
结果是


看一看TOpenPictureDialog的源代码,您就有了一个很好的示例,说明了如何破解常见对话框!另外,用户可以通过按delete键或从关联菜单中删除选定的图像。+1只是为了补偿下一票(尽管我不确定第三方控件)。就我个人而言,我相当“受够了”(如果你原谅我的法语的话)这么多匿名的反对票。在你被否决之前你不能开口…@Andreas另一方面,这并不能回答问题。投赞成票也没什么帮助。好吧,我想两个都对。下次我会尽量给出一个更完整的答案。谢谢你。我认为我根本不可能尝试这个,因为在Windows Vista/7和Delphi 2009上,
TOpenPictureDialog
是一个标准的Windows对话框。我认为你可以说服TOpenPictureDialog恢复到传统的对话框,但这需要一点努力。