TSaveDialog中添加按钮的位置控制(200分)

  • 主题发起人 主题发起人 chcw
  • 开始时间 开始时间
C

chcw

Unregistered / Unconfirmed
GUEST, unregistred user!
现在我想在Delphi提供的保存文件对话框的"保存"和"取消"按钮下再添加一个"选项"
按钮,以供保存时进行设置。为此我单独设计了一个对话框控件(从TSaveDialog派生)
并修改资源文件extdlgs.rc将"选项"按钮加到其中,按钮的位置是在控件创建时选取
的固定值,如Left=90,Top=20,但在实际运行中发现:不同操作系统中(如98/2K)的文
件对话框大小是不同的,而按钮的位置是固定的,因此导致"选项"按钮和"保存","取
消"按钮在垂直位置无法对齐(98下对齐时2k下无法对齐,反之亦然)以及水平间隔也无
法保持一致. 解决这一问题,我想有以下几个途径:
1. 控件加载时动态获取"保存"或"取消"按钮的位置,然后调整"选项"按钮使之与前两者
对齐。
2. 用一种不依赖于操作系统的对话框单位来控制"选项"按钮的位置。
但是这两个途径我都没有想到好的方法,因此来请教各位大侠。
 
参考 Dialog.pas 1759 行:InputQuery 的方法试一试。
即:先 GetAvgCharSize ,再 MulDiv 得到坐标,这样应该可以对齐!

var DialogUnits: TPoint;
...
DialogUnits := GetAveCharSize(Canvas);
Left := MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
 
to chcw:
第一种方法可以实现,在重载的 DoShow 方法中可以获得 OK,Cancel 两个按钮的位置,
请参考我在 http://www.delphibbs.com/delphibbs/dispq.asp?lid=536617 的回答。
 
多人接受答案了。
 
后退
顶部