Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 保留桌面的一部分_Delphi_Sidebar - Fatal编程技术网

Delphi 保留桌面的一部分

Delphi 保留桌面的一部分,delphi,sidebar,Delphi,Sidebar,如何使用Delphi保留桌面的一个边缘?类似Vista侧边栏的功能。您需要的是一个 必须使用ShellAPI单元和函数中声明的TAppBarData对象 看看这个简单的例子 type TApplicationTaskBar = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private procedure CreatePara

如何使用Delphi保留桌面的一个边缘?类似Vista侧边栏的功能。

您需要的是一个

必须使用ShellAPI单元和函数中声明的TAppBarData对象

看看这个简单的例子

type
  TApplicationTaskBar = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    procedure CreateParams(var Params: TCreateParams); override;
  public
    { Public declarations }
  end;

var
  ApplicationTaskBar: TApplicationTaskBar;

implementation

{$R *.dfm}

Uses
ShellAPI;

procedure TApplicationTaskBar.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle  := Params.ExStyle or WS_EX_TOOLWINDOW;
  Params.Style    := (Params.Style OR WS_POPUP) AND (NOT WS_DLGFRAME);  //Remove title Bar
end;

procedure TApplicationTaskBar.FormCreate(Sender: TObject);
var
  MyTaskBar  : TAppBarData;
begin
  GlassFrame.Enabled       :=True;//Activate Glass  , optional
  GlassFrame.SheetOfGlass  :=True;//optional
  Left:=0;
  Top :=0;
  Width := 300;
  Height:= Screen.Height;
  FillChar(MyTaskBar, SizeOf(TAppBarData), 0);
  MyTaskBar.cbSize := SizeOf(TAppBarData);
  MyTaskBar.hWnd   := Handle;
  MyTaskBar.uCallbackMessage := WM_USER+777;  //Define my own Mesaage
  MyTaskBar.uEdge  := ABE_LEFT;
  MyTaskBar.rc     := Rect(0, 0, Width, Height);
  SHAppBarMessage(ABM_NEW, MyTaskBar);
  SHAppBarMessage(ABM_ACTIVATE, MyTaskBar);
  SHAppBarMessage(ABM_SETPOS, MyTaskBar);
  Application.ProcessMessages;
end;


procedure TApplicationTaskBar.FormDestroy(Sender: TObject);
var
  MyTaskBar : TAppBarData;
begin
  FillChar(MyTaskBar, SizeOf(TAppBarData), 0);
  MyTaskBar.cbSize := SizeOf(TAppBarData);
  MyTaskBar.hWnd   := Self.Handle;
  SHAppBarMessage(ABM_Remove, MyTaskBar);
end;
检查此链接

再见