关于opendialog?(100分)

  • 主题发起人 主题发起人 kucio
  • 开始时间 开始时间
K

kucio

Unregistered / Unconfirmed
GUEST, unregistred user!
我看到有些软件(如wps2000)的打开文件对话框除了常见的部分外,还多出
了一些复选框和按钮,而opendialog的属性框中并无相应的选项,不知该如何
实现?
 
那你只有继承并重写这个控件了。或者是用一些第三方控件。
能不能说以下是什莫模样的对话框
 
....
看看WIN的API吧,好象可以扩展的。`
 
自己做一个并不难。
 
no,不是自己做的,他们都是标准对话框的扩展.
我以前用VB都做出来过,但是delphi没做过.
 
又想了想,其实很简单呀! 看看openpicturedialog的代码不就知道了.
他既然可以在里面添加图片预览,你当然也可以添加按钮什么的.
这100分花的不值.
 
自己加吧,虽然我自己没做过。
应该可以加吧。
 
这两个对话框在 vcl (c/s版)代码里有
 
怎么扩展呀?好歹给提供点资料呀。
 
我不是跟你说了吗? 看看openPictureDialog的源码就知道了!他不是在里面添加
了一个图片预览吗?
 
cakk, openpicturedialog的功能不是DELPHI为它写的,是windows提供的吧?
其实每一个WINDOWS提供的对话框都有此种扩展功能,甚至象浏览文件夹那个也可以有“新建”的功能。
只是我也不知道如何做到。我也想知道。
现在我要什么对话框都是自己写。写的方法可以仿inputbox那个,不过只能是很简单的对话框。
 
>>openpicturedialog的功能不是DELPHI为它写的,是windows提供的吧
为什么不看看呢? 看看他的源码你就知道了. 我看过后早已知道怎么做了,
但是我希望你能自己看一看.
 
算了,你们这些懒虫,我给你们把OpenPictureDialog的create和destory贴出来吧!

constructor TOpenPictureDialog.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Filter := GraphicFilter(TGraphic);
FPicture := TPicture.Create;
FPicturePanel := TPanel.Create(Self);
with FPicturePanel do
begin
Name := 'PicturePanel';
Caption := '';
SetBounds(204, 5, 169, 200);
BevelOuter := bvNone;
BorderWidth := 6;
TabOrder := 1;
FPictureLabel := TLabel.Create(Self);
with FPictureLabel do
begin
Name := 'PictureLabel';
Caption := '';
SetBounds(6, 6, 157, 23);
Align := alTop;
AutoSize := False;
Parent := FPicturePanel;
end;
FPreviewButton := TSpeedButton.Create(Self);
with FPreviewButton do
begin
Name := 'PreviewButton';
SetBounds(77, 1, 23, 22);
Enabled := False;
Glyph.LoadFromResourceName(HInstance, 'PREVIEWGLYPH');
Hint := SPreviewLabel;
ParentShowHint := False;
ShowHint := True;
OnClick := PreviewClick;
Parent := FPicturePanel;
end;
FPaintPanel := TPanel.Create(Self);
with FPaintPanel do
begin
Name := 'PaintPanel';
Caption := '';
SetBounds(6, 29, 157, 145);
Align := alClient;
BevelInner := bvRaised;
BevelOuter := bvLowered;
TabOrder := 0;
FPaintBox := TPaintBox.Create(Self);
Parent := FPicturePanel;
with FPaintBox do
begin
Name := 'PaintBox';
SetBounds(0, 0, 153, 141);
Align := alClient;
OnDblClick := PreviewClick;
OnPaint := PaintBoxPaint;
Parent := FPaintPanel;
end;
end;
end;
end;

destructor TOpenPictureDialog.Destroy;
begin
FPaintBox.Free;
FPaintPanel.Free;
FPreviewButton.Free;
FPictureLabel.Free;
FPicturePanel.Free;
FPicture.Free;
inherited Destroy;
end;
 
顺便说一句,浏览文件夹对话框添加“新建”的方法和上面的不一样.
 
也可以用一个"模式"的form来实现,但不通用.
 
多人接受答案了。
 
后退
顶部