Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.027 c
2-1143099245
Der Nechk@ssoff
2006-03-23 10:34
2006.04.09
ЗагрузкаDLL


4-1137653676
serguar
2006-01-19 09:54
2006.04.09
CreateNamedPipe


15-1142358354
NailMan
2006-03-14 20:45
2006.04.09
Есть ли такая прога?


1-1140178876
NightLord
2006-02-17 15:21
2006.04.09
Окно программы как панель задач


15-1142401868
Fidel
2006-03-15 08:51
2006.04.09
Продажа программы