Docking Tool(100分)

  • 主题发起人 主题发起人 DengYP
  • 开始时间 开始时间
D

DengYP

Unregistered / Unconfirmed
GUEST, unregistred user!
请问如何用Delphi实现Docking Tool
 
.../Delphi4/Demos/Docking,
目录有例子。

我没作过,只记得设置和Dock
有关的几个属性就可以了,
很简单。
 
用tb97也可以,不过如果你用的是d4,那还是用它自带的吧!
 
先用几个Panel或其它控件作为Dock Site(即设控件DockSite属性为true);
再把需要Dock的控件DragKind属性设为dkDock,DragMode属性设为dmAutomatic
(自己判断Dock是否开始也行,即使用BeginDrag)
以下范例演示Panel在Form上的Dock
dfm:
--------------------------------------------------
object Form1: TForm1
Left = 192
Top = 107
Width = 498
Height = 245
Caption = 'Form1'
Color = clBtnFace
DockSite = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
Left = 72
Top = 40
Width = 161
Height = 105
Caption = 'Panel1'
DragKind = dkDock
TabOrder = 0
OnMouseDown = Panel1MouseDown
end
object Panel2: TPanel
Left = 256
Top = 40
Width = 169
Height = 105
Caption = 'Panel2'
DragKind = dkDock
DragMode = dmAutomatic
TabOrder = 1
end
end
------------------------------------------------------------------
pas:
------------------------------------------------------------------
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls;

type
TForm1 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
self.Panel1.BeginDrag(true);
end;

end.
--------------------------------------------------------------------
 
D4的例子好像有问题,当两个工具条都浮动时,
关掉一个,另一个也会自动关掉,不过D5中的例
子已有所改变。而且Delphi中的Dock效果并不好
,当单击浮动窗口的标题栏时,窗口会自动向上
移动,还是tb97或Founder Library较好。
 
to WuWZY:
那是delphi的例子中在dock window中没有处理, 我做过, 觉得还行
 
接受答案了.
 
后退
顶部