Blue
Red
Green
Orange
Voilet
Slate
Dark

如何开发控间的界面(35分)

  • 主题发起人 陈冲伟
  • 开始时间

陈冲伟

Unregistered / Unconfirmed
GUEST, unregistred user!
我想对TSaveDialog进行扩充,在它的上面再加几个按钮和Label,但是
我New了一个Component之后,只能看到代码,而无法看到TSaveDialog
的Form窗体,结果根本无法向窗体上添加其他东西,请问如何才能解决这个
问题.
 
T

tqz

Unregistered / Unconfirmed
GUEST, unregistred user!
这样做恐怕是不行的
 
H

huizhang

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi中的Dialog控件板上的几个对话框控件是通过对Windows的标准Dialog进行扩
充实现的, 本身不是从Delphi的TForm继承来的, 实际上是不可视控件, 故你见不到
窗体是对的.

最好的例子是TOpenPictureDialog, TSavePictureDialog两个控件, 他们在ExtDlgs.pas
中. 所有的东西都是在Create中动态创建的.
 

陈冲伟

Unregistered / Unconfirmed
GUEST, unregistred user!
但是如果我想要象TOpenPictureDialog那样对TOpenDialog进行扩充,应该如何做
呢?
 
H

huizhang

Unregistered / Unconfirmed
GUEST, unregistred user!
1. 从TOpenDialog继承一个控件
2. 类里面加上两个TButton, Btn1: TButton; TBtn2: TButton;
3. 声明两个Notify事件作为Button的OnCLick事件, 如:
procedure Btn1Click(Sender: TObject);
4. 继承Create方法, 在inhereted create后面做下列事情:
a. 改变BoundsRect大小, 位增加的按钮留出足够的空间
b. create 两个按钮 Btn1:=TButton.Create(self); Btn1.parent:=self;
c. 将相应的Notify事件赋值给相应的Button, Btn1.OnClick:=Btn1Click;
5. 继承Destructor, 在Destructor中free这两个按钮
 

陈冲伟

Unregistered / Unconfirmed
GUEST, unregistred user!
我仔细研究了TOpenPictureDialog的原代码,并没有发现它使用SetBounds()等类似
方法改变整个Dialog大小的语句。但是在最后Dialog显示的时候,Dialog为什么会为
预览区域留下足够的空间呢?
 

陈冲伟

Unregistered / Unconfirmed
GUEST, unregistred user!
接受答案了.
 

Similar threads

回复
0
查看
658
不得闲
回复
0
查看
685
不得闲
S
回复
0
查看
626
SUNSTONE的Delphi笔记
S
顶部 底部