form如果没有设成主窗体,那么在最小化时会缩在桌面的左下角.
有没有办法让它停在任务栏上.

解决方案 »

  1.   

    {操作Tray的模块} unit Tray; interface uses 
    ShellAPI, Windows, Forms, SysUtils, Messages; const 
    WM_TrayMessage = WM_USER+1; 
    TrayID: Integer = 1; 
    IconName: array[False..True] of string= ('TRAY_CLOSED', 'TRAY_OPEN'); 
    Hint: array[False..True] of string= ('StarCraft Battle Batman(Disabled)', 'StarCraft Battle Batman'); var 
    MyTray: TNotifyIconData; //Tray变量 
    IsEnabled: Boolean = True; //初始化Tray 
    procedure InitTray (Handle: HWND); 
    //改变Tray的标题 
    procedure ChangeTray; 
    //删除Tray 
    procedure DelTray; implementation {$R Tray.res} procedure InitTray (Handle: HWND); 
    var 
    S: string; 
    I: Integer; 
    begin 
    MyTray.cbSize := SizeOf(MyTray); 
    MyTray.Wnd := Handle; 
    MyTray.uFlags := NIF_ICON Or NIF_MESSAGE Or NIF_TIP; 
    MyTray.uID := TrayID; 
    MyTray.hIcon := LoadIcon(HInstance, PChar(IconName[IsEnabled])); 
    S:= Hint[IsEnabled]; 
    FillChar (MyTray.szTip, SizeOf(MyTray.szTip), 0); 
    for I:=1 to Length(S) do MyTray.szTip[I-1]:= S[I]; 
    MyTray.uCallbackMessage := WM_TrayMessage; 
    Shell_NotifyIcon (NIM_ADD, @MyTray); 
    end; procedure ChangeTray; 
    var 
    S: string; 
    I: Integer; 
    begin 
    MyTray.hIcon := LoadIcon(HInstance, PChar(IconName[IsEnabled])); 
    S:= Hint[IsEnabled]; 
    FillChar (MyTray.szTip, SizeOf(MyTray.szTip), 0); 
    for I:=1 to Length(S) do MyTray.szTip[I-1]:= S[I]; 
    Shell_NotifyIcon (NIM_MODIFY, @MyTray); 
    end; procedure DelTray; 
    begin 
    MyTray.uFlags := 0; 
    Shell_NotifyIcon (NIM_DELETE, @MyTray); 
    end; end. 启动程序的时候用InitTray(Handle),关闭程序之前用DelTray,改变图表的时候用ChangeTray。最小化的时候把Main Form的visible改称false就行了。
      

  2.   

    到网上找一下记得以前看过这样的文章好象要改一下.pas的源文件