1.计算任务栏边上的坐标,适合任务栏在屏幕的上、下、左、右边上的4种情况;<br>function TForm1.CaleFormRect: TRect;<br>var<br> hWnd: THandle;<br>begin<br> hWnd := FindWindow('Shell_TrayWnd', nil);<br> hWnd := GetParent(FindWindowEx(hWnd, 0, 'ReBarWindow32', nil));<br> GetWindowRect(hWnd,Result);<br><br> if Result.Top > 0 then begin //下<br> Result.Left := Screen.Width - Width;<br> Dec(Result.Top,Height);<br> end<br> else begin<br> if Result.Left > 0 then begin //右<br> Dec(Result.Left,Width);<br> Result.Top := Screen.Height - Height;<br> end<br> else begin<br> if Result.BottomRight.Y = Screen.Height then begin //左<br> Result.Left := Result.Right;<br> Result.Top := Screen.Height - Height;<br> end<br> else begin //上<br> Result.Left := Screen.Width - Width;<br> Result.Top := Result.Bottom;<br> end;<br> end;<br> end;<br>end;<br><br>2.设置窗体位置为任务栏边上位置;<br>procedure TForm1.Button2Click(Sender: TObject);<br>var<br> s: TRect;<br>begin<br> s := CaleFormRect;<br> SetBounds(s.Left,s.Top,Width,Height);<br>end;<br><br>3.实现动画显示的效果;<br>用 API <br>function AnimateWindow(hWnd: HWND; dwTime: DWORD; dwFlags: DWORD): BOOL; stdcall;<br>其中:<br> hWnd只对Form有效,其他像Picture1都无法产生效果。<br> dwTime是动画持续的时间,默认为200。<br> dwFlags可取以下值:<br> AW_HOR_POSITIVE //从左到右打开窗口<br> AW_HOR_NEGATIVE //从右到左打开窗口<br> AW_VER_POSITIVE //从上到下打开窗口<br> AW_VER_NEGATIVE //从下到上打开窗口<br> AW_CENTER //看不出任何效果<br> AW_HIDE //在窗体卸载时若想使用本函数就得加上此常量 <br> AW_ACTIVATE //在窗体通过本函数打开后,默认情况下会失去焦点,除非加上本常量 <br> AW_SLIDE //看不出任何效果<br> AW_BLEND //淡入淡出效果<br><br>例如淡入淡出效果:<br>AnimateWindow(Handle,500,AW_BLEND); //效果持续时间为 500 毫秒