Текущий архив: 2006.04.09;
Скачать: CL | DM;
ВнизОкно программы как панель задач Найти похожие ветки
← →
NightLord © (2006-02-17 15:21) [0]Всем привет. У меня возник такой вот вопрос. Нужно сделать окно проги как панель задач. Т.е. чтобы другие окна при распахивании на весь экран, считали окно проги краем экрана, и равнялись по нему. Типа как панель задач.
← →
Tor © (2006-02-17 17:03) [1]Если другие окна этойже программы, то легко. Ложеш на главную форму CoolBar на него ToolBar. При показе другого окна обрабатываешь размер и положение, и добавляешь кнопку в ToolBar. Вот впринципе и все.
← →
DVM © (2006-02-17 17:17) [2]
> Т.е. чтобы другие окна при распахивании на весь экран, считали
> окно проги краем экрана, и равнялись по нему. Типа как панель
> задач.
Это называется AppBar. Все реализуется одной функцией ShAppBarMessage.
← →
NightLord © (2006-02-17 19:55) [3]
> DVM © (17.02.06 17:17) [2]
Спасибо, это то что нужно.
← →
rolex (2006-03-02 19:39) [4]Хочу сделать боковую панель (типа SideBar).
Сделал так:var
ObenBar : TAppBarData;
ObenBarCreate : Integer;
procedure TForm1.Button1Click(Sender: TObject);
begin
ObenBar.cbSize := SizeOf(TAppBarData);
ObenBar.hWnd := form1.Handle;
ObenBar.uEdge := ABE_TOP;
ObenBar.rc.Left := Form1.Left;
ObenBar.rc.Top := Form1.Top;
ObenBar.rc.Right := Form1.Width;
ObenBar.rc.Bottom := Form1.Height;
ObenBarCreate := SHAppBarMessage(ABM_NEW, ObenBar);
if ObenBarCreate <> 0 then begin
SHAppBarMessage(ABM_QUERYPOS, ObenBar);
SHAppBarMessage(ABM_SETPOS, ObenBar);
Application.ProcessMessages;
MoveWindow(ObenBar.hWnd, ObenBar.rc.Left, ObenBar.rc.Top, ObenBar.rc.Right, ObenBar.rc.Bottom, True);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if ObenBarCreate <> 0 then begin
SHAppBarMessage(ABM_REMOVE, ObenBar);
ObenBarCreate := 0;
end;
end;
Но немного не получается. Попробуйте сами, и увидите косяк.
P.S. в OnShow:form1.Height:=Screen.WorkAreaHeight;
form1.top:=0;
Form1.width:=170;
form1.Left:=Screen.WorkAreaWidth-Form1.Width;
← →
NightLord © (2006-03-03 02:44) [5]Я делел с выравниванием по верхней части, и этот код работает для WinXp точно.
var abd :APPBARDATA;
procedure TfMain.FormCreate(Sender: TObject);
abd.cbSize := sizeof(abd);
abd.hWnd := fMain.Handle;
abd.uCallbackMessage := WM_USER + 100;
SHAppBarMessage(ABM_NEW, abd);
abd.uEdge := ABE_TOP ;
SetRect(abd.rc, 0, 0, GetSystemMetrics(SM_CXSCREEN),
GetSystemMetrics(SM_CYSCREEN));
Height:=GetSystemMetrics(SM_CYSCREEN);
SHAppBarMessage(ABM_QUERYPOS, abd);
abd.rc.Bottom:=abd.rc.top+Height;
SHAppBarMessage(ABM_SETPOS, abd);
Application.ProcessMessages;
SetWindowPos(abd.hWnd,0, abd.rc.left, abd.rc.top,
abd.rc.right-abd.rc.left,fMain.Height
{abd.rc.bottom-abd.rc.top},
SWP_NOZORDER or SWP_NOACTIVATE);
end;
procedure TfMain.FormDestroy(Sender: TObject);
var i:Integer;
begin
SHAppBarMessage(ABM_REMOVE, abd);
end;
← →
Гошик Кувшинов (2006-03-03 12:31) [6]посмотри тут http://rsdn.ru/article/winshell/appbars.xml
Страницы: 1 вся ветка
Текущий архив: 2006.04.09;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.015 c